了解資料層應用程式

資料層應用程式 (DAC) 是一個實體,其中包含應用程式所使用的所有資料庫和執行個體物件。DAC 會提供單一單位來撰寫、部署及管理資料層物件,而不必個別進行管理。DAC 可讓資料層開發與關聯應用程式程式碼的開發更緊密地整合在一起。它也會提供系統管理員有關其系統中資源使用狀況的應用程式層級檢視。

使用資料層應用程式

請使用下列程序來處理 DAC:

  • 首先,建立 DAC 類型或是指定關聯應用程式所使用之物件的 DAC 定義。然後 DAC 定義會建立到 DAC 封裝中,此封裝是用來部署及升級 DAC 的檔案。有兩種方法可以建立 DAC 定義和封裝:

    • 在 Microsoft Visual Studio 2010 中開啟資料層應用程式專案,並指定構成 DAC 的物件。當您建立 DAC 專案時,Visual Studio 會編譯 DAC 定義,並將它放在 DAC 封裝內。

    • 使用擷取資料層應用程式精靈,從現有的資料庫中擷取 DAC 定義並建立 DAC 封裝。

    如需詳細資訊,請參閱<實作資料層應用程式>。

  • DAC 封裝會使用部署資料層應用程式精靈部署到 Database Engine 的執行個體。DAC 封裝的部署通常會與應用程式可執行檔的部署協調一致。部署會建立 DAC 的執行個體,此執行個體有兩個主要部分:

    • DAC 定義會儲存在 msdb 系統資料庫中 (在 SQL Azure 中為 master 資料庫)。

    • 建立使用者資料庫,並填入 DAC 定義中指定的物件。

    如果 Database Engine 的執行個體是 SQL Server 公用程式中的 Managed 執行個體,DAC 會當做部署的 DAC 上傳到公用程式控制點。

    如需詳細資訊,請參閱<部署資料層應用程式>。

  • 應用程式連接到與 DAC 相關聯的資料庫。系統管理員可以使用建立的程序,監視並管理與 DAC 相關聯的資料庫。但是,系統管理員可以從 DAC 本身取得其他資訊:

    • SQL Server Management Studio (SSMS) [公用程式總管][部署的資料層應用程式] 節點會呈現以應用程式為主的資源使用報表,好讓系統管理員更快速地存取其資料層應用程式執行個體的健全狀況。

    • Management Studio [物件總管][資料層應用程式] 節點會報告每一個 DAC 執行個體的屬性。

  • DAC 會簡化支援不同資料庫版本之間的升級程序。當您使用 Transact-SQL 指令碼部署資料庫時,資料庫開發人員必須在第一個版本之後,為資料庫的每一個版本建立兩組指令碼。其中一組指令碼可用來將現有的資料庫升級到新的版本,另一組指令碼可用來安裝新的資料庫。當使用 DAC 時,資料庫開發人員只需要建立一個 DAC 封裝來描述新版本應用程式所用的結構描述。您可以搭配部署資料層應用程式精靈來使用此封裝,以安裝新的 DAC 執行個體。您可以搭配升級資料層應用程式精靈來使用相同的封裝,以升級現有的 DAC 執行個體。升級資料層應用程式精靈會比較兩個結構描述,並且動態執行將現有 DAC 執行個體轉換成新版 DAC 所需的動作。

    如需詳細資訊,請參閱<升級資料層應用程式>。

  • 您可以使用刪除資料層應用程式精靈,從 Database Engine 的執行個體中刪除 DAC。

如需有關建立及使用 DAC 的詳細資訊,請參閱<資料層應用程式教學課程>。

資料層應用程式元素

DAC 定義包含下列元素:

  • 定義 DAC 特性的 DAC 屬性。例如,每一個 DAC 都有應用程式 name 屬性和 version 屬性,這些屬性的值通常與關聯應用程式的名稱和版本號碼有關。

  • 應用程式所使用之所有資料庫物件的定義,例如結構描述、資料表、檢視表和預存程序。使用 SQL Server 2008 R2 或 Visual Studio 2010 建立的 DAC 不支援所有可用的 SQL Server 物件。如需詳細資訊,請參閱<SQL Server 物件和版本的 DAC 支援>。

  • 與資料庫物件相關而且由應用程式所使用的執行個體層級物件定義 (如登入)。

  • 定義必要條件的伺服器選取原則,Database Engine 執行個體應該擁有此原則才能主控 DAC。此原則是使用選取伺服器 Facet 所定義,而且可以評估條件 (如執行個體的版本和預設定序)。

  • 在 Visual Studio 中撰寫 DAC 定義時,可以內嵌到 DAC 定義中的檔案和指令碼。應用程式文件和資料產生計畫都是範例,可指定如何建立有意義的測試資料或部署前後的指令碼。

資料層應用程式專案

DAC 通常是在 Visual Studio 2010 中,由資料庫開發人員使用資料層應用程式專案所開發。資料庫開發人員會定義為了開發 DAC 來支援的應用程式所需的資料層物件。當 DAC 已經準備好可供應用程式開發人員或測試小組使用時,資料庫開發人員會建立 DAC 專案,此專案會建立可用來部署 DAC 的 DAC 封裝檔案。

如需有關 DAC 專案的詳細資訊,請參閱<實作資料層應用程式>。

資料層應用程式封裝

當 DAC 已備妥可以部署時,它會建立到 DAC 封裝內,此封裝是包含 DAC 定義的檔案。DAC 封裝是單一部署單位,正如可執行檔案是應用程式程式碼的部署單位一樣。DAC 封裝通常會搭配應用程式可執行檔一起建立。當系統管理員將可執行檔部署到應用程式層或用戶端電腦時,資料庫管理員就會將關聯的 DAC 封裝部署到 Database Engine 的執行個體。 

例如,開發小組正在開發名為 Finance 的 3 層應用程式。應用程式的組建版本 1.0.1.123 通過所有的驗收測試,而且已備妥可以部署至實際執行環境。應用程式開發人員將 1.0.1.123 Finance.exe 檔案版本遞交給實際執行系統管理員,以便部署到實際執行應用程式伺服器。資料庫開發人員將 1.0.1.123 Finance.dacpac 檔案版本遞交給實際執行資料庫管理員,以便部署到 Database Engine 的實際執行個體。

DAC 封裝是包含多個 XML 檔案的 zip 檔案。如需有關 DAC 封裝檔案內容的詳細資訊,請參閱 Microsoft SQL Server 檔案格式文件

資料層應用程式執行個體

當 DAC 部署到 Database Engine 的執行個體時,它會構成 DAC 執行個體:

  • 將會使用該 Database Engine 執行個體的預設資料庫屬性來建立資料庫。DAC 內定義的資料庫物件會在新的資料庫中建立。

  • 建立 DAC 內定義的所有執行個體層級物件 (如登入)。

  • 有關 DAC 執行個體的原始 DAC 定義和中繼資料會儲存在 msdb 系統資料庫中 (在 SQL Azure 中為 master 資料庫)。

在部署執行個體之後,使用者可以開始使用物件,並將資料加入到針對 DAC 所建立的資料庫中。

為現有的資料庫建立資料層應用程式

您可以使用擷取資料層應用程式精靈,從現有的資料庫中擷取 DAC 定義。DAC 定義包含資料庫中的選定物件以及關聯的執行個體層級物件,例如對應到資料庫使用者的登入。此精靈會將 DAC 定義建立到 DAC 封裝中。然後通常會將擷取的 DAC 封裝匯入到 Visual Studio 的 DAC 專案中,開發人員可以在其中開始開發下一版的應用程式。您也可以使用擷取的封裝,將 DAC 部署到另一個 Database Engine 執行個體。

您也可以使用註冊資料層應用程式精靈來註冊現有資料庫的 DAC。此精靈會建立包含現有資料庫物件的 DAC 定義,然後將定義儲存到 msdb 資料庫中 (在 SQL Azure 中為 master 資料庫)。如果 Database Engine 的執行個體是 SQL Server 公用程式中的 Managed 執行個體,DAC 註冊會當做部署的 DAC 上傳到公用程式控制點。