我有一个在Visual Studio 2013中为SSDT项目构建的DACPAC文件。此SSDT项目定义了一个部署后脚本,用于将一些静态数据合并到已发布的表中,一个数据包含一个版权符号。
现在,当我通过Visual Studio发布数据库时,版权符号将被保留,并正确合并到目标表中。当我使用MSDeploy发布相同的数据库(使用相同的dacpac和发布配置文件)时,版权符号将作为“?”合并到目标数据库中。符号。同样,当我使用Action:Script
而不是Action:Publish
时,生成的SQL脚本包含“?”而不是版权符号。
似乎Visual Studio脚本正在生成的脚本是UTF8编码的,但是烘焙到dacpac中的脚本会丢失UTF8编码。有没有人对如何解决这个问题有任何想法?
答案 0 :(得分:0)
您是否在字符串文字前加N
来表示它包含Unicode字符串?您的列是否定义为nchar
或nvarchar
?创建dacpac的过程可以基于您的数据被声明为非unicode字符串的区别来执行转换。毫无疑问,版权特征无法在这种转换中存活下来。
有关unicode与字符串的详细信息,请参阅https://msdn.microsoft.com/en-us/library/ms179899.aspx。
答案 1 :(得分:0)
我有同样的问题。在记事本中打开此文件,并在同一文件夹中另存为unicode以替换旧文件。然后再次发布。它应该工作。