共用方式為


將現有的檔案新增至 SQL 專案

適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體

從概念上來說,SQL 專案一旦建立,就可以逐一或批次新增物件。 一次新增一個物件是直截了當的方式,而從 .dacpac 檔案或一或多個 SQL 指令的內容,則可以批次新增物件。 本文說明如何將 dacpac 或 SQL 指令的內容新增至 SQL 專案,以及如何取捨不同來源。

.dacpac 檔案匯入

.dacpac 檔案是已編譯的資料庫模型,需要特定工具才能讀取及套用檔案。 .dacpac檔案可以產生作為 SQL 專案組建成品,或從現有的資料庫產生,而且您可能獲得沒有來源存取權的版本。 除了可將 .dacpac 套用至資料庫的許多工具之外,Visual Studio 中的 SQL Server Data Tools (SSDT) 也可以將 .dacpac 檔案的內容直接匯入專案。 只有當專案尚未定義任何結構描述物件時,才能使用從資料庫或 .dacpac 檔案匯入結構描述的功能。

Visual Studio SSDT 中 SQL 專案匯入功能表的螢幕擷取畫面。

匯入時,系統會針對新物件使用 SSDT 的組織預設,將物件定義編碼成專案檔:新檔案代表最上層物件、階層子系與父系定義於相同的檔案中,並且盡可能以內嵌方式定義資料表/資料行條件約束。 如需提高每個物件的目標可見性和控制能力,請使用 [結構描述比較] 而非 [匯入]。 如果匯入來源包含預先部署和部署後指令碼、RefactorLog 或 SQLCMD 變數定義,它們都將匯入專案。 如果專案已經包含上述任何一種成品,匯入的檔案將加入至專案中的 [匯入時忽略] 資料夾。

如果無法使用 Visual Studio 和 SQL Server Data Tools,您可以:

  • 使用 Azure Data Studio 中的結構描述比較延伸項目比較 .dacpac 檔案的內容與專案,然後將變更選擇性套用至專案。
  • 使用 SqlPackage 命令列公用程式,將 .dacpac 檔案的內容匯入資料庫,然後從資料庫建立專案

從 SQL 指令匯入

T-SQL 指令可以透過兩種方式匯入 SQL 專案:將指令檔新增至專案目錄,或在 Visual Studio 處理指令的內容。 您選擇的方法取決於專案類型,以及匯入處理程序所需的控制層級。 在這兩種情況,指令檔的語法都必須有效。

將檔案新增至專案

透過 SDK 樣式的 SQL 專案,現有的 SQL 指令放在專案目錄即可新增,因為 Microsoft.Build.Sql 會自動包含專案中的任何 *.sql 檔案。 如果您使用非 SDK 樣式的專案,則必須利用 Visual Studio 中的指令處理,將現有的 SQL 指令匯入專案。 專案自動包含的 *.sql 檔案,以 SQL 物件的方式包含在資料庫模型組建。

新增至專案資料夾的檔案,包含專案中已存在之物件的重複物件定義,導致專案組建失敗。 您必須移除重複的物件或重新命名其中一個物件,以手動方式解決衝突。

若要將檔案新增至專案做為部署前/部署後指令碼,除了將檔案新增至專案目錄,您還必須在專案檔包含檔案。 例如,若要將名為 Pre-DeploymentScript.sql 的檔案新增為預先部署指令碼,請將下列內容新增至專案檔:

<ItemGroup>
  <PreDeploy Include="Pre-DeploymentScript.sql" />
</ItemGroup>

如需部署前/部署後指令碼的詳細資訊,請參閱 SQL 專案文件。

處理檔案的內容

Visual Studio 中的 SQL Server Data Tools (SSDT) 也能夠處理 SQL 指令的內容,同時將它們新增至原始樣式的專案。 在這項處理作業期間,如果指令包含專案中已定義的物件,則會配合指令更新物件的定義。 如果指令包含專案中尚未定義的物件,則會為該物件建立新檔案。

目前已知有指令處理可能導致重複條件約束和加密金鑰陳述式的問題。 如果您遇到這些問題,請使用組建輸出視窗識別重複項目的來源,並從專案手動移除它們。

從指令匯入流程未整合部署前/部署後指令碼、SQLCMD 變數或 RefactorLog 檔案。 如果系統在匯入時偵測到上述和任何其他不支援的建構,就會將它們放入專案之 [指令碼] 資料夾中的 ScriptsIgnoredOnImport.sql 檔案。