實作資料層應用程式

資料層應用程式 (DAC) 會定義支援應用程式所需的 SQL Server Database Engine 結構描述和物件。您可以使用下列其中一個程序來實作 DAC:

  • 您可以使用 Microsoft Visual Studio 2010 中的 SQL Server 資料層應用程式專案來撰寫及建立 DAC。

  • 您可以在 SQL Server Management Studio 中使用擷取資料層應用程式精靈,從現有的資料庫中擷取 DAC。

擷取和撰寫建立程序都會產生 DAC 定義來指定物件和中繼資料。DAC 定義會建立到 DAC 封裝中,這個封裝是一個檔案,其中包含 DAC 內包含之所有物件和原則定義的資訊清單。DAC 封裝可以用於:

  • 將目前的 DAC 版本部署到 Database Engine 和 SQL Azure 的開發、測試和實際執行的執行個體。您可以使用部署資料層應用程式精靈,部署新的 DAC 執行個體。使用升級資料層應用程式精靈,可升級之前使用舊版 DAC 所部署的現有 DAC 執行個體。

  • 開始在 Visual Studio 中開發下一版的 DAC,其方式是在 Visual Studio 中將 DAC 匯入新的 SQL Server 資料層應用程式專案。

開發程序中的資料層應用程式

DAC 是在 Visual Studio 中使用 DAC 專案所開發。DAC 專案可讓資料層物件的開發與編寫來使用這些物件之應用程式的開發環境緊密整合在一起。資料庫開發人員會在 Visual Studio 中使用 DAC 專案來撰寫 DAC。DAC 專案可以整合到 Visual Studio Team System 中應用程式的整體開發解決方案內。當應用程式開發人員撰寫應用程式的程式碼時,資料庫開發人員會編寫 DAC 中的資料層物件定義。

如果是新的應用程式,資料庫開發人員會建立 DAC 專案,然後在開發物件時,開始將物件加入到專案中。在針對現有應用程式的新版本啟動專案時,資料庫開發人員可以從應用程式所使用的目前資料庫中擷取 DAC 封裝,並將它匯入 DAC 專案中。

開發人員可以將這些元素加入至 DAC 專案:

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

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

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

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

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

對測試而言,資料庫開發人員可以將 DAC 專案部署到 Database Engine 的測試執行個體。另外,開發人員也可以建立 DAC 專案,此專案會在 DAC 封裝中建立 DAC 定義。DAC 定義包含在 DAC 專案中定義之所有元素的中繼資料。DAC 封裝是一個壓縮的 XML 檔,其中包含 DAC 定義而且是用來部署或升級 DAC。開發人員和軟體測試人員可以使用部署資料層應用程式精靈,將 DAC 部署至測試系統。

應用程式開發完成時,將會建立 DAC 專案來產生 DAC 封裝的實際執行版本,就像是建立應用程式專案來產生應用程式可執行檔案一樣。DAC 封裝會遞交給實際執行資料庫管理員,此管理員會將它部署到實際環境中執行的 Database Engine 執行個體或 SQL Azure。

當 DAC 版本已部署至實際執行環境之後,可以在下一版的 DAC 上開始開發。資料庫開發人員會使用存在於該版本中的所有資料層物件定義來建立新版的 DAC 專案。當專案建立到新的 DAC 封裝時,可以使用相同的封裝來部署 DAC 的新執行個體,或是將現有的執行個體升級到新的版本。升級資料層應用程式精靈會比較現有 DAC 執行個體的結構描述與 DAC 封裝,並且動態執行將現有 DAC 執行個體轉換成新版 DAC 所需的動作。

如需有關 Visual Studio 文件集內 DAC 專案的詳細資訊,請參閱<建立及管理資料層應用程式>。

從資料庫中擷取 DAC

擷取資料層應用程式精靈是用來根據現有的資料庫建立 DAC 定義。DAC 定義包含了可定義資料庫中所有物件的中繼資料、對應到資料庫中安全性主體的任何登入,以及資料庫定序和相容性層級。DAC 定義不包含來源資料庫中的任何使用者資料。DAC 定義會建立到 DAC 封裝檔案內。

此精靈只能擷取資料層應用程式所支援的物件。當您指定了屬性 (如 DAC 名稱和版本) 之後,此精靈就會載入資料庫中的所有物件,並確認 DAC 中有支援這些物件。然後此精靈會顯示一個摘要頁面,將這些物件分成三個類別:

  • DAC 中不支援具有紅色無效輸入圖示的物件。

  • DAC 中可支援具有黃色警告圖示的物件,但是會相依於沒有這種圖示的物件。

  • DAC 中可支援具有綠色成功圖示的物件,而且不會相依於 DAC 中不支援的物件。

如果此精靈遇到 DAC 中不支援的任何物件,它會在摘要報表中列出物件,而且不會建立 DAC 封裝。如果所有的物件都有綠色成功圖示,表示您可以繼續建立 DAC 封裝。

擷取的 DAC 封裝可以用於:

  • 將 DAC 匯入 Visual Studio 中的 DAC 專案,資料庫開發人員可以在此專案中開始開發下一版的 DAC。

  • 部署 DAC 的新執行個體。

  • 升級先前部署的 DAC 版本。

如需有關支援之物件的詳細資訊,請參閱<SQL Server 物件和版本的 DAC 支援>。

如需有關如何啟動此精靈的詳細資訊,請參閱<如何:從資料庫中擷取 DAC>。

登入密碼

為了提高安全性,SQL Server 驗證登入會儲存在 DAC 封裝中,而且沒有任何密碼。當您部署或升級此封裝時,此登入會建立為停用的登入,而且會產生密碼。若要啟用登入,請使用具有 ALTER ANY LOGIN 權限的登入進行登入,並使用 ALTER LOGIN 來啟用登入,然後指派可以傳達給使用者的新密碼。Windows 驗證登入不需要這項處理,因為這類登入的密碼不是由 SQL Server 所管理。