아직 존재하지 않는 개체 (예 : 테이블 및 함수) 를 참조하는 저장 프로 시저를 만들 수 있습니다 . 아직 존재하지 않는 개체에는 아직 존재하지 않는 열을 참조하는 저장 프로 시저를 만들 수 없습니다. 이것은 지연된 이름 확인의 양날의 검입니다. SQL Server는 경우에 따라 의심의 이점을 제공하지만 전부는 아닙니다. SET STRICT_CHECKS ON;
이것이 작동하는 장소와 그것이 깨지는 장소에 대한 아이디어를 얻으려면 Erland의 아이디어를 참조하십시오 .
http://www.sommarskog.se/strict_checks.html
(그리고 그가 당신이 추구하는 것과 반대되는 방식을 원한다면 어떻게 존재하는지에 관계없이 컴파일 할 수 있기를 원하며 모든 단일 열이나 테이블을 확인하기를 원합니다.)
다음과 같은 설정이 없습니다 SET DEFERRED_NAME_RESOLUTION OFF;
:
http://connect.microsoft.com/sql/127152
그리고 같은 설정이 없습니다 IGNORE ALL_RESOLUTION;
.
다음과 같은 몇 가지 방법으로이 문제를 해결할 수 있습니다.
(a) 영향을받는 저장 프로 시저에서 동적 SQL을 사용하십시오.
(b) CREATE PROCEDURE
아무것도 포함하지 않는 스텁을 작성한 다음 나머지 스크립트를 실행 한 다음 ALTER PROCEDURE
실제 본문이있는 스크립트를 실행하십시오 (본질적으로 절차를 두 단계로 전개).
(c) 작업 순서에 대해 배포 도구를보다 똑똑하게 만듭니다. 테이블 변경에 함수가 필요한 경우 해당 변경 내용을 마지막에 스크립팅하십시오. RedGate의 SQL Compare와 같은 스키마 비교 도구는 적절한 종속성 순서로 스크립트를 생성하는 데 매우 좋습니다. 어떤 도구를 사용하고 있는지 언급하지 않지만이 작업을 수행하지 않으면 ...
(d) Martin Smith는 여기에 흥미로운 해결 방법이 있지만 나는 그것을 가지고 놀지 않았습니다.