【发布时间】:2017-09-04 12:56:47
【问题描述】:
我正在使用带有 SSDT 的 VS2015 为 Sql Server 2016 开发集成服务项目。我在将 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
知道这种行为的原因是什么吗?从字符编码的角度来看,如果我部署整个项目与仅部署包有什么区别?
【问题讨论】:
标签: sql-server visual-studio ssis sql-server-data-tools