2011-08-12 41 views
1

カーソルを作成して、SQL Serverジョブスケジューラでそのカーソルを呼び出したい。 SPの場合はEXEC <sp name>に電話する必要があります。カーソルを呼び出す方法?SQL Serverのsqlエージェントジョブを保存するときにエラーが発生する

私は仕事にT-SQLスクリプトを保存しようとすると、私は次のエラーを取得する:

TITLE: Microsoft SQL Server Management Studio 
------------------------------ 
Creating an instance of the COM 
component with CLSID {AA40D1D6-CAEF-4A56-B9BB-D0D3DC976BA2} from the 
IClassFactory failed due to the following error: c001f011. 
(Microsoft.SqlServer.ManagedDTS) 
------------------------------ 
ADDITIONAL INFORMATION: Creating an 
instance of the COM component with CLSID 
{AA40D1D6-CAEF-4A56-B9BB-D0D3DC976BA2} from the IClassFactory failed 
due to the following error: c001f011. 
(Microsoft.SqlServer.ManagedDTS) 
------------------------------ 
BUTTONS: OK 
------------------------------ 
+0

私は長い間、カーソルを使用していません。 SQL 2000以来、私は推測します。あなたは何のためにカーソルを使用していますか?彼らはほとんどの場合、テーブルを使用して交換することができます... –

答えて

8

SQLエージェントのジョブステップは、いくつかのタイプがありますあなたは、T-SQLのステップタイプを選択した場合T-SQLスクリプトのコンテンツをジョブステップの詳細/コンテンツに直接入れることができます。これは、カーソルや他のT-SQLを含むスクリプトでも同じでなければなりません。

カーソルは、作成したばかりのストアドプロシージャのような永続データベースオブジェクトではありません。カーソルは、単一のSQL接続のコンテキストで作成、使用、および破棄される一時的なオブジェクトです。通常、このような何か:あなたは、カーソルを使用してT-SQLスクリプトを使用している場合

DECLARE XXX CURSOR 
FOR 
SELECT Something 
FROM Somewhere 

OPEN XXX 

FETCH NEXT FROM XXX 
INTO @A 

WHILE @@FETCH_STATUS = 0 
BEGIN 

    --Do something here 

    FETCH NEXT FROM XXX 
    INTO @A 
END 

CLOSE XXX 
DEALLOCATE XXX 

、あなたは単にSQLエージェントジョブの中に全体のT-SQLスクリプトをコピーすることができます。

これが動作しない場合など、あなたが遭遇した問題の種類、あなたが試したものにとあなたが受け取ったすべてのエラーメッセージの詳細をより多くの情報を提供してください


SSMS後のアップデートエラー詳細の表示:

私は、SSMS 2008 R2(少なくとも64ビットマシン)では、SQLエージェントジョブ編集UIが、今まで提供したようなエラーをスローすることがあります。この場合、エラーが発生することがあります。また、編集するジョブステップをダブルクリックすると何も起こりません。

SSMSのクローズ(開いていたすべてのジョブをクローズし、アクティビティモニタを閉じ、ssmsを閉じる)をやり直してから、もう一度起動して編集したいジョブにまっすぐ行くと、これらの問題は消え去るだけです。

これを試してください。問題が解決しない場合は、正確な手順、T-SQLスクリプトのサイズ、追加すると思われる情報を記述してください。マイクロソフトからのバグの確認とこのエラーの

参考:この時点でhttp://connect.microsoft.com/SQLServer/feedback/details/557402/ssms-can-no-longer-create-or-edit-job-steps

ザ・唯一の既知の回避策は、(後に、SSMS完全に閉じて再度開き、編集したいつのジョブを編集することですもう一度エラーが発生する可能性があります。もう一度閉じる必要があります)

+0

おかげで私を返信する ので、あなたは、T-SQL uが EXEC を記述する必要がなく、どのように私は呼び出すことができます を通じてウルSPを呼び出すことができますカーソル... SQLサーバのクエリページでカーソルを呼び出すことができない場合もあります SPのように実行 –

+0

問題ありません - まだ問題がある場合は、質問にコメントしてください。あなたの問題を解決し、この答えがあなたが試していたことを達成するのを助けたならば、左のチェックボックスを使って "受け入れる"ことも考えられます。 – Tao

+0

@ user166694:私は一度作成してから 'EXEC 'で呼び出すストアドプロシージャと、必要なときに作成、使用、割り当てを解除するカーソルとの違いをより明確にするために答えを編集しました。これは役に立ちますか? – Tao

関連する問題