0
테이블 SOME_TABLE
의 설계자는 기본 키를 정의하지 않았으며 기본 키를 정의 할 수있는 열 중 하나를 NULL 가능으로 설정합니다 (나머지는 정상입니다).SQL 서버 ALTER COLUMN NOT NULL이 적용되지 않습니다.
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'에서 널 (NULL) 컬럼에 PRIMARY KEY 제약 조건을 정의 할 수 없습니다.
첫 번째 명령이 완전히 무시되고있는 것 같습니다. 이것을 나타낼 메시지는 없지만.
- 자신의 배치에 넣으려면 아무런 효과가없는
sp_executesql
을 사용하여 첫 번째 명령을 실행 해 보았습니다. - SQL Server Management Studio에서 첫 번째 명령을 실행 한 다음 두 번째 명령을 실행하면 확인이 실행됩니다.
이 변경 사항을 완전히 자동화해야합니다. 스크립트를 통해 어떻게 작동합니까? 두 ALTER TABLE 사이 GO 키워드를 추가
시도가 @Sparky는 (그는이 공식적인 답변을 했어야) – Sparky
어떤 명령 명령 스크립트가 실제로 저장 프로 시저라는 것을 알기 때문에 GO가 유효하지 않습니다. –
미안하지 않았다 –