Joh*_*ffe 7 sql msbuild sql-server-data-tools
在SQL Server数据工具团队博客中提到,现在可以使用的MSBuild执行两个DacPacs或数据库的模式比较.但是,他们没有提到如何将连接字符串传递给源数据库和目标数据库.如果我设置参数/ p:source ="我的连接字符串"我得到错误:
MSBUILD:错误MSB4177:无效的属性.名称"初始目录"包含无效字符"".
我的PowerShell脚本发送到msbuild的命令行是:
msbuild ".\SchemaCompare.proj" /t:SqlSchemaCompare
/p:source="$sourceConnString" /p:target="$targetConnString"
/p:XmlOutput="$schemaCompareReportPath"
Run Code Online (Sandbox Code Playgroud)
SchemaCompare.proj包含SQL Server数据工具团队博客上建议的内容
事实证明,您必须将连接字符串中的分号替换为%3B,如下所示:
$sourceConnString = $sourceConnString.Replace(";", "%3B")
Run Code Online (Sandbox Code Playgroud)
说明:这可以防止 SQL Server值和包含该值的ConnectionStringMSBuild /p(又名)值之间发生分隔符冲突。/properties如果没有此 URL 编码,MSBuild 将标记ConnectionString分号,而不是完整传递整个值(以便 SQL Server 客户端库进行标记)。这也适用于MSBuild TaskProperties的属性。
参考: