SQL Server 物件與版本的 DAC 支援

資料層應用程式 (DAC) 支援最常用的 Database Engine 物件。

本主題內容

  • 支援的 SQL Server 物件

  • SQL Server 版本的資料層應用程式支援

  • 資料部署限制

  • 部署動作的額外考量

支援的 SQL Server 物件

在撰寫或編輯資料層應用程式時,只能在其中指定支援的物件。您無法從包含 DAC 不支援之物件的現有資料庫中擷取、註冊或匯入 DAC。SQL Server 2012 支援下列 DAC 中的物件。

DATABASE ROLE

FUNCTION:內嵌資料表值

FUNCTION:多重陳述式資料表值

FUNCTION:純量

INDEX:叢集

INDEX:非叢集

INDEX:空間

INDEX:唯一

LOGIN

權限

角色成員資格

SCHEMA

統計資料

STORED PROCEDURE:Transact-SQL

同義字

TABLE:檢查條件約束

TABLE:定序

TABLE:資料行,包括計算資料行

TABLE:條件約束,預設值

TABLE:條件約束,外部索引鍵

TABLE:條件約束,索引

TABLE:條件約束,主索引鍵

TABLE:條件約束,唯一

TRIGGER:DML

TYPE:HIERARCHYID、GEOMETRY、GEOGRAPHY

TYPE:使用者定義資料類型

TYPE:使用者定義資料表類型

USER

VIEW

SQL Server 版本的資料層應用程式支援

SQL Server 各版本對 DAC 作業有不同的支援層級。SQL Server 版本支援的所有 DAC 作業,受到該版本的所有版本支援。

Database Engine 執行個體支援下列 DAC 作業:

  • 所有支援的 SQL Server 版本都支援匯出和擷取。

  • Windows Azure SQL 資料庫 以及所有 SQL Server 2012 版本和 SQL Server 2008 R2 都支援所有作業。

  • SQL Server 2008 Service Pack 2 (SP2) 或更新版本以及 SQL Server 2005 SP4 或更新版本都支援所有作業。

DAC Framework 包含用戶端工具,以建立和處理 DAC 封裝和匯出檔案。下列產品包含 DAC Framework

  • SQL Server 2012 包含可支援所有 DAC 作業的 DAC Framework 3.0。

  • SQL Server 2008 R2 SP1 和 Visual Studio 2010 SP1 包含可支援不含匯出和匯入之所有 DAC 作業的 DAC Framework 1.1。

  • SQL Server 2008 R2 和 Visual Studio 2010 包含可支援不含匯出、匯入和就地升級之所有 DAC 作業的 DAC Framework 1.0。

  • 舊版 SQL Server 或 Visual Studio 的用戶端工具不支援 DAC 作業。

舊版 DAC Framework 無法處理使用其中一個 DAC Framework 版本所建立的 DAC 封裝或匯出檔案。例如,您無法使用 SQL Server 2008 R2 用戶端工具部署使用 SQL Server 2012 用戶端工具所擷取的 DAC 封裝。

任何新版 DAC Framework 都可以處理使用其中一個 DAC Framework 版本所建立的 DAC 封裝或匯出檔案。例如,您可以使用 SQL Server 2008 R2 SP1 或 SQL Server 2012 用戶端工具部署使用 SQL Server 2008 R2 用戶端工具所擷取的 DAC 封裝。

資料部署限制

請留意 SQL Server 2012 PCU1 中 DAC Framework 資料部署引擎的下列精確度限制。這些限制適用於以下的 DAC Framework 動作:部署或發行 .dacpac 檔案及匯入 .bacpac 檔案。

  1. sql_variant 資料行內的特定條件和基底類型遺失中繼資料。在受影響的情況下,您會看到具有下列訊息的警告:由 DAC Framework 部署時,不會保留 sql_variant 資料行內所使用之特定資料類型的特定屬性。

    • MONEY、SMALLMONEY、NUMERIC、DECIMAL 基底類型:未保留有效位數。

      • 有效位數為 38 的 DECIMAL/NUMERIC 基底類型:"TotalBytes" sql_variant 中繼資料一律設定為 21。
    • 所有的文字基底類型:資料庫預設定序套用於所有文字。

    • BINARY 基底類型:未保留最大長度屬性。

    • TIME、DATETIMEOFFSET 基底類型:有效位數一律設定為 7。

  2. sql_variant 資料行內遺失資料。在受影響的情況下,您會看到具有下列訊息的警告:當 sql_variant DATETIME2 資料行中小數位數大於 3 的值是由 DAC Framework 所部署時,將會發生資料遺失。在部署期間,DATETIME2 值僅限於小數位數等於 3。

    • 小數位數大於 3 的 DATETIME2 基底類型:小數位數限定為等於 3。
  3. 部署作業因 sql_variant 資料行內有下列狀況而失敗。在受影響的情況下,您會看到具有下列訊息的對話方塊:由於 DAC Framework 中的資料限制,作業失敗。

    • DATETIME2、SMALLDATETIME 和 DATE 基底類型:如果值超出 DATETIME 範圍,例如年份小於 1753。

    • DECIMAL、NUMERIC 基底類型:如果值的有效位數大於 28。

部署動作的額外考量

請留意以下幾點有關 DAC Framework 資料部署動作的考量事項:

  • 擷取/匯出 - 若是使用 DAC Framework 從資料庫建立封裝的動作 (例如:擷取 .dacpac 檔案、匯出 .bacpac 檔案等),則上述限制並不適用。封裝中的資料是來源資料庫內資料的完整精確度表示法。如果封裝中有任何這些狀況發生,擷取/匯出記錄將包含由前述訊息回報之問題的摘要。此用意是警告使用者,其建立的封裝潛在存有資料部署問題。使用者還會在記錄檔中看到下列摘要訊息:這些限制不會影響 DAC Framework 所建立之 DAC 封裝中儲存、資料類型和值的精確度,而只會套用至因為將 DAC 封裝部署至資料庫而產生的資料類型和值。如需有關受影響的資料及如何解決這項限制的詳細資訊,請參閱本主題

  • 部署/發行/匯入 - 若是使用 DAC Framework 將封裝部署至資料庫的動作 (例如:部署或發行 .dacpac 檔案、匯入 .bacpac 檔案等),則適用上述限制。在目標資料庫內產生的資料不一定包含封裝中資料的完整精確度表示法。遇到如前面所述的任何問題時,部署/匯入記錄都會包含該則訊息。作業會遭錯誤封鎖 (請參閱上述第 3 類),但仍將繼續進行而出現其他警告。

    如需有關這類情況下受影響的資料及如何針對部署/發行/匯入動作解決這項限制的詳細資訊,請參閱本主題

  • 因應措施 – 擷取和匯出作業會將完整精確度的 BCP 資料檔寫入 .dacpac 或 .bacpac 檔案中。為避開上述限制,請使用 SQL Server BCP.exe 命令列公用程式從 DAC 封裝將完整精確度的資料部署至目標資料庫。

請參閱

概念

資料層應用程式