问题:
在运行 sqlpackage.exe 以应用 sql dacpac 时,它偶尔会在代理/SignalR 相关对象上失败,这会破坏构建:
*** Could not deploy package.
Error SQL72014: .Net SqlClient Data Provider: Msg 15151, Level 16, State 1, Line 1 Cannot drop the service 'Xxxxxx_xxxxx_0de7d69e-48ac-4a2b-95ef-d758d69b2a1e_Receiver', because it does not exist or you do not have permission.
Error SQL72045: Script execution error. The executed script:
DROP SERVICE [Xxxxxx_xxxxx_0de7d69e-48ac-4a2b-95ef-d758d69b2a1e_Receiver];
这是我们的sqlpackage.exe
命令行参数:
/p:TreatVerificationErrorsAsWarnings=True /p:DoNotAlterChangeDataCaptureObjects=True /p:DropIndexesNotInSource=True /p:DropObjectsNotInSource=True /p:ExcludeObjectTypes=Users;Logins;RoleMembership;Permissions;Credentials;DatabaseScopedCredentials;LinkedServerLogins;LinkedServers /p:BlockOnPossibleDataLoss=False
同样,失败率是每 10 次运行中的 1 次,并且没有人手动删除这些对象,因此我不知道为什么如果它知道它就无法删除该对象。有什么好的解决方案可以使其始终如一地应用吗?