2014-09-05 98 views
6

我有一個表,其中一個字段使用文件流。如果我點擊右鍵,創建一個創建表的T-SQL是:創建表會引發錯誤

USE [CMMS] 
GO 

/****** Object: Table [dbo].[Ficheros] Script Date: 05/09/2014 12:48:48 ******/ 
SET ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 

SET ANSI_PADDING ON 
GO 

CREATE TABLE [dbo].[Ficheros](
    [IDFichero] [uniqueidentifier] ROWGUIDCOL NOT NULL, 
    [IDDocumento] [bigint] NOT NULL, 
    [Fichero] [varbinary](max) FILESTREAM NULL, 
CONSTRAINT [PK_Ficheros] PRIMARY KEY CLUSTERED 
(
    [IDFichero] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] FILESTREAM_ON [FILESTREAM_CMMS_DATA], 
CONSTRAINT [IX_Ficheros] UNIQUE NONCLUSTERED 
(
    [IDDocumento] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] FILESTREAM_ON [FILESTREAM_CMMS_DATA] 

GO 

SET ANSI_PADDING OFF 
GO 

ALTER TABLE [dbo].[Ficheros] ADD CONSTRAINT [DF_Ficheros_IDFichero] DEFAULT (newid()) FOR [IDFichero] 
GO 

ALTER TABLE [dbo].[Ficheros] WITH CHECK ADD CONSTRAINT [FK_Ficheros_Documentos] FOREIGN KEY([IDDocumento]) 
REFERENCES [dbo].[Documentos] ([IDDocumento]) 
ON DELETE CASCADE 
GO 

ALTER TABLE [dbo].[Ficheros] CHECK CONSTRAINT [FK_Ficheros_Documentos] 
GO 

當我刪除該表,並使用腳本我得到這個錯誤:

Mens. 1709, Nivel 16, Estado 1, Línea 2 
No se puede usar TEXTIMAGE_ON cuando una tabla no tiene columnas de tipo text, ntext, image, varchar(max), nvarchar(max), distintas de FILESTREAM varbinary(max), xml o CLR grande. 
Mens. 4902, Nivel 16, Estado 1, Línea 2 
No se encuentra el objeto "dbo.Ficheros" porque no existe o no tiene permisos. 
Mens. 4902, Nivel 16, Estado 1, Línea 2 
No se encuentra el objeto "dbo.Ficheros" porque no existe o no tiene permisos. 
Mens. 4902, Nivel 16, Estado 1, Línea 2 
No se encuentra el objeto "dbo.Ficheros" porque no existe o no tiene permisos. 

應用程序工作正常,進入數據庫並可以添加文件並獲取它,但我不知道腳本爲什麼不正確。

謝謝。

回答

10

TEXTIMAGE_ON標誌用於指定任何文本或圖像列應該存儲在與表中其餘部分不同的文件組中。

由於[dbo]。[Ficheros]表中沒有文本或圖像列,因此無法使用此標誌並引發錯誤。嘗試從CREATE TABLE語句的最後一行取出TEXTIMAGE_ON標誌,以便它的內容是這樣的:

) ON [PRIMARY] FILESTREAM_ON [FILESTREAM_CMMS_DATA] 
+1

知道如果沒有造成錯誤,或者至少有一個選項,它不就好了導致錯誤,尤其是因爲SQL首先生成了一個腳本! – Dave 2017-01-26 15:39:45