以下是我的数据库项目中的确切方案,我正在创建dacpac以在目标SQL实例上部署数据库:
- 当我尝试在我的环境中运行sqlpackage.exe来部署dacpac(在TFS构建过程中生成)时,我收到错误消息 -
***没有提供参考文件XXXX.XXXX.XXXX.dll;部署可能会失败。当C:\ Temp \ Dacpac_testing \ XXX.XXXXX.XXXX.dacpac是 创建后,找到原始引用文件 C:\ BUILDS \ 1 \ XXXX \ XXXX \ SRC \ XXXXXXXX \ ASSEMBLIES \ XXXX.XXXX.XXXX.dll
如何创建dacpac以在部署环境中引用CLR程序集的路径(而不是在构建dacpac时使用的路径)
对此的任何帮助将不胜感激。
答案 0 :(得分:1)
抱歉,我现在只选择了这个帖子,但我遇到了类似的问题。 打开Sql Server项目中的引用,转到您引用的dll右键单击并选择属性。
更改以下设置: 生成Sql脚本:True Model Aware:True
根据clr代码的要求选择相关的权限集。
答案 1 :(得分:1)
我能够通过将所有文件都包含在部署dacpac的机器上由SSDT项目构建的bin / output文件夹中来解决此问题。此文件夹包含所有引用的DLL和DAPAC。我还在构建输出中包含了publish.xml文件和一些示例SQLPackage cmd文件,以便于部署。
我在SQL Server数据工具论坛中找到了Richard Gavel的帖子。 https://social.msdn.microsoft.com/Forums/sqlserver/en-US/aba60b70-396f-4624-890c-015c1f2d68f7/dacpac-dependencies-for-sqlpackageexe?forum=ssdt
我不知道这是否有帮助,但是我在编译的DACPAC和提取的DACPAC之间运行SqlPackage / Action:脚本时出现问题,并且出现了类似的错误(添加引用时出错)。我通过从DACPAC的\ bin \ debug目录复制所有DACPACS来解决它(它有关于15个其他数据库项目加上master和msdb的引用)。在那之后,它奏效了。所以看起来在查找引用时,它会首先检查目录(我不知道它是专门查看当前目录还是根DACPAC所在的目录,因为它们是同一个)。