2014-09-05 12 views
6

Ich habe eine Tabelle, die ein Feld Filestream verwenden. Wenn ich Recht eine Tabelle erstellen die T-SQL klicken und erstellen ist:Create Tabelle löst einen Fehler

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 

Wenn ich die Tabelle löschen und das Skript verwenden, erhalte ich diese Fehlermeldung:

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. 

Die Anwendung funktioniert gut, Zugang zu die Datenbank und kann Dateien hinzufügen und bekommen, aber ich weiß nicht, warum das Skript falsch ist.

Danke.

Antwort

10

Das TEXTIMAGE_ON-Flag wird verwendet, um anzugeben, dass alle Text- oder Bildspalten in einer anderen Dateigruppe als der Rest der Tabelle gespeichert werden sollen.

Da in der Tabelle [dbo]. [Ficheros] keine Text- oder Bildspalten vorhanden sind, kann dieses Flag nicht verwendet werden und löst den Fehler aus. Versuchen Sie, die TEXTIMAGE_ON Flagge von der letzten Zeile der Tabelle Anweisung erstellen zu entfernen, so dass es wie folgt lautet:

) ON [PRIMARY] FILESTREAM_ON [FILESTREAM_CMMS_DATA] 
+1

Sicher wäre schön, wenn das nicht einen Fehler nicht verursacht oder zumindest eine Option, um sie hat nicht einen Fehler verursachen, insb. seit SQL in erster Linie ein Skript damit erzeugt hat! – Dave

Verwandte Themen