首页 文章

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

提问于
浏览
1

我正在使用带有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 回答

相关问题