我需要将表中字段的大小从VARCHAR(100)增加到VARCHAR(255)。由于不同的原因,这会导致表被删除并重新创建(以及关系,FK等)。但这是可以接受的,我在SQL2008R2(快速)(或2008 Express,同样的结果)中执行此更改,但脚本在SQL2000中不起作用(并且必须),尽管我设置了sql2000脚本compat的即可。
完成上述操作后,我转到表格,设计它,将(100)更改为(255)并单击生成更改脚本。
结果包含以下一些不在SQL 2000下执行的内容:
BEGIN TRANSACTION
GO
ALTER TABLE dbo.mytable
DROP CONSTRAINT FK_mytable_othertable
GO
ALTER TABLE dbo.othertable SET (LOCK_ESCALATION = TABLE)
GO
COMMIT
SET(LOCK_ESCALATION)在SQL 2000下不起作用。
其他SQL2005 / 8>我看到的是:
WITH (HOLDLOCK TABLOCKX)
和
ALTER TABLE dbo.mytable ADD CONSTRAINT
PK_mytable PRIMARY KEY CLUSTERED
(
idmytable
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
所有“WITH”事物都不属于SQL 2000。
为什么SQL Management Studio脚本兼容(in)?那个“选项”到底是做什么的?
编辑:我在Microsoft Connect上提交了一个错误,直到有人证明我错了:)你可以找到它here。
答案 0 :(得分:0)
尝试在数据库的上下文菜单中使用生成脚本...>任务 - >生成脚本...并在那里选择“Script for Server Version”。
答案 1 :(得分:0)
我感觉到你的痛苦。这就是为什么当我们必须为prod部署生成脚本时,最好使用适合版本的GUI生成它们。即:查询分析器2000,SSMS 2005,SSMS 2008.并保持一个等效的临时环境来测试您的脚本。
或者拥有非常灵活的Prod DBA,只需在行之间读取并修复代码即可。 :)