The designers of table SOME_TABLE
did not define a primary key, and worse, they set one of the columns that could define the primary key as NULLable (the others are OK).
The data for SOME_TABLE.PrinterPos
does not contain any NULL
values.
I am writing an upgrade script to apply to ~50 databases.
The following code is failing:
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' の null 許容列に PRIMARY KEY 制約を定義できません。
最初のコマンドが完全に無視されているようです。これを示すメッセージはありませんが。
- それを独自のバッチに入れるために、最初のコマンドを使用
sp_executesql
して実行しようとしましたが、効果はありませんでした。 - SQL Server Management Studio で最初のコマンドを実行し、続いて 2 番目のコマンドを実行すると、正常に実行されます。
この変更を完全に自動化する必要があります。スクリプトを介してこれを機能させるにはどうすればよいですか?