如何:變更目標平台及發佈資料庫專案

您可以將您的 SQL Server Data Tools (SSDT) 資料庫專案的目標 SQL Server 版本變更為任何支援之 SQL Server (SQL Server 2005、2008、2008 R2、Microsoft SQL Server 2012 或 SQL Azure) 的執行個體。 如此一來,您就可以將資料庫開發工作集中於一個專案,但視需要再將它發行到多個 SQL Server 執行個體。

SSDT 也可藉由留意您的目標平臺並自動偵測程式代碼中的任何錯誤來簡化這項工作(例如,當您針對即將發行至 SQL Azure 的專案使用不支援的功能時)。

變更專案的目標平台

  1. 以滑鼠右鍵按一下 [方案總管] 中的專案,再選取 [屬性]。 選取左側的 [專案 設定] 索引標籤,以存取 [專案 設定] 屬性頁。

  2. 此頁面的 [目標平台] 下拉式清單包含可以將資料庫專案發行到其中的所有支援 SQL Server 平台。 請為這個程序選取 [SQL Azure] 。

若要在編輯指令碼時使用平台驗證

  1. 在 [方案總管] 中的 [Products] 資料表上按一下滑鼠右鍵,再選取 [檢視程式碼],以在 Transact-SQL 編輯器中開啟。

  2. ON [PRIMARY] 附加到 CREATE TABLE 陳述式結尾。

  3. 請注意,SQL Azure 中不支援下列錯誤:[錯誤 清單 ] 窗格中顯示:SQL70015:「檔案群組參考和分割配置」。

    SSDT 會自動根據目標平台來驗證指令碼。 在此情況下,由於 SQL Azure 不支援檔案群組,SSDT 會傳回錯誤。 如需 SQL Azure 中未移植 Transact-SQL 語句的清單,請參閱部分支援的 Transact-SQL 語句 (Microsoft Azure SQL 資料庫)。

  4. 移除 ON 子句。 請注意,該錯誤隨即從 [錯誤清單] 中消失。

若要發行資料庫專案

  1. 如果您有 SQL Azure 執行個體的存取權,可以略過下一個步驟。 否則,以滑鼠右鍵按一下 [方案總管] 中的 [TradeDev] 專案,再選取 [屬性] 存取 [專案設定] 屬性頁。 使用 [目標平台] 下拉式清單選取要將專案發行到其中的 SQL Server 平台。

  2. 以滑鼠右鍵按一下 [方案總管] 中的 [TradeDev] 專案,再選取 [發行]。 SSDT 將開始建置專案。 如果沒有建置錯誤, [發佈資料庫 ] 對話框隨即出現。

  3. 在 [ 發佈資料庫] 對話框中,選取 [編輯 ] 以編輯目標資料庫連接。

  4. 在 [連接屬性] 對話方塊中,輸入 SQL Server 執行個體名稱和您的認證進行驗證。 在 [連接到資料庫] 中輸入 NewTrade。 這會嘗試將資料庫專案發行到新的資料庫。 您也可以選擇要發行到現有的資料庫。 例如,如果選擇現有的 TradeDev 資料庫,則在離線 TradeDev 專案中對物件 (如指令碼) 所做的所有變更將傳播至即時 TradeDev 資料庫。

    如果您有權限可以對要發行的資料庫進行任何變更,請按 [發行] 按鈕。 不過,如果您沒有實際執行資料庫的寫入許可權,您可以選取 [產生腳本 ] 按鈕來產生 Transact-SQL 發行腳本,然後可以交給 DBA。 DBA 就可以執行該指令碼來更新實際執行伺服器,使其結構描述與資料庫專案同步。

  5. [資料工具作業] 視窗會顯示發佈作業的進度,並在發生錯誤時通知您。 在這個新的視窗中,您還可以視需要選擇檢視部署預覽、產生的指令碼或完整的發行結果。

  6. 您還可以將發行設定儲存在設定檔中,讓日後的發行作業可以重複使用相同的設定。 若要這樣做,請選取 [發佈資料庫] 對話框中的 [另存配置檔為] 按鈕。 未來,當您想要重載現有的設定時,您可以選取 [ 載入配置檔 ] 按鈕。

  7. 請留意 [資料工具作業] 視窗中的訊息。 在 [檢視預覽] 鏈接 上選取 [建立發行預覽... 這會開啟部署預覽報告。 如果您的專案目標平臺與發行專案的資料庫伺服器不同,SSDT 將會在此報告中發出警告。 例如,如果您的專案目標平臺是 Microsoft SQL Server 2012,而且您嘗試將專案發佈至 SQL Server 2008 R2 伺服器實例,您會在 [輸出 ] 視窗中看到下列警告:

指定 Microsoft SQL Server 2012 作為目標平台的專案,可能會發生 SQL Server 2008 相容性的問題:若這類專案包含 Microsoft SQL Server 2012 引入的實體 (例如序列物件),發佈作業將會失敗。

如果物件述詞在新建立的全文檢索索引上使用 CONTAINSFREETEXT,且使用了異動指令碼,則部署將會失敗。 如果在部署期間啟用了 [包括異動指令碼] 的選項,則程序和檢視表會定義在交易內部,而全文檢索索引會定義在交易外部 (位於部署指令碼的結尾)。 由於腳本中的這個順序,使用 CONTAINS 或 FREETEXT 的程式或檢視將不會針對全文檢視索索引解析,而導致部署錯誤。