2012-04-12 4 views
1

から呼び出されたときにのみが、次の問題は、しばらくの間、私を盗聴されています:タイムアウト - ストアドプロシージャ

私はいくつかのインタフェースを処理するためのdtsxパッケージを持っています。下図のように、私は、ストアドプロシージャでそれを呼び出す:

SET @v_statement = 'DTEXEC /FILE "' + @v_if_ssis_package + '" /SET \Package.Variables[User::message_number].Properties[Value];' + CAST(@i_message_number AS VARCHAR(20)) 
       + ' /ConfigFile "' + REPLACE(@v_if_ssis_package, '.dtsx', '.xml') + '"' 

EXECUTE AS USER = 'shell'; 

INSERT INTO #SSISResult 
EXEC @v_ssis_returncode = xp_cmdshell @v_statement; 

シェルユーザーが通話をxp_cmdshellを実行できるように、私の知る限りのため、代わりにすべてのものを持っています。私のストアドプロシージャを実行している間にもかかわらず、私は次のエラーにぶつかる:(下図のように)私は、スタンドアローンのクエリとまったく同じことを実行したい場合

Microsoft (R) SQL Server Execute Package Utility Version 10.50.1600.1 for 32-bit Copyright (C) Microsoft Corporation 2010. All rights reserved. Started: 10:12:28 Error: 2012-04-12 10:12:59.11 Code: 0x00000000 Source: Script Task Script Description: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding...

はここ。これについて私を悩ませてきたことだ、それをうまく動作します。何が今ここにあるのか?

EXECUTE AS USER = 'shell'; 
EXEC xp_cmdshell 'dtexec /FILE "C:\mypackage.dtsx" /SET \Package.Variables[User::message_number].Properties[Value];48644 /ConfigFile "C:\mypackage.xml"' 

この問題に関するいくつかの点を教えていただけるとありがとうございます。

答えて

0

おそらく権限エラー

クイック推測:

実行GRANT EXECUTE ON xp_cmdshell TO shell

、多分EXECUTE AS login = 'shell'の代わりに、ユーザー

+0

ログインがこのユーザーのために動作していないようですが、私は午前と実行現在はexecute as userを使用しています。シェルユーザーは既にxp_cmdshellを実行する権限を持っていました。 – Jens

+0

ログインレベルで動作する必要があると思います。それを試すことができますか?多分、ユーザーシェルが別の名前のログインにマップされているかもしれません。 – Diego

+0

シェルユーザーでSQLサーバーにログインし、クエリを再実行しました。それは期待どおりに走った。ストアドプロシージャを呼び出すと、依然としてタイムアウトが発生しました。 – Jens

関連する問題