2015-12-28 58 views
3

我找不到如何打包在dacpac部署貢獻者的任何引用。如何在dacpac中打包部署貢獻者?

  1. 我們正在使用DacServices.Deploy Method將我們的數據庫作爲dacpacs部署到SQL Server。
  2. 該方法的一個參數具有屬性DacDeployOptions.AdditionalDeploymentContributors,該屬性的描述「除了在dacpac [強調增加]中指定的那些之外,還應該運行其他部署貢獻者 - 」。

所以我的問題是如何指定這些部署貢獻者在dacpac

我試過在Visual Studio中的SSDT項目中放置部署貢獻者類,但干擾加載到SQL Server的CLR程序集(即,它被加載到SQL Server中,並且如果它的依賴項也未設置爲加載,拋出錯誤)。

請指教。謝謝。

回答

1

要投入需要加載一個特定的貢獻者,那麼你需要手動編輯.sqlproj文件並添加這個dacpac:

<PropertyGroup> <DeploymentContributors>$(DeploymentContributors);AgileSqlClub.DeploymentPlanLogger</DeploymentContributors> </PropertyGroup>

<Import Condition="'$(SQLDBExtensionsRefPath)' != ''" Project="$(SQLDBExtensionsRefPath)\Microsoft.Data.Tools.Schema.SqlTasks.targets" /> 更改「 AgileSqlClub.DeploymentPlanLogger「,無論您的貢獻者如何導出其名稱(例如[ExportDeploymentPlanModifier(」AgileSqlClub.DeploymentPlanLogger「,」0.1.0.0「)])

添加此XML會導致你的「Origin.xml」你dacpac有這樣的:

<RequiredContributors> <DeploymentContributor Name="AgileSqlClub.DeploymentPlanLogger" Version="0.1.0.0" /> </RequiredContributors> </DeploymentContributors>

你可能只是誰曾經使用此功能,所以誰知道它是否正常工作的人之一? ?讓大家知道!

您還需要將貢獻者部署到您正在構建dacpac的計算機上,以及部署或生成部署腳本的計算機上。在機器上,你會部署來自:

的dacfx看起來找到部署貢獻者的路徑是硬編碼爲:

Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86),@「微軟SQL Server \ 120 \ DAC \ bin \ Extensions「)

所以在我的系統上是」c:\ program files(x86)\ Microsoft SQL Server \ 120 \ DAC \ bin \ Extensions「。

http://agilesqlclub.codeplex.com/wikipage?title=Deploying&referringTitle=Documentation

參看「如果你在SSDT發佈」:

在機器上編譯時,你需要它是鏈接中的視覺工作室路徑dacpac您將使用

(我用VS 2015年系統上是C:\ Program Files文件(x86)的\微軟的Visual Studio 14.0 \ Common7 \ IDE \擴展\微軟\ SQLDB \ DAC \ 120個\擴展)

另一件事是當你把你的貢獻者複製到t時他擴展目錄,你可以把它們放在另一個文件夾,所以你可以保留你的擴展和任何依賴,從任何其他貢獻者將有自己的一套依賴項(和DLL地獄死於.net哈哈)

Out of興趣你的貢獻者做什麼?

如果是OSS請考慮分享它:

https://github.com/DacFxDeploymentContributors/Contributors

埃德

+0

部署貢獻者參與數據的升級。我們有一些數據需要與第三方程序集進行一些轉換,我們正在嘗試將部署貢獻者作爲可能的解決方案。 –

+0

好的,對不起,我重新閱讀你的問題,希望這回答得更好:) –

+0

你確定那個硬編碼的路徑嗎?我們正在使用NuGet取消Microsoft.SqlServer.Dac,因此該路徑不一定存在。 –