[產生和發佈指令碼]

您可以使用 [產生和發佈指令碼精靈] 建立指令碼,以在不同的 SQL Server 資料庫引擎或 Azure SQL Database 執行個體之間傳送資料庫。 您可以針對區域網路上資料庫引擎執行個體的資料庫產生指令碼,或是從 SQL Database 產生指令碼。 產生的指令碼可以在另一個資料庫引擎或 SQL Database 執行個體上執行。 您也可以使用此精靈,將資料庫內容直接發行到使用資料庫發行服務所建立的 Web 服務。 您可以針對整個資料庫建立指令碼,或將它限制為特定物件。

  1. 開始之前:發佈至託管服務的權限

  2. 若要產生或發佈腳本,請使用: 產生和發佈腳本精靈

開始之前

來源和目標資料庫可以位於 SQL 資料庫 上,或是執行 SQL Server 2005 或更新版本的 資料庫引擎 實例。

發行至主控的服務

除了建立指令碼以外, [產生和發佈指令碼精靈] 還可以用來將資料庫發佈至特定類型的主控 SQL Server Web 服務。 SQL Server Hosting Toolkit 會提供資料庫發行服務當做 CodePlex 上的共用原始檔專案。 Web 主控提供者可以使用資料庫發行服務專案來建置一組 Web 服務,讓他們的客戶輕鬆地將資料庫部署到 Web 服務。 如需有關下載 SQL Server Hosting Toolkit 的詳細資訊,請參閱 SQL Server 資料庫發行服務

若要將資料庫發佈至 Web 主控服務,請選取精靈之 [設定指令碼編寫選項] 頁面上的 [發佈到 Web 服務] 選項。

權限

發行資料庫的最低權限是來源資料庫上 db_ddladmin 固定資料庫角色中的成員資格。 將資料庫指令碼發行至位於主控提供者之 SQL Server 執行個體的最低權限是目標資料庫上 db_ddladmin 固定資料庫角色中的成員資格。

此外,使用者也必須提供使用者名稱和密碼來存取主控提供者帳戶,以便使用此精靈發行。 您必須先在主控提供者處建立目標資料庫,然後再發行來源資料庫。 發行會覆寫現有資料庫中的物件。

使用產生和發佈指令碼精靈

產生和發佈指令碼

  1. [物件總管] 中,展開含有要編寫指令碼之資料庫的執行個體的節點。

  2. 指向 [ 工作],然後按兩下 [ 產生腳本]。

  3. 完成精靈對話方塊:

簡介頁面

此頁面描述用於產生或發佈指令碼的步驟。

[不要再顯示此頁面] - 下次啟動 [產生和發佈指令碼精靈] 時會略過此頁面。

下一步 > - 繼續進行至 [選擇方法] 頁面。

取消 - 結束精靈,而不需從資料庫產生或發佈腳本。

選擇物件頁面

您可以使用這個頁面來選擇哪些物件要包含在此精靈所產生的指令碼中。 在下列精靈頁面中,您可以選擇將這些腳本儲存到您選擇的位置,或使用它們將資料庫物件發佈至已安裝 SQL Server 資料庫發佈服務的遠端 Web 主控提供者。

文稿整個資料庫選項 - 按下即可產生資料庫中所有物件的腳稿,並包含資料庫本身的腳本。

選取特定資料庫物件 - 按下以限制精靈,只針對您選擇的資料庫中的特定物件產生文稿:

  • 資料庫物件 :至少選取一個要包含在指令碼中的物件。

  • 全選 :選取所有可用的核取方塊。

  • 取消全選 :清除所有的核取方塊。 然後,您必須選取至少一個資料庫物件才能繼續。

設定指令碼編寫選項頁面

您可以使用這個頁面來指定要讓精靈將指令碼儲存至所選擇的位置,還是使用這些指令碼,將資料庫物件發行至遠端 Web 主控提供者。 若要發佈,您必須能夠存取使用資料庫發佈服務 Web 服務所安裝的 Web 服務。

選項 :如果您想要讓精靈將指令碼儲存至所選擇的位置,請選取 [將指令碼儲存至特定位置] 。 您之後可以針對資料庫引擎執行個體或 SQL Database 執行指令碼。 如果您想要讓精靈將資料庫物件發行至遠端 Web 主控提供者,請選取 [發佈到 Web 服務]

將文稿儲存至特定位置 - 儲存一或多個 。Transact-SQL 腳本檔案到您指定的位置。

  • 進階 - 顯示 [階腳本選項] 對話框,您可以在其中選取用於產生腳本的進階選項。

  • 儲存至檔案 - 將腳本儲存至一或多個.sql檔案。 按下瀏覽按鈕 (...) 以指定檔案的名稱和位置。 如果已經存在相同名稱的檔案,請選取 [覆寫現有檔案] 核取方塊來取代該檔案。 按兩下 [每個物件單一檔案] 或 [單一檔案],以指定應該如何產生腳本。 按兩下 [Unicode 文字 ] 或 [ANSI 文字 ] 以指定文稿中應該使用的文字種類。

  • 儲存至剪貼簿 :將 Transact-SQL 指令碼儲存至 [剪貼簿]。

  • 儲存至新的查詢視窗 - 將文稿產生至 資料庫引擎 查詢編輯器 視窗。 如果未開啟編輯器視窗,就會開啟新的編輯器視窗做為指令碼的目標。

發佈至 Web 服務 - 將您選取的物件發佈至您已設定提供者的遠端 Web 主控服務。

  • 管理提供者 - 顯示 [ 管理提供者 ] 對話框。 使用 [ 管理提供者 ] 對話框來新增、編輯和刪除主控提供者。 每個提供者都會指定 Web 主控服務和該服務上目標資料庫的連線資訊。

  • 進階 :顯示可從中選取用於發佈指令碼之進階選項的 [進階發佈選項] 對話方塊。

  • 提供者 :選取提供者來指定 Web 主控服務的連接資訊,此服務會主控您想要在其中發佈所選取物件的資料庫。 [管理提供者] 對話方塊中至少必須有一個提供者,您才能選取提供者。

  • 目標資料庫 :選取您想要在其中發佈所選取物件的目標資料庫。 您必須先選取提供者,然後再選取目標資料庫。

進階編寫指令碼選項頁面

您可以使用這個頁面來指定要如何讓此精靈產生指令碼。 這個頁面提供了許多不同的選項。 如果 [資料庫引擎類型] 中指定的 SQL Server 或 SQL Database 版本不支援選項,選項會呈現灰色。

選項 - 在每個選項右方的可用設定清單中選取值,即可指定進階選項。

一般:下列選項適用於整個指令碼。

  • ANSI 填補:在指令碼中包含 ANSI PADDING ON。 預設值為 True

  • 附加至檔案 :設定為 [True] 時,這個指令碼會加入至 [設定指令碼編寫選項] 頁面上所指定的現有指令碼底部。 設定為 [False] 時,新的指令碼就會覆寫先前的指令碼。 預設值為 False

  • 發生錯誤 時繼續編寫文本 - 若 為 True,腳本會在發生錯誤時停止。 當為 False,腳本會繼續進行。 預設值為 False

  • 將 UDDT 轉換為基底類型 :設定為 [True] 時,使用者定義資料類型 (UDDT) 會轉換為用來建立它們的基礎基底資料類型。 當 UDDT 不存在於文稿執行所在的資料庫中時,請使用 True 。 設定為 [False] 時,就會使用 UDDT。 預設值為 False

  • 產生相依物件的指令碼 :針對在執行所選取物件的指令碼時必須存在的物件產生指令碼。 預設值為 True

  • 包含描述性標頭 :設定為 [True] 時,會將描述性註解加入至指令碼,並將指令碼分隔為代表每個物件的區段。 預設值為 False

  • 包含 if NOT EXISTS :設定為 [True] 時,此指令碼會包含檢查物件是否存在於資料庫的陳述式,而且如果該物件已經存在,就不會嘗試建立新物件。 預設值為 False

  • 包含系統條件約束名稱 - 當為 False,源資料庫上自動命名的條件約束預設值會自動在目標資料庫上重新命名。 設定為 [True] 時,來源和目標資料庫的條件約束會具有相同的名稱。

  • 包括不支援的陳述式 :設定為 [False] 時,此指令碼不會包含所選取伺服器版本或引擎類型上不支援之物件的陳述式。 當設為 [True] 時,此指令碼包含不支援的物件。 不支援之物件的每個語句都會有批注,該批註必須編輯語句,才能針對選取的 SQL Server 版本或引擎類型執行腳本。 預設值為 False

  • 結構描述會限定物件名稱 - 在所建立物件的名稱中包含結構描述名稱。 預設值為 True

  • 指令碼繫結 :產生用於繫結預設物件和規則物件的指令碼。 預設值為 False。 如需詳細資訊,請參閱 CREATE DEFAULT (Transact-SQL)CREATE RULE (Transact-SQL)

  • [指令碼定序] - 在指令碼中包含定序資訊。 預設值為 False。 如需詳細資訊,請參閱 Collation and Unicode Support

  • 編寫預設值的指令碼 :包含用來在資料表資料行中設定預設值的預設物件。 預設值為 True。 如需詳細資訊,請參閱 CREATE DEFAULT (TRANSACT-SQL)

  • 編寫 DROP 和 CREATE 的指令碼 - 設定為 [編寫 CREATE 指令碼] 時,會包含建立物件的 Transact-SQL 陳述式。 設定為 [編寫 DROP 指令碼] 時,就會包含卸除物件的 Transact-SQL 陳述式。 設定為 [編寫 DROP 和 CREATE 的指令碼] 時,就會針對每個編寫指令碼的物件,在指令碼中包含 Transact-SQL DROP 陳述式,後面接著 CREATE 陳述式。 預設值為 編寫 CREATE 指令碼

  • 編寫擴充屬性的指令碼 - 物件具有擴充屬性時,在指令碼中包含擴充屬性。 預設值為 True

  • 引擎類型的指令碼 - 建立可以在所選取類型的 SQL Database 或 SQL Server Database Engine 執行個體上執行的指令碼。 指定的類型上所不支援的物件不會包含在指令碼中。 預設值為來源伺服器的類型。

  • 針對伺服器版本編寫指令碼 - 建立可以在所選取 SQL Server 版本上執行的指令碼。 無法針對較舊的版本編寫某個版本新增功能的指令碼。 預設值為來源伺服器的版本。

  • 編寫登入的指令碼 :要為其編寫指令碼的物件是資料庫使用者時,這個選項會建立使用者相依的登入。 預設值為 False

  • 編寫物件層級權限的指令碼 :包含於資料庫的物件上設定權限的指令碼。 預設值為 False

  • 編寫統計資料的指令碼 :設定為 [編寫統計資料的指令碼] 時,此選項會包含 CREATE STATISTICS 陳述式以重新建立物件的統計資料。 [編寫統計資料和長條圖的指令碼] 選項也會建立長條圖資訊。 預設值為 [不要編寫統計資料的指令碼] 。 如需詳細資訊,請參閱 CREATE STATISTICS (TRANSACT-SQL)

  • [編寫 USE DATABASE 的指令碼] - 在指令碼中加入 USE DATABASE 陳述式。 若要確定在正確的資料庫中建立資料庫物件,請包含 USE DATABASE 陳述式。 當腳本預期在不同的資料庫中使用時,請選取 [False ] 以省略 USE DATABASE 語句。 預設值為 True。 如需詳細資訊,請參閱 USE (TRANSACT-SQL)

  • 要撰寫指令碼的資料類型 - 選取應撰寫為指令碼的內容:[僅限資料] ,[僅限結構描述] ,或兩者。 預設值為 [僅限結構描述]

資料表/檢視表選項 :下列選項只適用於資料表或檢視表的指令碼。

  • 編寫變更追蹤的指令碼 :如果來源資料庫或來源資料庫中的資料表已啟用變更追蹤,則會編寫變更追蹤的指令碼。 預設值為 False。 如需詳細資訊,請參閱關於變更追蹤 (SQL Server)

  • 編寫 CHECK 條件約束的指令碼:在指令碼中加入 CHECK 條件約束。 預設值為 TrueCHECK 條件約束會要求輸入資料表的資料必須符合某些指定的條件。 如需詳細資訊,請參閱 Unique Constraints and Check Constraints

  • [編寫資料壓縮選項的指令碼] - 如果來源資料庫或來源資料庫中的資料表已設定資料壓縮選項,則會編寫資料壓縮選項的指令碼。 如需詳細資訊,請參閱 Data Compression。 預設值為 False

  • 編寫外部索引鍵的指令碼 :將外部索引鍵加入至指令碼。 預設值為 True。 外部索引鍵指出並強制執行資料表之間的關聯性。

  • 編寫全文檢索索引的指令碼 - 編寫建立全文檢索索引的指令碼。 預設值為 False

  • 編寫索引的指令碼 :編寫建立索引的指令碼。 預設值為 True。 索引可協助您快速尋找資料。

  • 編寫主索引鍵的指令碼 :編寫在資料表上建立主索引鍵的指令碼。 預設值為 True。 主索引鍵可唯一識別資料表的每個資料列。

  • 編寫觸發程序的指令碼 - 編寫在資料表上建立 DML 觸發程序的指令碼。 預設值為 False。 DML 觸發程序是以程式設計當資料庫伺服器發生資料操作語言 (DML) 事件時所執行的動作。 如需詳細資訊,請參閱 DML Triggers

  • 編寫唯一索引鍵的指令碼 :編寫在資料表上建立唯一索引鍵的指令碼。 唯一索引鍵可防止輸入重複的資料。 預設值為 True。 如需詳細資訊,請參閱 Unique Constraints and Check Constraints

管理提供者頁面

使用此對話框來檢視、新增、編輯、刪除或測試裝載提供者連線。 裝載提供者會指定在 CodePlex 上的 SQL Server Hosting Toolkit 中使用資料庫發行服務專案所建立之 Web 服務的連線資訊。

已設定的提供者 - 列出已儲存之每個主控提供者的名稱和 Web 服務位址。

新增 - 開啟 [新提供者的提供者 設定] 對話框,以新增裝載提供者。

編輯 - 開啟對應的 [提供者組態 ] 對話框,以編輯現有的主控提供者。

刪除 - 刪除 選取的裝載提供者。

測試 - 使用所選提供者的資訊,測試與主控服務的連線。

確定 - 儲存您在 [ 主控提供者 ] 對話框中所做的所有變更。

取消 - 復原您在 [ 主控提供者 ] 對話框中所做的所有變更。

進階發佈選項頁面

使用此頁面來指定您希望此精靈發佈資料庫的方式。 這個頁面提供了許多不同的選項。 如果 [資料庫引擎類型] 中指定的 SQL Server 或 SQL Database 版本不支援選項,選項會呈現灰色。

選項 - 在每個選項右方的可用設定清單中選取值,即可指定進階選項。

一般 - 下列選項適用於整個發行集。

  1. 將 UDDT 轉換為基底類型 :設定為 [True] 時,使用者定義資料類型 (UDDT) 會轉換為用來建立它們的基礎基底資料類型。 當 UDDT 不存在於將執行文稿的資料庫中時,請使用 True 。 設定為 [False] 時,就會使用 UDDT。 預設值為 False

  2. 發佈定序 - 包含資料表數據行的定序資訊。 預設值為 False。 如需詳細資訊,請參閱 Collation and Unicode Support

  3. 發佈預設值 - 包含用來在數據表數據列中設定預設值的預設物件。 預設值為 True。 如需詳細資訊,請參閱 CREATE DEFAULT (TRANSACT-SQL)

  4. 發佈相依物件 - 執行所選取物件的腳本時,發佈任何必要物件。 預設值為 True

  5. 發佈擴充屬性 - 如果物件具有擴充屬性,則會在傳送至提供者以進行發行的腳本中包含擴充屬性。 預設值為 True

  6. 發佈伺服器版本 - 建立文本,以可在選取的 SQL Server 版本上執行的方式,傳送給遠端提供者進行發佈。 無法針對較舊的版本編寫某個版本新增功能的指令碼。 預設值為來源伺服器的版本。

  7. 發佈物件層級許可權 - 包含資料庫中所選物件的許可權。 預設值為 False

  8. 發佈統計數據 - 當設定為 [發佈統計數據] 時,包含 CREATE STATISTICS 語句以重新建立 對象的統計數據。 [ 發佈統計數據和直方圖] 選項也會建立直方圖 資訊。 預設值為 [不要發佈統計數據]。 如需詳細資訊,請參閱 CREATE STATISTICS (TRANSACT-SQL)

  9. 發佈 vardecimal 選項 - 在源資料庫資料表上啟用資料表時,啟用 vardecimal 目標資料庫數據表上的數據表格式。 預設值為 True

  10. 結構描述會限定物件名稱 - 在所建立物件的名稱中包含結構描述名稱。 預設值為 True

  11. 腳本系結 - 在傳送至提供者以進行發行的腳本中包含預設和規則對象的系結。 預設值為 True。 如需詳細資訊,請參閱 CREATE DEFAULT (Transact-SQL)CREATE RULE (Transact-SQL)

  12. 要發佈的數據類型 - 選取應該編寫腳本的內容:僅限數據、僅限架構或兩者。 預設值為 Schema and Data

發佈選項 - 指定是否要在發佈至 Web 主機提供者時使用交易。

  1. 使用交易 發佈 - 在發佈至遠端 Web 主機提供者時使用交易。 如果目標資料庫無法完成發佈,則會回復交易。 預設值為 True

數據表/檢視選項 - 下列選項僅適用於數據表或檢視表。

  1. 發佈檢查條件約束 - 包含發行程式中的條件約束的 CHECK 建立。 預設值為 TrueCHECK 條件約束會要求輸入資料表的資料必須符合某些指定的條件。 如需詳細資訊,請參閱 Unique Constraints and Check Constraints

  2. 發佈外鍵 - 包括在發佈程式中建立外鍵。 預設值為 True。 外部索引鍵指出並強制執行資料表之間的關聯性。 如需詳細資訊,請參閱主要與外部索引鍵條件約束

  3. 發佈全文檢索索引 - 編寫建立全文檢索索引的腳本。 預設值為 False

  4. 發佈索引 - 在發佈程式中包含數據表上的索引。 預設值為 True。 索引可協助您快速尋找資料。

  5. 發佈主鍵 - 包括在發佈程式中建立主鍵。 預設值為 True。 主索引鍵可唯一識別資料表的每個資料列。 如需詳細資訊,請參閱主要與外部索引鍵條件約束

  6. 發佈觸發程式 - 包含在發佈程式中建立 DML 觸發程式。 預設值為 True。 DML 觸發程序是以程式設計當資料庫伺服器發生資料操作語言 (DML) 事件時所執行的動作。 如需詳細資訊,請參閱 DML Triggers

  7. 發佈唯一索引鍵 - 包含在發行程式中在數據表上建立唯一索引鍵。 唯一索引鍵可防止輸入重複的資料。 預設值為 True。 如需詳細資訊,請參閱 Unique Constraints and Check Constraints

  8. 發佈變更追蹤 - 如果在源資料庫或源資料庫中的數據表上啟用變更追蹤,請在發佈程式中包含變更追蹤。 預設值為 False。 如需詳細資訊,請參閱關於變更追蹤 (SQL Server)

  9. 發佈資料壓縮選項 - 如果在源資料庫或源資料庫中的數據表上設定數據壓縮選項,則會在發佈程式中包含數據壓縮選項。 預設值為 True。 如需詳細資訊,請參閱 Data Compression

提供者組態頁面

使用此對話框來檢視或修改裝載提供者設定。 您可以使用此對話框來執行下列動作:

  • 檢視、新增或編輯主控提供者的連接資訊。

  • 檢視、新增、編輯或刪除提供者連接的資料庫。

  • 自動設定主控提供者的資料庫。

裝載提供者會指定在 CodePlex 上的 SQL Server Hosting Toolkit 中使用資料庫發行服務專案所建立之 Web 服務的連線資訊。

名稱 - 裝載提供者的名稱。

Web 服務位址 - 裝載服務的 HTTPS 位址。

Web 服務驗證 - 登入主控服務所需的使用者名稱和密碼。

儲存密碼 - 加密並儲存本機電腦上的密碼。

可用的資料庫 - 針對裝載提供者設定的資料庫 會以下列格式以遞增順序列出: server_namedatabase_name

新增 - 開啟 [ 資料庫組態] 對話框,然後新增資料庫。

編輯 - 開啟 所選取資料庫的 [資料庫 組態] 對話框。

刪除 - 刪除 選取的資料庫。

設定為預設值 - 選取資料庫做為預設值。

確定 - 儲存您在此對話框中所做的所有變更,並返回精靈。

取消 - 復原您在此對話框中所做的所有變更,並返回精靈。

摘要頁面

這個頁面會摘要列出您在此精靈中所選取的選項。 若要變更選項,請按 [上一步]。 若要開始產生要儲存或發佈的腳本,請按 [下一步]。

檢閱您的選取項目 :針對精靈的每一個頁面,顯示您所選取的項目。 請展開節點以查看對應頁面的選取選項。

儲存或發佈指令碼頁面

您可以使用這個頁面來監視此精靈執行的進度。

詳細資料 :若要查看此精靈的進度,請檢視 [動作] 欄。 產生指令碼之後,此精靈會根據您的選項,將指令碼儲存至檔案,或使用它們來發行至 Web 服務。 當每個步驟都完成時,請按兩下 [結果] 資料行中的值,以查看對應步驟的結果。

儲存報表 - 按兩下即可將精靈進度的結果儲存至檔案。

取消 - 按下即可在處理完成之前關閉精靈,或發生錯誤時。

完成 :在處理完成之後或是發生錯誤時,按一下即可關閉精靈。

另請參閱

安裝 SMO
複製資料庫至其他伺服器