2
我在我的包中定义了一个执行sql任务,它将执行存储过程。当存储过程执行时,它将返回用户凭证。我必须将凭证存储在一个变量中,然后在新的脚本任务中使用这些凭证。使用执行SQL任务对象将值存储在变量中
以下是我到目前为止所尝试的。
STEP 1 - 我已经创建SQL任务
在常规选项卡中设置以下属性:
Resultset: Single row
connectionType: OLE DB
Connection:SourceDestination
SQLSourceType:DirectInput
SQLStatement: Execute dbo.GetLoginInfo1
ByPassPrepare = False
第2步 - 参数映射选项卡
Variable Name = User::DatabaseUserName
Direction = Output
Data Type = NVarchar
Parameter Name = @UserId
Parameter Size = 50
第3步 - 结果集选项卡
Result Name = 0
Variable Name = User::DatabaseUserName
当我执行我得到了以下错误的任务。
[Execute SQL Task] Error: Executing the query "EXECUTE [dbo].[GetUserLoginInfo1]"
failed with the following error: "Value does not fall within the expected range."
Possible failure reasons: Problems with the query, "ResultSet" property not set
correctly, parameters not set correctly, or connection not established correctly
当我调试我看到以下信息: 打破前执行:
User::DatabaseUserName = {Hi}
打破后执行:(错误发生,但价值得到chanage)
User::DatabaseUserName = {User1}
对不起,只是忘了提及变量的创建。我已经创建了一个如下所示的变量。
Name = DatabaseUserName
Scope = Package1
Datatype = String
Value = Hi
下面提到的是我用过的存储过程。
ALTER PROCEDURE [dbo].[GetUserLoginInfo1]
AS
BEGIN
SELECT userid AS userid
FROM login_credentials
WHERE servername= 'server1'
END
我曾尝试和阅读很多很多网站,但我依然面临着problem.This是我第二天就可以了,并有明天早上之前解决它,所以任何帮助将是非常赞赏。
非常感谢viktor。我们非常感谢您的帮助。 – 2012-03-01 14:15:08