Execute SQL Task 参数和变量的映射

Execute SQL Task能够执行带参数的SQL查询语句或存储过程(SP),通过SSIS的变量(Variable)对参数赋值。对于不同的Connection Manager,在Task中需要使用不同的符号(Parameter marker)来标记一个参数,并且在Parameter Mapping中设置参数名字(Parameter Name)。

在Execute SQL Task Editor中,设置Parameter Mapping的界面如下:

  • Variable Name:变量的名字,变量的作用域分为UserSystem,使用 :: 来引用作用域中的变量
  • Direction:参数的方向,分为输入参数(Input),输出参数(Output)和返回值(Returnvalue)
  • Data Type:参数的Data Type,必须和变量(Variable)的数据类型相兼容
  • Parameter Name:参数名字,不同的Connection Manager,其值不同,对于OLEDB Connection Manager,使用0,1,2等数值表示第一个,第二个参数,第三个参数等。
  • Parameter Size:默认值是-1,表示让SSIS确定参数的长度。如果参数的数据类型是变长的(varchar或varbinary),必须设置参数的长度,为参数值分配足够长度的空间。

在Parameter Mapping中,Parameter Marker和Name受到Connection Type的影响,如下表:

Connection typeParameter markerParameter nameExample SQL command
ADO?Param1, Param2, …SELECT FirstName, LastName, Title FROM Person.Contact WHERE ContactID = ?
ADO.NET@<parameter name>@<parameter name>SELECT FirstName, LastName, Title FROM Person.Contact WHERE ContactID = @parmContactID
ODBC?1, 2, 3, …SELECT FirstName, LastName, Title FROM Person.Contact WHERE ContactID = ?
EXCEL and OLE DB?0, 1, 2, 3, …SELECT FirstName, LastName, Title FROM Person.Contact WHERE ContactID = ?

1,执行SQL查询语句

楼主在实际开发中,最常用的Connection Type是OLEDB,设置Task的ConnectionType为OLE DB,在SQLStatement属性中使用 ? 来标记一个参数,? 叫做参数标记(Parameter Marker)。

select ID,c1
from dbo.dt_test
where c1=?

使用SSIS 变量(Variable)为参数赋值,Parameter Name必须是0,1,2等数字

2,执行SP,设置参数的方向

使用Execute SQL Task执行SP时,参数映射的Direction属性使用Input,Output和Returnvalue 分别表示:输入参数,输出参数和SP的返回值

复制代码

declare @return_value int 
declare @output_var int 
declare @input_var int
set @input_var=1exec @return_value=dbo.usp_test @para1=@input_var, @para2= @output_var output;

复制代码

使用OLEDB Connection Manager,使用 ? 表示一个参数,如图

在Parameter Mapping Tab中设置参数映射:

  • 第一个参数是SP的返回值,Direction 选择 Returnvalue,Parameter Name 是 0;
  • 第二个参数是SP的输入参数,Direction 选择 Input,Parameter Name 是 1;
  • 第三个参数是SP的输出参数,Direction 选择 Output,Parameter Name 是 2;

 

3,设置参数的Data Type

楼主整理的参数的Data Type和TSQL 数据类型的映射关系

3.1,数值类型

  • BYTE:映射 SSIS 的 DBTYPE_UI1,映射 TSQL 的 TinyInt
  • SHORT:映射 SSIS 的 DBTYPE_I2, 映射 TSQL 的 smallint
  • LONG:映射 SSIS 的 DBType_I8,映射 TSQL 的 bigint
  • FLOAT: 映射 TSQL 的 float(24)
  • DOUBLE:映射 TSQL 的 float(53)
  • DECIMAL: 映射 TSQL 的 decimal

3.2,日期/时间类型

  • DATE:映射TSQL的DateTime2(7)

注意:如果SSIS 变量的Data Type是DateTime,那么参数的Data Type应使用 DATE,但是,数据类型为DateTime的变量,只保留到秒,毫秒位是0.

3.3,字符串类型

  • VARCHAR: 映射TSQL的varchar
  • NVARCHAR: 映射TSQL的nvarchar

4,在做增量更新时,发现导入的数据量少于源数据

楼主在调试SSIS Package时,使用ModifiedDate字段做增量更新,Package中使用Execute SQL Task获取数据源中DataUpdateTime字段的最大值,并将该值赋值给变量:User::MaxLastModifiedDate,Package运行成功,但是导入的数据量少于源数据;通过测试,发现DateTime类型的变量,其时间部分只保留到秒,而不会计算毫秒部分,导致导入的数据量少于源数据。

调试SSIS Package,下断点(breakpoint),打开Watch Tab,查看变量运行时的值:

这两个变量定义为DateTime类型,经过测试,如果变量定义成String类型,实际上是一样的,时间只会精确到秒:

然而,数据源中的DataUpdateTime使用的Datetime2(7),精度十分高:

发生这种问题的根源是 SSIS的数据类型和SQL Server的数据类型不是一一对应的,存在差异。为了避免这种问题,可以对MaxLastModifiedDate 变量加1s。

在使用OLEDB数据源导入数据时,使用如下的Where条件,就能把所有的数据都导入到DW中。

where DataUpdatedOn > ?    --MinLastModifiedDate
and DataUpdatedOn<=?        --MaxLastModifiedDate

注意:SSIS 变量的日期和时间类型只保留到秒,而数据库中的时间可以保留到毫秒位(1-7位毫秒数)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/439487.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python学习】 - 手写数字识别 - python读入mnist数据集的多种方法

写在前面&#xff1a; 其实网上有很多读入mnist数据的代码&#xff0c;但是都是比较麻烦冗长的函数&#xff0c;本篇文章介绍几种不算很麻烦的&#xff0c;借用库函数读入数据的方法。 方法1&#xff1a; 方法2&#xff1a; 方法3&#xff1a;

Coursera自动驾驶课程第21讲:Dynamic Object Interactions

在第20讲《Coursera自动驾驶课程第20讲&#xff1a;Mission Planning in Driving Environments》 我们学习了任务规划中常用的三种图搜索算法&#xff1a;Breadth First Search、Dijkstra 和 A* 搜索。 在本讲中我们将讨论运动规划器中使用的方法&#xff0c;以处理动态物体和…

sql server 数据库忘记sa账户密码/ 无管理员账户解决办法

一、计算机超级管理员账户有数据库的管理员权限 用管理员账户登录数据库&#xff0c;直接修改sa账户密码即可。 二、数据库中没有管理员权限的账户 SQL Server 2005/2008提供了针对该情况的更好的灾难恢复方法&#xff0c;无需侵入master数据库&#xff0c;不会对master数据库…

机器学习编译第1讲:机器学习编译概述

MLC-机器学习编译-第一讲-机器学习编译概述课程主页&#xff1a;https://mlc.ai/summer22-zh/ 文章目录1.0 概述1.1 什么是机器学习编译1.2 为什么学习机器学习编译1.3 机器学习编译的关键要素1.3.1 备注&#xff1a;抽象和实现1.4 总结1.0 概述 机器学习应用程序已经无处不在…

重读经典:《The Craft of Research(1)》

跟读者建立联系【研究的艺术一】这一次李沐博士给大家精读的是一本关于论文写作的书籍。这本书总共包含四个大的章节&#xff0c;本期视频李沐博士介绍的是第一个章节&#xff1a;Research&#xff0c;Researchers&#xff0c;and Readers。 0. 前言 视频开头&#xff0c;李沐…

机器学习编译第2讲:张量程序抽象

02 张量程序抽象 【MLC-机器学习编译中文版】课程主页&#xff1a;https://mlc.ai/summer22-zh/ 文章目录2.1 元张量函数2.2 张量程序抽象2.2.1 张量程序抽象中的其它结构2.3 张量程序变换实践2.3.1 安装相关的包2.3.2 构造张量程序2.3.3 编译与运行2.3.4 张量程序变换2.3.5 通…

详解自动驾驶仿真数据集 SHIFT:A Synthetic Driving Dataset for Continuous Multi-Task Domain Adaptation

SHIFT&#xff1a;A Synthetic Driving Dataset for Continuous Multi-Task Domain Adaptation本文介绍一个新的自动驾驶仿真数据集&#xff1a;SHIFT&#xff0c;论文收录于 CVPR2022。适应连续变化的环境是自动驾驶系统一直以来要面临的挑战。然而&#xff0c;目前现有的图像…

TFS下的源代码控制

以下主要描述了&#xff1a; TFS源代码控制系统的基本场景如何把一个项目添加到源代码管理中如何与服务器同步如何做Check-In如何做分支与合并什么是上架与下架 我们知道工作项是项目管理的基本元素&#xff0c;但是一个项目的成功&#xff0c;光有工作项还是不够的。工作项说…

地平线:面向规模化量产的智能驾驶系统和软件开发

导读 7月27日&#xff0c;地平线在智东西公开课开设的「地平线自动驾驶技术专场」第3讲顺利完结&#xff0c;地平线智能驾驶应用软件部负责人宋巍围绕 《面向规模化量产的智能驾驶系统和软件开发》这一主题进行了直播讲解。本次分享主要分为以下4个部分&#xff1a; 1、智能驾驶…

重读经典(CLIP上):《Learning Transferable Visual Models From Natural Language Supervision》

CLIP 论文逐段精读【论文精读】这一次朱毅博士给大家精读的论文是 CLIP&#xff0c;来自于 OpenAI&#xff0c;是图像文本多模态领域一个里程碑式的工作。 CLIP 的影响力可见一斑&#xff0c;如果按照沐神之前讲的如何判断一个工作的价值来说&#xff0c;CLIP 应该就是 1001001…

TFS准备(一)

一、TFS概念&#xff1a; TFS全称Team FoundationServer&#xff0c;是应用程序生命周期管理的服务端&#xff0c;功能包括如图功能&#xff1a;源代码管理&#xff0c;版本控制&#xff0c;团队开发协作&#xff0c;统一集成&#xff0c;测试管理等。 二、TFS安装要求&#…

重读经典(CLIP下):《Learning Transferable Visual Models From Natural Language Supervision》

上文链接&#xff1a;重读经典&#xff08;CLIP上&#xff09;&#xff1a;《Learning Transferable Visual Models From Natural Language Supervision》 5. 实验 现在我们已经知道 CLIP 是如何进行预训练的以及作者为什么选用对比学习来预训练 CLIP&#xff0c;接下来我们就…

TFS创建团队项目(三)

打开Visual Studio 2013&#xff0c;视图-团队资源管理器-连接图标&#xff08;插头图标&#xff09; 当前是没有TFS服务器&#xff0c;点击服务器按钮 添加&#xff0c;并在URL地址栏里输入装有TFS的服务器IP地址&#xff08;配置完TFS后有这个URL&#xff1a;http://tfs-serv…

详解4D毫米波雷达数据集(VOD)Multi-class Road User Detection with 3+1D Radar in the View-of-Delft Dataset

Multi-class Road User Detection with 31D Radar in the View-of-Delft Dataset本文介绍一个新的自动驾驶数据集&#xff1a;VOD&#xff0c;论文收录于 ICRA2022。下一代毫米波雷达除了提供距离、方位和多普勒速度外&#xff0c;还会提供高度信息。 在本文中&#xff0c;作者…

自动驾驶之心:毫米波雷达-视觉融合感知方法(前融合/特征级融合/数据级融合)

毫米波雷达-视觉融合感知方法&#xff08;前融合/特征级融合/数据级融合&#xff09;分享一个自动驾驶之心的报告&#xff1a;毫米波雷达与视觉融合目标检测。 作者主页为&#xff1a;https://www.zhihu.com/people/nacayu 文章目录1. 毫米波雷达与相机融合检测背景2. 主流融合…

TFS中的迭代(五)

从团队资源管理器中打开迭代选项。 TFS在新建完团队项目后会自动为本团队项目新建迭代子项&#xff0c;包含发布和冲刺。第一级为团队项目TestProject&#xff0c;第二层为发布&#xff0c;第三层为冲刺&#xff0c;这样的层次一共可以建14层。 这些选项可以编辑&#xff0c;添…

2022百度ApolloDay技术开放日:文心大模型在自动驾驶感知中的落地应用

2数据处理大模型技术是自动驾驶行业近年的热议趋势&#xff0c;但能否落地应用、能否用好是关键难题。百度自动驾驶依托文心大模型特色优势&#xff0c;率先实现技术应用突破。百度自动驾驶技术专家王井东表示&#xff1a;文心大模型-图文弱监督预训练模型&#xff0c;背靠文心…

TFS中的工作项(六)

TFS中的工作项 在VS中打开团队资源管理器 工作项有功能&#xff0c;产品积压工作项&#xff0c;任务&#xff0c;测试用例&#xff0c;Bug&#xff0c;障碍&#xff0c;它们之间的关系是&#xff1a;一个产品或应用&#xff0c;有一系列功能&#xff0c;功能最大&#xff0c;可…

单目3D物体检测模型(CaDDN): Categorical Depth Distribution Network for Monocular 3D Object Detection

本文介绍一篇单目3D物体检测模型&#xff1a;CaDDN&#xff0c;论文收录于 CVPR2021。 单目3D物体检测的主要挑战在于准确预测物体深度&#xff0c;由于缺乏直接的距离测量&#xff0c;因此必须根据物体和场景线索来推断物体深度。过去许多方法试图直接估计深度来辅助3D检测&am…

抠图、换背景、正装图证件照制作方法

本篇灵感是最近又要使用别的底色的正装照的图片。上学的时候&#xff0c;要求证件照的底色是蓝底、党员档案里要求图片的底色是红底、 将来上班的证件照要求是白底&#xff0c;并且无论是考研还是找工作都是制作简历的时候&#xff0c;根据简历的样板不同需要更换不同的底色。 …