問題タブ [sql-server-agent]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
674 参照

sql - SQL Server エージェント - Oracle から SQL テーブルを更新する

これは初心者の質問です...私のSQL(SQL Server 2008)テーブルを夜間に更新するジョブを作成することは可能ですか - オラクルデータベースから?オンラインでチュートリアルが見つからないようです。助けてください。

データ ソース アドミニストレータで ODBC 接続を既に作成しています。

0 投票する
3 に答える
23704 参照

sql-server - SQL Server ジョブが実行されているかどうかを正確に検出し、既に実行されているジョブに対処するにはどうすればよいですか?

現在、このようなコードを使用して、SQL サーバー ジョブが実行されているかどうかを検出しています。(これは SQL Server 2005、すべての SP です)

そこに問題はなく、一般的に言えば、問題なく動作します。

しかし.... (常にしかし)

場合によっては、これを呼び出して「ジョブが実行されていません」という結果が返されたら、次の方法でジョブを開始しようとします。

SQL は、「保留中の要求が既にあるため、SQLAgent はジョブの開始を拒否しました」と返します。

Ok。また、問題ありません。このコードがターゲット ジョブを開始する前に、ターゲット ジョブを開始できるわずかな時間枠があると考えられますが、開始されたかどうかを確認した後です。ただし、それを try catch にまとめて、エラーを無視することはできますよね?

ただし、ここに問題があります。

10回中9回、これはうまくいきます。SQL エージェントはエラーを発生させ、キャッチされ、処理が続行されます。ジョブは既に実行されているため、問題はありません。

しかし、時折、[ジョブ履歴] ビューにメッセージが表示されることがあります (特定のジョブが実行されているかどうかを検出し、実際に別のジョブから実行されていない場合は開始する上記のコードを覚えておいてください)。保留中のリクエストがすでにあるため、ジョブの開始を拒否しました。」

もちろん、これは TRY CATCH が処理するはずの正確なエラーです!

これが発生すると、実行中のジョブはただ停止しますが、私が知る限り、すぐには終了しません。あちこちにログを記録しましたが、一貫性がありません。一度失敗すると、場所 a になり、次は場所 b になります。場合によっては、場所 A と場所 B には、

それらの間に。非常に奇妙な。基本的に、ジョブは不用意にダンプされたように見え、ジョブで実行するために残っているものは +まったく実行されません。

ただし、「exec StartJob」を削除すると (または、ターゲット ジョブがまだ実行されていないことがわかっているときに 1 回だけ呼び出すと)、すべてが完全に機能し、ジョブ内のすべての処理が実行されます。

このすべての背後にある目的は、(特に) トリガーの結果としてジョブを開始することであり、ジョブが既に開始されている場合は、実際に「もう一度開始する」必要はありません。

SQL エージェントのジョブ処理でこのような動作に遭遇した人はいますか?

編集:現在の制御の流れは次のようになります。

  1. テーブルへの変更 (更新または挿入)...
  2. 呼び出すトリガーを起動します...
  3. ...を呼び出すストアドプロシージャ
  4. sp_Start_Job...
  5. 特定のジョブを開始します...
  6. 別のストアド プロシージャ (CheckQueue と呼ばれる) を呼び出します...
  7. いくつかの処理を実行し、...
  8. いくつかのテーブルをチェックし、その内容によっては...
  9. 別のジョブで sp_start_job を呼び出して、追加の作業を処理する 2 番目の同時ジョブを開始します (この 2 番目のジョブは CheckQueue sproc も呼び出しますが、2 つの呼び出しは完全に別個のデータ セットで動作します)。
0 投票する
1 に答える
502 参照

tsql - ssrsレポートを実行するSQLジョブは、レポートがデッドロック状態になっている場合でも成功を示します

SSRSレポートの電子メールサブスクリプションを作成しました。

サブスクリプションでレポートを実行すると、ジョブが正常に完了したことが示されます。ただし、テーブルの1つがロックされているため、レポートはまだ実行中であるため、電子メールは受信されません。ロックが解除されると、レポートのメールが届きます。

ロックが解放され、サブスクリプションメールが送信されるのを待ってから、完了としてマークする必要がありますか?

0 投票する
1 に答える
1059 参照

sql - オーバーランした場合にエージェント ジョブを強制終了する SQL 2000 スクリプト

アップグレード待ちのレガシー SQL 2000 ボックス

SQL Agent 2000 でジョブが設定された期間を超えて実行されたり、別のエージェント ジョブと重複したりした場合に、そのジョブを強制終了/中止するスクリプトを持っている人はいますか?

これにより、数週間ごとにジョブがオーバーランし、再インデックス ジョブがロックされ、24 時間年中無休のサーバーがフリーズするという深刻な問題が発生しています。

0 投票する
0 に答える
1177 参照

sql-server-2008 - 新しいサーバーへの移行後にリンク サーバーでのジョブが失敗する (2000 > 2008 R2)

昨夜、新しいサーバーに移行し、すべてのデータを SQL 2000 から SQL 2008 R2 に移行しました。

リンクされたサーバーが参照されているステップを含むジョブが失敗し、その理由を理解できないことを除いて、すべてがうまくいきました.

「sa」としてログインし、リンクされたサーバーを参照すると、オブジェクトなどを展開して参照できます。また、「sa」としてログインしたクエリ ウィンドウで問題なくジョブのコードを実行することもできます。

ただし、ジョブを実行すると、次のようになります。

履歴ログ:

なぜこれが起こっているのかについてのアイデアはありますか? 私はそれがsaアカウントに何かあると思いますか?

saとしてログインしたり、新しいsysadminアカウントを作成してジョブを最初から再作成したりしても発生します。

注: 2000 年から 2008 年までのログインも移植しました。

ありがとう!

0 投票する
3 に答える
43563 参照

sql-server-2005 - オブジェクト 'sysjobs'、データベース 'msdb'、スキーマ 'dbo' に対する SELECT 権限が拒否されました

SQL ジョブを読み取ろうとすると、次のエラーが発生します。

オブジェクト 'sysjobs'、データベース 'msdb'、スキーマ 'dbo' に対する SELECT 権限が拒否されました

どうすればこれを修正できますか?

0 投票する
2 に答える
1470 参照

sql-server - Sql Server データベースの夜間レプリケーションを作成する最良の方法

毎晩実行されるジョブを作成したい。ステージング データベース (MyDatabase_Stage) をコピー/置き換えたいデータベース (MyDatabase) があります。

最も簡単な方法は、SQL Server エージェントに関連することだと思いますが、このようなことをしたことはありません。このセットアップとテストを行うためのベスト プラクティスと最も簡単なルートは何ですか?

データが 24 時間経過しているかどうかは気にしません。最も重要な基準は、毎晩同時にフル コピーを実行することです。

0 投票する
5 に答える
47806 参照

sql - SQL Serverエージェントジョブ:ジョブ全体を実行せずにジョブステップを実行する方法

以前は2つの手順があったSQLServerエージェントジョブがあります。今日、私は3番目のステップを統合する必要があり、まもなく4番目のステップを統合する必要があります。

ステップが正しく実行されることを確認したいのですが、ジョブ全体を実行したくありません。

最初の2つのステップは実行にかなりの時間がかかり、日中はユーザーが必要とする大量のSQLリソースを占有します。

ジョブプロセス全体ではなく、ジョブステップを実行できる方法はありますか?

SSMS内で、ジョブを右クリックすると、[ステップでジョブを開始...]というオプションがあります。ただし、そのオプションを試すと、ジョブ全体が開始されたことを示すダイアログが表示されます。ジョブ内の1つのステップをテストするにはどうすればよいですか?

前もって感謝します。

0 投票する
1 に答える
22449 参照

sql-server-2008 - SQL Server エージェントが実行されていません

サーバーで SQL ジョブが実行されていません。これを調べたところ、次のメッセージが表示されました。

SQL Server エージェントを SQL Server 2008 で実行するにはどうすればよいですか?

0 投票する
1 に答える
597 参照

sql-server - SQL Server エージェント ジョブの監視と通知

すべての SQL サーバー エージェント ジョブを監視するストアド プロシージャ/ジョブを作成したいと考えています。SQL Server エージェントのジョブのいずれかが失敗すると、ジョブ名が記載された電子メールが管理者に送信されます。

すべてのジョブを監視するようなジョブを作成する最良の方法は何ですか?