【发布时间】:2021-12-19 01:26:12
【问题描述】:
我有一个复杂数据库的 DACPAC,我试图通过 Azure DevOps Pipeline 中的 Powershell 进行部署。
我通过 Sqlpackage.exe 运行它
& $(sqlPackage) "/Action:Publish" "/TargetServerName:$(myserver)" /TargetDatabaseName:"(myDB)" "/p:CreateNewDatabase=True" "/TargetUser:$(myUser)" "/TargetPassword:$(myPass)" "/SourceFile:$(myDacpac)" "/p:IgnoreUserSettingsObjects=True" "/p:IgnoreAuthorizer=True" "/p:VerifyDeployment=True" "/p:ExcludeObjectTypes=Logins;Aggregates" "/p:IncludeTransactionalScripts=True"
查看我的日志文件,我发现我的 [missingobject] 正在创建中:
2021-11-04T17:52:30.6001273Z Creating [missingobject]...
然后很多步骤之后我得到这个错误:
Error SQL72014: .Net SqlClient Data Provider: Msg 208, Level 16, State 103, Procedure MY_VIEW, Line 20 Invalid object name 'myschema.[missingobject]'.
Error SQL72045: Script execution error. The executed script:
CREATE VIEW myschema.MY_VIEW
缺少的对象是在同名 CLR 程序集中定义的聚合函数。我可以看到 CLR 程序集存在于数据库的 Assemblies 文件夹中。但实际的聚合函数并不存在。
似乎 dacpac 正在部署程序集,然后是视图。但是函数应该在视图之前。
在网上看,我看到 sql server “智能地”确定依赖关系并以正确的顺序部署,但这里似乎没有发生。
【问题讨论】:
标签: sql-server azure-devops dacpac