Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何使用SSIS传输SQL Server对象任务转换数据?_Sql Server_Ssis_Etl_Timestamp With Timezone - Fatal编程技术网

Sql server 如何使用SSIS传输SQL Server对象任务转换数据?

Sql server 如何使用SSIS传输SQL Server对象任务转换数据?,sql-server,ssis,etl,timestamp-with-timezone,Sql Server,Ssis,Etl,Timestamp With Timezone,我正在创建一个SSIS包,以便在不同服务器上的数据库之间传输表。源数据库上的时间戳以UTC为单位,我希望使用时区“UTC”的[CallConnectedTime]和时区“太平洋标准时间”的[CallConnectedTime]作为CallConnectedTime将其转换为本地时间 如何在传输SQL对象任务中执行此转换?我曾考虑使用数据流任务,但后来我需要为我带来的每个表创建一个任务。传输SQL Server对象任务不允许您定义任何数据转换 如果不想执行创建多个数据流任务的路线,可以在传输任务运

我正在创建一个SSIS包,以便在不同服务器上的数据库之间传输表。源数据库上的时间戳以UTC为单位,我希望使用时区“UTC”的
[CallConnectedTime]和时区“太平洋标准时间”的
[CallConnectedTime]作为CallConnectedTime将其转换为本地时间


如何在传输SQL对象任务中执行此转换?我曾考虑使用数据流任务,但后来我需要为我带来的每个表创建一个任务。

传输SQL Server对象任务不允许您定义任何数据转换

如果不想执行创建多个数据流任务的路线,可以在传输任务运行后创建表名的ADO记录集,然后创建Foreach循环来迭代ADO记录集。为此,您可以在执行SQL任务中使用以下查询,并将
ResultSet
设置为
Full result set

SELECT Name 
FROM sys.tables
WHERE type_desc = 'USER_TABLE'
将结果集映射到对象变量类型。然后,您可以使用ADO枚举器创建Foreach循环,将其指向您的对象变量,然后创建另一个变量来保存
Name
字段的值

使用现在保存
Name
字段的变量,在Foreach循环中创建另一个executesql任务。此执行SQL任务将生成并执行动态SQL语句,该语句将通过设置CallConnectedTime更新表

循环中的执行SQL任务将如下所示:

DECLARE @query NVARCHAR(MAX)
DECLARE @Table VARCHAR(1000) = ?

SET @query = N'
UPDATE ' + @Table + N'
SET CallConnectedTime = CallConnectedTime AT TIME ZONE ''UTC'' AT TIME ZONE ''Pacific Standard Time'''

EXEC(@query)
在编辑器左窗格的
参数映射下,您可以将表名变量添加为参数名0,如下所示:

DECLARE @query NVARCHAR(MAX)
DECLARE @Table VARCHAR(1000) = ?

SET @query = N'
UPDATE ' + @Table + N'
SET CallConnectedTime = CallConnectedTime AT TIME ZONE ''UTC'' AT TIME ZONE ''Pacific Standard Time'''

EXEC(@query)

完成上述步骤后,控制流应该是这样的(忽略错误图标)


添加了几个标签,修正了一些小的打字错误