SSIS中Sql Task 获取系统变量

This blog discusses how to use parameters in SQL commands within a SQL Task in SSIS, depending on the connection manager type. It highlights the requirements for ADO.NET, ADO, EXCEL, ODBC, and OLE DB connection managers, explaining parameter markers, variable mapping, and data type considerations." 133413998,20037042,MySQL慢查询日志启用指南,"['mysql', '数据库', '性能优化']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

执行 SQL 任务使用不同的连接类型时,SQL 命令的语法使用不同的参数标记。例如,ADO.NET 连接管理器类型要求 SQL 命令使用格式为 @varParameter 的参数标记,而 OLE DB 连接类型要求使用问号 (?) 参数标记。

在变量与参数之间的映射中可以用作参数名的名称也因连接管理器类型而异。例如,ADO.NET 连接管理器类型使用带 @ 前缀的用户定义名称,而 OLE DB 连接管理器类型要求使用从 0 开始的序数数值作为参数名。

下表总结了执行 SQL 任务可以使用的连接管理器类型的 SQL 命令要求。

连接类型

参数标记

参数名称

示例 SQL 命令

ADO

?

Param1, Param2, ……

SELECT FirstName, LastName, Title FROM Person.Person WHERE BusinessEntityID = ?

ADO.NET

@<参数名称>

@<参数名称>

SELECT FirstName, LastName, Title FROM Person.Person WHERE BusinessEntityID = @parmBusinessEntityID

ODBC

?

1, 2, 3, …

SELECT FirstName, LastName, Title FROM Person.Person WHERE BusinessEntityID = ?

EXCEL 和 OLE DB

?

0, 1, 2, 3, …

SELECT FirstName, LastName, Title FROM Person.Person WHERE BusinessEntityID = ?

在 ADO.NET 和 ADO 连接管理器中使用参数

ADO.NET 和 ADO 连接管理器对使用参数的 SQL 命令有特定要求:

  • ADO.NET 连接管理器要求 SQL 命令将参数名称用作参数标记。这意味着变量可以直接映射到参数。例如,变量 @varName 映射到名为 @parName 的参数,并向参数 @parName 提供值。

  • ADO 连接管理器要求 SQL 命令使用问号 (?) 作为参数标记。但是,您可以使用任何用户定义名称(整数值除外)作为参数名称。

为了向参数提供值,可将变量映射到参数名称。然后,执行 SQL 任务使用参数列表中参数名称的序数值来将值从变量加载到参数。

在 EXCEL、ODBC 和 OLE DB 连接管理器中使用参数

EXCEL、 ODBC 和 OLE DB 连接管理器要求 SQL 命令使用问号 (?)作为参数标记,并使用从 0 或 1 开始的数值作为参数名称。如果执行 SQL 任务使用 ODBC 连接管理器,则映射到查询中的第一个参数的参数名称将为 1;否则该参数将命名为 0。对于后续参数,参数名称的数值指示参数名称在 SQL 命令中映射到的参数。例如,名为 3 的参数映射到第三个参数,这是由 SQL 命令中的第三个问号 (?) 来表示的。

若要向参数提供值,可以将变量映射到参数名称,然后执行 SQL 任务使用参数名称的序数值将值从变量加载到参数。

连接管理器使用的访问接口不同时,某些 OLE DB 数据类型可能不受支持。例如,Excel 驱动程序只识别有限的一组数据类型。有关带有 Excel 驱动程序的 Jet 访问接口的行为的详细信息,请参阅 Excel 源

在 OLE DB 连接管理器中使用参数

如果执行 SQL 任务使用 OLE DB 连接管理器,则该任务的 BypassPrepare 属性可用。如果执行 SQL 任务使用带有参数的 SQL 语句,则应将此属性设置为 true

使用 OLE DB 连接管理器时,不能使用参数化的子查询,这是因为执行 SQL 任务不能通过 OLE DB 访问接口得到参数信息。但是,您可以使用表达式将参数值串联到查询字符串中,并设置该任务的 SqlStatementSource 属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值