0

首先,我为我蹩脚的英语感到抱歉。

我在两个不同的 SQL 实例中有两个不同的数据库,并且两个实例都通过链接服务器相互引用。我在数据库解决方案中添加了这个引用并使用变量来调用链接。这工作正常并且构建良好。

使用 sqlpackage 自动部署数据库时遇到问题。在每个内部版本生成 DACPAC 文件之后。在下一个 sprint 中,当需要部署时,使用 SQLPackage.exe 进行比较。这会生成一个脚本,其中包含上一个 sprint 中生成的新对象,并且除了一件事外,它工作正常。

当我比较最新的 .DACPAC 和上一个版本中构建的 .DACPAC 时,每个引用链接服务器的对象都会出现在生成的脚本文件中。这本身并不是一个大问题,但是在交付给客户时,有些对象不需要更改。

是否有指定包含链接服务器变量的选项?有没有办法选择要包含的对象(我害怕这个,因为可能存在修改此对象并应包含在包中的情况)?

编辑:此对象仅在使用 sqlpackage 时出现。它们不会出现在 Visual Studio 2012 架构比较中。

这是我现在使用的参数:

SqlPackage.exe /Action:script /p:BlockOnPossibleDataLoss=False /OverwriteFiles:True "/OutputPath:delta_scripts.publish.sql" /p:CommentOutSetVarDeclarations=True /p:DropPermissionsNotInSource=False /p:DropRoleMembersNotInSource=False /p:GenerateSmartDefaults=True /p:IgnorePermissions=True /p:IgnoreRoleMembership=True /p:IgnoreUserSettingsObjects=True /p:IgnoreCryptographicProviderFilePath=True /p:IgnoreLoginSids=True /p:IgnoreIdentitySeed=True /p:IgnoreFilegroupPlacement=False /p:IgnoreExtendedProperties=True /p:IncludeTransactionalScripts=False /p:ScriptDeployStateChecks=False /p:ScriptDatabaseOptions=False /v:Path1=C: /v:Path2=C: /v:Path3=C: /v:Path4=C: /v:Path5=C: /v:Path6=C: /v:Path7=C: /v:Path8=C: /v:Path9=C: "/TargetFile:olddacpac.dacpac" "/SourceFile:newdacpac.dacpac" "/TargetDatabaseName:DBNAME" "/SourceDatabaseName:DBNAME" /Variables:linkedserver=linkedserver /Variables:tempdb=tempdb /Variables:master=master /Variables:msdb=msdb
4

0 回答 0