部署 SSIS 包时的字符编码问题

Character encoding issue when deploying SSIS package

我正在使用 VS2015 和 SSDT 为 Sql Server 2016 开发集成服务项目。我在将 SSIS 包部署到服务器时遇到的问题示例:

我在测试数据库中创建了一个 table(整理:SQL_Latin1_General_CP1_CI_AS)作为:

CREATE TABLE [dbo].[EncodingError](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Text] [nvarchar](20) NULL,
[TimeStamp] [datetime2](7) NULL) ON [PRIMARY]

然后我创建了一个新的 SSIS 项目(项目部署模型)并在默认包中添加了一个用于测试数据库的连接管理器和一个带有脚本的“执行 SQL 任务”:

INSERT INTO [dbo].[EncodingError](Text,TimeStamp) SELECT '¤' AS Text,GETDATE() AS TimeStamp

当 运行从 VS 中安装包或将整个项目部署到服务器(SSIS 目录)并 运行 在那里安装包时,它会将行正确插入 table:

ID  Text    TimeStamp
1   ¤       2017-09-04 12:13:54.3100000
2   ¤       2017-09-04 12:14:26.2266667

当我重新部署 - 现在只有包,而不是整个项目 - 到服务器,我 运行 它再次插入这样的行:

ID  Text    TimeStamp
3   ¤      2017-09-04 12:16:16.8866667

现在,当我再次重新部署整个项目时,它工作正常。

在我只部署了包之后,我使用向导创建了一个新的 SSIS 项目,以将项目从服务器导入回。在这种情况下,任务中的脚本显示为:

INSERT INTO [dbo].[EncodingError](Text,TimeStamp)
SELECT '¤' AS Text
      ,GETDATE() AS TimeStamp

知道这种行为的原因是什么吗?从字符编码的角度来看,如果我部署整个项目与仅部署包有什么区别?

下午好

我遇到了类似的问题,并通过为 SQL Server 2016 SP1

应用累积更新 6 解决了这个问题

https://support.microsoft.com/en-us/help/4037354