【发布时间】:2015-05-16 12:36:51
【问题描述】:
我有一个在 Visual Studio 2013 中为 SSDT 项目构建的 DACPAC 文件。本 SSDT 项目定义了一个部署后脚本,旨在将一些静态数据合并到已发布的表中,其中一条数据包含版权符号。
现在,当我通过 Visual Studio 发布数据库时,版权符号被保留,并正确合并到目标表中。当我使用 MSDeploy 发布相同的数据库(具有相同的 dacpac 和发布配置文件)时,版权符号作为“?”合并到目标数据库中。象征。同样,当我使用Action:Script 而不是Action:Publish 时,生成的SQL 脚本包含一个“?”而不是版权符号。
似乎 Visual Studio 正在生成的脚本是 UTF8 编码的,但被烘焙到 dacpac 中的脚本会丢失 UTF8 编码。有没有人知道如何解决这个问题?
【问题讨论】:
-
您是否检查过脚本文件本身的编码。如果 SQL 脚本文件在 ANSII 中,则将其保存为 UTF8。
-
是的,我查过了。 Visual Studio 中的部署后脚本文件确实以 UTF-8 编码。同样,如果我双击 .dacpac 文件,解压的 postdeploy.sql 文件也是 UTF-8 编码的。我还比较了由 Visual Studio 生成的发布脚本文件和从 .dacpac 文件中解压缩的发布脚本文件。唯一的区别(在部署后部分,值得一提)是丢失的特殊字符。
-
您找到解决方案了吗?我们的解决方法将是忽略违规过程,因为以下解决方法将不利于持续部署。对我们来说,忽略很容易,因为我们有一个可自定义的部署修改器,它允许我排除针对相关对象的任何步骤。
-
关于这个话题的任何更新?在使用相同的管道几个月后,我面临同样的情况。
-
我解决了我的问题,在我的例子中创建了一个视图,并提供了从 excel 复制和粘贴的名称,并为“-”符号添加了另一个字符。错一个
[Operations DB – Plant Master]对一个:[Operations DB - Plant Master]
标签: sql-server utf-8 msdeploy sql-server-data-tools dacpac