2014-03-12 2 views
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 제약 조건을 정의 할 수 없습니다.

첫 번째 명령이 완전히 무시되고있는 것 같습니다. 이것을 나타낼 메시지는 없지만.

  1. 자신의 배치에 넣으려면 아무런 효과가없는 sp_executesql을 사용하여 첫 번째 명령을 실행 해 보았습니다.
  2. SQL Server Management Studio에서 첫 번째 명령을 실행 한 다음 두 번째 명령을 실행하면 확인이 실행됩니다.

이 변경 사항을 완전히 자동화해야합니다. 스크립트를 통해 어떻게 작동합니까? 두 ALTER TABLE 사이 GO 키워드를 추가

+2

시도가 @Sparky는 (그는이 공식적인 답변을 했어야) – Sparky

+0

어떤 명령 명령 스크립트가 실제로 저장 프로 시저라는 것을 알기 때문에 GO가 유효하지 않습니다. –

+0

미안하지 않았다 –

답변

0

시도는 두 ALTER TABLE 사이 GO 키워드를 추가