source

SQL 스크립트에 오류가 있습니다.배치당 하나의 문만 허용됩니다.

ittop 2023. 4. 7. 21:56
반응형

SQL 스크립트에 오류가 있습니다.배치당 하나의 문만 허용됩니다.

PostDeployment의 DACPAC에서 실행할 SQL 스크립트가 4개 있는데 그 중 3개의 VS 프로젝트를 구축하려고 하면 다음 오류가 나타납니다.

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

스크립트에는INSERTDB의 서로 다른 테이블에 있는 문.그리고 그것들은 모두 이렇게 구성되어 있다.

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

서로 다른 테이블과 다른 데이터로만 사용할 수 있습니다.

궁금한 점은 모든 스크립트가 구문과 조작 면에서 동일한데 VS는 왜 이들 중 3개에 대해 불평하는가 하는 것입니다.

PS: 에러가 나타내는 바와 같이, 스테이트먼트 사이에 「GO」를 추가하는 것은 아무것도 행해지지 않습니다.

문제가 발견되었습니다.VS에서 파일을 추가할 때 설정하는 것을 잊었습니다.Build Action = None파일 속성에서 선택합니다.이를 수정하면 문제가 해결되고 프로젝트가 컴파일됩니다.

비록 이것이 꽤 오래된 것처럼 보이지만, 나는 또한 몇 시간 동안 그것을 고수했고 나는 이 방법이 많은 사람들에게 도움이 될 수 있다고 생각한다.

Database project, 파일은 다음과 같이 설정됩니다.Build데이터베이스 구조로 간주되므로 이러한 파일에는 설계상 하나의 문만 허용됩니다. Go다른 배치 터미네이터가 이 동작을 변경하지 않습니다.그 메시지는 단순한 오류입니다.자세한 것은 이쪽.

이러한 프로젝트의 파일에는 다른 빌드 옵션이 많이 있습니다.당신의 경우인 것 같습니다PostDeploy. 이러한 파일에서는 다음과 같은 다양한 명령어를 사용할 수 있습니다.inserts기타.

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

SQL Server Data Tools를 사용할 때 이 오류가 발생했습니다.프로젝트에 잘못 추가된 도입 후 스크립트가 있기 때문입니다.

프로젝트 파일에서 데이터베이스 개체는 다음과 같은 요소를 가져야 합니다.

<Build Include="dbo\tables\mytable.sql"/>

하지만 스크립트는

<None Include="myscript.sql"/>

스크립트 파일을 추가했는데, 결과적으로Build대신 태그를 붙이다None.로 변경None오류를 수정했습니다.

각 문장의 마지막에서;(semi-colon)을 삭제합니다.상기의 삽입문 사이에 GO가 필요하지는 않습니다.

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

반응형