table的设计者SOME_TABLE
没有定义主键,更糟糕的是,他们将可以定义主键的列之一设置为NULLable(其他都可以)。
的数据SOME_TABLE.PrinterPos
不包含任何NULL
值。
我正在编写一个升级脚本以应用于约 50 个数据库。
以下代码失败:
ALTER TABLE dbo.SOME_TABLE
ALTER COLUMN PrinterPos smallint NOT NULL;
ALTER TABLE dbo.SOME_TABLE
ADD CONSTRAINT PK_SOME_TABLE
PRIMARY KEY CLUSTERED (SOME_TABLE_ID ASC, Store_ID ASC, PrinterPos ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF,
IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
我收到消息
无法对表“SOME_TABLE”中的可为空列定义 PRIMARY KEY 约束。
看起来第一个命令被完全忽略了。虽然没有消息表明这一点。
- 为了把它放在它自己的批次中,我尝试执行第一个命令使用
sp_executesql
无效。 - 如果我在 SQL Server Management Studio 中执行第一个命令,然后执行第二个命令,则它执行正常。
我需要让这个改变完全自动化。我怎样才能让它通过脚本工作?