Sql-Server

SSDT Publish 因錯誤而失敗,甚至沒有執行任何語句

  • July 18, 2019

我的發布嘗試因此錯誤而失敗

消息 205,級別 16,狀態 1,第 7572 行 所有使用 UNION、INTERSECT 或 EXCEPT 運算符組合的查詢必須在其目標列表中具有相同數量的表達式。

採用老式建議在部署腳本執行之間列印狀態消息,我將其範圍縮小到:

在此處輸入圖像描述

由於 SQL Server 怪癖,行號不匹配,這就是為什麼你必須PRINT像異教徒一樣的東西(參見上面的連結)

請注意實際上沒有執行任何語句。我還執行了一個詳細的跟踪,確認沒有執行任何操作:

在此處輸入圖像描述

兩個語句之間的控制流語句怎麼PRINT可能導致錯誤?!

原來該GO語句將成功的程式碼與剩餘的程式碼分開,後者確實包含一個錯誤的語句(根據錯誤消息),因此在語法驗證期間拋出了錯誤。

通過獲取GO語句的行號並添加錯誤消息中顯示的行號(實際上是批處理中的偏移量),我發現了一個錯誤的MERGE語句,因為點兩下 SSDT 發布結果中的錯誤消息將我帶到發布腳本中的隨機位置。

所以它是由語句批處理引起的,語法驗證最終在部署腳本上執行(排除在 SQL 項目的建構之外)。

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