使用MSDeploy发布DACPAC文件,部署后脚本中的UTF8字符将丢失

Mic*_*ier 6 sql-server utf-8 msdeploy dacpac sql-server-data-tools

我有一个在Visual Studio 2013中构建的DACPAC文件,用于SSDT项目.此SSDT项目定义了一个部署后脚本,用于将一些静态数据合并到已发布的表中,一个数据包含一个版权符号.

现在,当我通过Visual Studio发布数据库时,版权符号将被保留,并正确合并到目标表中.当我使用MSDeploy发布相同的数据库(使用相同的dacpac和发布配置文件)时,版权符号将作为"?"合并到目标数据库中.符号.同样,当我使用Action:Script而不是时Action:Publish,生成的SQL脚本包含"?" 而不是版权符号.

似乎Visual Studio脚本生成的脚本是UTF8编码的,但是烘焙到dacpac中的脚本会丢失UTF8编码.有没有人对如何解决这个问题有任何想法?

Mic*_*son 0

您是否为字符串文字添加前缀N以表示它包含 Unicode 字符串?您的列定义为nchar或 吗nvarchar?创建 dacpac 的过程可能会根据数据声明为非 unicode 字符串的区别来执行转换。毫不奇怪,版权字符无法在这种转换中幸存下来。

有关 unicode 与字符串的详细信息,请参阅https://msdn.microsoft.com/en-us/library/ms179899.aspx 。