我正在使用带有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
知道这种行为的原因是什么?如果我从字符编码的角度部署整个项目而不仅仅是包,那有什么区别呢?
答案 0 :(得分:1)