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

时间:2015-03-13 21:26:27

标签: sql-server utf-8 msdeploy sql-server-data-tools dacpac

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

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

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

2 个答案:

答案 0 :(得分:0)

您是否在字符串文字前加N来表示它包含Unicode字符串?您的列是否定义为ncharnvarchar?创建dacpac的过程可以基于您的数据被声明为非unicode字符串的区别来执行转换。毫无疑问,版权特征无法在这种转换中存活下来。

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

答案 1 :(得分:0)

我有同样的问题。在记事本中打开此文件,并在同一文件夹中另存为unicode以替换旧文件。然后再次发布。它应该工作。