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

时间:2017-09-04 12:56:47

标签: sql-server visual-studio ssis sql-server-data-tools

我正在使用带有SSDT的VS2015来开发Sql Server 2016的Integration Services项目。我在将SSIS包部署到服务器时遇到的问题示例:

我在测试数据库中创建了一个表(排序规则: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目录)并在那里运行包时,它会将行正确插入表中:

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

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

1 个答案:

答案 0 :(得分:1)

下午好。

我遇到了类似的问题并通过应用SQL Server 2016 SP1的累积更新6来解决它

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