SQLServer创建脚本的BUG,非常奇怪的问题
dxpjj 2007-03-30 03:10:08 首先创建一个结构表如下(表名:aaaa)
姓名 varchar 50
性名 varchar 50
在企业管理器中生SQL脚本如下:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[aaaa]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[aaaa]
GO
CREATE TABLE [dbo].[aaaa] (
[姓名] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[性名] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
后来我增加了一个字段,如学历(text 16),保存后再次生成脚本如下:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[aaaa]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[aaaa]
GO
CREATE TABLE [dbo].[aaaa] (
[姓名] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[性名] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[学历] [text] COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
注意该脚本中多了TEXTIMAGE_ON [PRIMARY]
现在如果将学历字段删除了,也就是将text类型的字段删除了,再生成脚本如下:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[aaaa]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[aaaa]
GO
CREATE TABLE [dbo].[aaaa] (
[姓名] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[性名] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
此时实际表结构中已经不含有text或image类型的字段了,而脚本中却含有ON [PRIMARY] TEXTIMAGE_ON [PRIMARY],如果此时执行此脚本会报错,
服务器: 消息 1709,级别 16,状态 1,行 1
当表中没有 text、ntext 或 image 列时,无法使用 TEXTIMAGE_ON。
而实际上我的表中已没有text、ntext 或 image类型的字段了。
望高手门指点迷津!!!