2017-05-11 21 views
0

SSDTプロジェクト(VS2017/VS2015、SSDTバージョン15.1.61702.140を使用)では、プロジェクトをビルドすることができません。コンパイラは、PostDeploymentScriptにSQL文について不平を言っています(はい、私はPostDeployにBuildActionプロパティを設定しています)。 SQLステートメントは、次のとおりSQL72007:構文チェックに失敗しました。 '予期しないファイルの終了が発生しました。'

if ('$(env)' = 'dvp')  
BEGIN 
    PRINT 'creating users for dvp' 
    :r .\SecurityAdditions\usersdvp.sql 
END 
ELSE IF ('$(env)' = 'qat') 
BEGIN 
    PRINT 'creating users for qat' 
    :r .\SecurityAdditions\usersqat.sql 
END 

実際のエラーメッセージは、次のとおり

D:\My\File\Path\PostDeploymentScript.sql (lineNum, col): Error: SQL72007: 
The syntax check failed 'Unexpected end of file occurred.' in the batch near: 

最後の行(端部)にエラーメッセージで参照ラインNUM。これを引き起こす原因は何ですか?

答えて

2

明らかに問題は、私が参照していたファイルにあるGOのステートメントによるものです。 文がif elseブロック内にあることが無効です。 Hereはそれを説明する記事です。参照ファイルからすべてのGOステートメントを削除し、if elseを2つのifに分割することで、この問題を解決できました。

IF ('$(env)' = 'dvp') 
BEGIN 
    :R .\SecurityAdditions\UsersDVP.sql 
END 

IF ('$(env)' = 'qat') 
BEGIN 
    :R .\SecurityAdditions\UsersQAT.sql 
END 
GO 
1

GOステートメントを使用して配置後スクリプトに含まれているスクリプトの1つを終了するのを忘れていたので、この同じエラーが発生しました。問題を解決するには、GOステートメントがないスクリプトの代わりに、次のスクリプトの最初の行をエラーが指すようにします。

関連する問題