2015-12-28 31 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,因此该路径不一定存在。 –