【问题标题】:Create table throws an errror "Cannot use TEXTIMAGE_ON when a table has no text, ntext, image, varchar(max), nvarchar(max), non-FILESTREAM columns."创建表抛出错误“当表没有 text、ntext、image、varchar(max)、nvarchar(max)、非 FILESTREAM 列时,不能使用 TEXTIMAGE_ON。”
【发布时间】:2014-09-05 10:53:32
【问题描述】:

我有一张表,其中一个字段使用文件流。如果我右键单击并创建一个创建表,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.

应用程序运行正常,可以访问数据库并可以添加文件并获取它,但我不知道为什么脚本不正确。

谢谢。

【问题讨论】:

    标签: sql-server sql-server-2012 filestream


    【解决方案1】:

    TEXTIMAGE_ON 标志用于指定任何文本或图像列应存储在与表的其余部分不同的文件组中。

    由于 [dbo].[Ficheros] 表中没有 text 或 image 列,因此无法使用此标志并引发错误。尝试从 create table 语句的最后一行删除 TEXTIMAGE_ON 标志,使其如下所示:

    ) ON [PRIMARY] FILESTREAM_ON [FILESTREAM_CMMS_DATA]
    

    【讨论】:

    • 如果这不会导致错误当然会很好,或者至少可以选择让它不会导致错误,尤其是。因为SQL首先用它生成了一个脚本!
    猜你喜欢
    • 2012-09-23
    • 2010-09-08
    • 2011-01-09
    • 2013-06-17
    • 2022-01-19
    • 2013-08-13
    • 2017-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多