programing tip

SQL 스크립트 오류 : 배치 당 하나의 명령문 만 허용됩니다.

itbloger 2020. 7. 21. 08:06
반응형

SQL 스크립트 오류 : 배치 당 하나의 명령문 만 허용됩니다.


PostDeployment의 DACPAC에서 실행하려는 4 개의 SQL 스크립트가 있지만 그중 3 개의 VS 프로젝트를 빌드하려고하면이 오류가 발생합니다.

Only one statement is allowed per batch. A batch separator, such as 'GO', might be required between statements.

스크립트 INSERT는 DB의 다른 테이블에있는 명령문 만 포함합니다 . 그리고 그들 모두는 이렇게 구성되어 있습니다

IF NOT EXISTS (SELECT 1 FROM dbo.Criteria WHERE Name = 'Mileage') INSERT INTO dbo.Criteria(Name) VALUES ('Mileage');

다른 테이블과 다른 데이터에서만.

내 질문은 모든 스크립트가 구문과 작업면에서 동일 할 때 VS가 3 가지에 대해 불평하는 이유는 무엇입니까?

추신 : 오류가 암시하는 것처럼 문장 사이에 'GO'를 추가하면 아무것도하지 않습니다.


문제를 발견했습니다. VS에서 파일을 추가했을 때 Build Action = None파일 속성에서 설정 하는 것을 잊었습니다 . 따라서 변경하면 문제가 해결되고 프로젝트가 컴파일됩니다.


그럼에도 불구하고 이것은 꽤 오래 된 것 같습니다. 나는 또한 몇 시간 동안 붙어 있었고이 방법은 많은 사람들에게 도움이 될 수 있다고 생각합니다.

에서 Database project로 설정된 파일 Build은 데이터베이스 구조로 간주되므로 해당 파일에서 의도적으로 하나의 명령문 만 허용됩니다. Go또는 다른 배치 종결자가 해당 동작을 변경하지 않습니다. 해당 메시지는 실수 일뿐입니다. 자세한 정보는 여기에 있습니다.

이러한 프로젝트에는 파일에 대한 다른 빌드 옵션이 많이 있습니다. 귀하의 경우에는 그런 것 같습니다 PostDeploy. 이러한 파일에는 다음과 같은 다양한 명령이있을 수 있습니다 inserts.

그런 다음 데이터베이스 프로젝트의 출력을 Data-Tier DB 애플리케이션 용 dacpac 파일로 사용할 수 있습니다 (그렇지 않으면 포함되지 않음).


각 명령문의 마지막에서; (세미콜론)을 제거하면 확실하지 않지만 위의 삽입 명령문 사이에 GO가 필요하지 않습니다.

참고 URL : https://stackoverflow.com/questions/18698481/error-in-sql-script-only-one-statement-is-allowed-per-batch

반응형