首先我是因为我的英语破碎了。
我在两个不同的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