Sql-Server

為什麼 :r SQLCMD 命令在部署後腳本中標記為錯誤?

  • October 17, 2019

我曾多次使用後期部署腳本,並且總是直覺地使用建構操作“PostDeploy”,因為它就是這樣。現在我第一次嘗試按照腳本模板中的內置指令來使用":r somescript.sql"語法。

這條線立即被標記為錯誤:

“’:’ 旁邊的 SQL80001 語法錯誤”

我找到了將 PDS 設置為“無”建構操作的建議。這沒有幫助,錯誤仍然存在。我在這裡想念什麼?

假設錯誤發生在建構過程中,並且您沒有任何實際的語法錯誤,這是一個簡單的

:r path\to\file.sql

那麼當導入的文件不存在時也會發生錯誤。請檢查文件的位置。如果您沒有提供絕對路徑,那麼該路徑將相對於解決方案文件夾(至少對我來說是這樣)。

如果在開發過程中,您想查看建構過程報告的錯誤,請確保在 Visual Studio 的 T-SQL 編輯器中啟用“SQLCMD 模式”。按鈕欄的最右側有一個帶有“!”的按鈕 在其中應該啟用此功能。或者您可以進入SQL菜單,選擇Transact-SQL Editor ->,選擇Execution Settings ->,最後選擇SQLCMD Mode。現在,當您執行腳本時,它將正確解釋:r,就像建構/發布過程一樣。

此外,您的 Post Deploy Script (PDS) 需要將其Build Action設置為PostDeploy。如果它設置為None,那麼 SSDT 建構過程將完全跳過它。

引用自:https://dba.stackexchange.com/questions/114332