タグ付けされた質問 「sql-server-agent」

SQL Serverエージェントは、SQL Server Standard Edition以降でインストールされるWindowsサービスです。SQL Serverインスタンスに対して管理タスクを実行または実行する自動化された方法を提供します。SQL Serverエージェントは、すべてのDBAが熟知し、その潜在能力を最大限に活用するためのツールです。

8
SQL Serverエージェントのジョブと可用性グループ
SQL Server 2012可用性グループでスケジュールされたSQL Serverエージェントジョブを処理するベストプラクティスを探しています。たぶん何かを見逃したかもしれませんが、現在の状態では、SQL Server Agentはこの優れたSQL2012機能と実際には統合されていないと感じています。 スケジュールされたSQLエージェントジョブにノードの切り替えを認識させるにはどうすればよいですか?たとえば、1時間ごとにデータをロードするジョブをプライマリノードで実行しています。プライマリがダウンした場合、プライマリになったセカンダリでジョブをアクティブにするにはどうすればよいですか? セカンダリで常にジョブをスケジュールすると、セカンダリは読み取り専用であるため失敗します。

3
SQLSERVERAGENT仮想アカウントへのファイルシステムアクセスを許可する
この質問でNT Service\SQLSERVERAGENTマークされた回答に基づいて、Windowsアカウントのファイルシステムアクセスを許可しようとしています。これは仮想サービスアカウントであり、コントロールパネル->ユーザーアカウント領域には表示されないと思います。 このサービスアカウントにファイルシステムへのアクセスを許可するにはどうすればよいですか?具体的には、Windows 7。 私はいくつかのアプローチを読みましたが、私には選択肢がないようです。PowerShellのアプローチを試しましたが、ADコマンドは有効なコマンドではありませんでした。これらのコマンドに必要なWindowsパッチをダウンロードしてインストールしました。また、SQL Server構成マネージャーまたはManagement Studioを介してこれを行うことができるはずであることも読みました。ただし、これらのアクセス許可を調整する場所はわかりません。 SQL Serverエージェントプロセスの開始に失敗し、次のエラーメッセージが表示されます。 Login failed for user 'NT SERVICE\SQLSERVERAGENT'. Reason: Failed to open the explicitly specified database 'msdb'. [CLIENT: <local machine>] 私のグーグルに基づいて、それはこのアカウントの許可に関係しています。 データベースが破損しているかどうかはわかりませんが、データベースが正常な状態にあると表示されます。SQL Serverエージェントのログインは、sysadminとpublicグループの一部です。

5
SSMSでサーバーエージェントが見つかりませんでした
私はガイドに従っています-http: //www.sqlchicken.com/2009/07/how-to-create-a-server-side-trace-with-sql-profiler/ステップ8に到達するまで動作しています 次に、新しく作成したスクリプトをスケジュールします。SSMSで、トレースするサーバーに接続します。SQL Serverエージェントに移動して展開し、ジョブフォルダーを表示できるようにします。[ジョブ]フォルダを右クリックして、[新しいジョブ]を選択します。 見つけられませんSQL Server Agent。これをどこでSQL Server Agent表示できますか?現在のユーザーにすべてのアクセス許可を与えました。


1
sysadmin以外のドメインユーザーが所有するSQL AgentジョブからSSISパッケージを実行する
大規模なSSIS展開の一部として、問題なく(SQL Serverエージェント経由で)夜間に実行される2つのSSISパッケージがあります。すべてがWindows認証を使用しており、スケジュールされたジョブはsysadmin(私も)によって所有され、SQL Serverエージェントサービスアカウントとして実行されます。 そのため、データは基本的にsource system ~> transit db ~> staging ~> NDS一晩で処理されます。 私はハンドル、気に2つのSSISパッケージtransit db ~> stagingとstaging ~> NDSデータの特定のセットのために、それぞれの部品。 ドメインユーザー(sysadmin以外)が何かを実行し、source system興味深いデータをにプッシュするtransit dbため、勤務時間中にこの更新されたデータをフェッチして更新する方法が必要NDSです。この人にとって最も簡単な方法は、そのETLは、マクロ対応のExcelブックのボタンをクリックすることで、ODBCを介してSQL Serverに接続し(Windows認証を使用)、ストアドプロシージャを実行します。 ストアドプロシージャは次のようになります。 create procedure dbo.UpdateMaterialInventory as begin execute msdb.dbo.UpdateMaterialInventory; end [msdb]の「姉妹」ストアドプロシージャは次のようになります。 create procedure dbo.UpdateMaterialInventory with execute as 'SqlAgentProxy' as begin execute msdb.dbo.sp_start_job N'NDS-ManualMaterialInventory'; end この[SqlAgentProxy]ユーザーは、ドメインユーザーのログインから[msdb]で作成したWindowsユーザーでexecute、このUpdateMaterialInventoryプロシージャへのアクセス許可を付与しました。これにより、ドメインユーザーににexecute許可を与える必要がなくなりますmsdb.dbo.sp_start_job。 SQL AgentジョブNDS-ManualMaterialInventoryはドメインユーザーが所有し、2つのステップがあり、それぞれ[SQL Server Integration …

6
ジョブ開始時刻を指定してSQL Serverで実行中のジョブを確認するスクリプト
Job Start Timeを使用してSQL Serverで実行中のジョブを表示するスクリプトを作成する方法 SELECT sj.name, sja.run_requested_date, CONVERT(VARCHAR(12), sja.stop_execution_date-sja.start_execution_date, 114) Duration FROM msdb.dbo.sysjobactivity sja INNER JOIN msdb.dbo.sysjobs sj ON sja.job_id = sj.job_id WHERE sja.run_requested_date IS NOT NULL ORDER BY sja.run_requested_date desc;

2
SQLエージェントジョブの詳細な出力を取得する
サーバー上のすべてのデータベースのインデックスを再作成するメンテナンスプランを実行するSQL Serverエージェントジョブがあります。最近、これは失敗しましたが、ジョブ履歴は問題を診断するのに十分な情報を提供していません。 ジョブ履歴に「ジョブが失敗しました」と表示されます。ジョブはユーザーfoo \ barによって呼び出されました。実行する最後のステップはステップ1(インデックスの再構築)でした。 詳細ウィンドウには、次の形式の複数のメッセージがあります。 Executing query "ALTER INDEX [something] ON [a...".: 0% complete End Progress Progress: 2015-03-15 22:51:23.67 Source: Rebuild Index Task 実行中のSQLステートメントは切り捨てられており、ステートメントの出力も切り捨てられているため、どの特定のステートメントが失敗したのか、その理由を特定できないと思います。これらのメッセージの全文を抽出する方法はありますか?

5
SQL Agentジョブを視覚化するための優れたツールは何ですか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、データベース管理者のStack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 エージェントジョブを管理するための組み込みのMS SQL Studioツールは、少しイライラするものです。役に立つツールはありますか? ちなみに、このようなツールで見たいものが3つあります。 どのジョブがいつ、どのくらいの期間実行され、成功したかどうかのグラフィカルな要約。 ジョブアクティビティモニターのような現在のステータスビュー。ただし、ほぼリアルタイムで更新されます。 ジョブを複製または変更するためのより便利なインターフェイス(たとえば、モーダルダイアログによってブロックされることなく2つのジョブステップを比較する)。 これを処理するための小さなアプリを書くのはおそらく簡単でしょうが、誰かがすでにそれをすでに行っており、それをより良くしているでしょう。 これは明らかに主観的な質問なので、ある種のmodが過去をさまよう場合は、気軽にCWにしてください。

4
SQL Serverエージェントを使用して、データベース以外のタスクもスケジュールしています-これは悪い考えですか?
私はDBA(および多くの場合、事実上のsysadmin)であるため、SQL Serverは、定期的に作業する必要があるほとんどすべてのサーバーにインストールされます。最近、ネイティブWindowsタスクスケジューラではなく、ほとんどすべての場合にジョブスケジューラとしてSQLエージェントを使用していることに気付きました。 私の観点から見ると、SQLエージェントには、ネイティブのWindowsタスクスケジューラーよりも多くの利点があります。 リモート(私のワークステーションから)タスクの開始/停止/監視 共有スケジュール(各タスク自体ではなく) 複数のステップと制御フロー さまざまな種類のタスク 失敗/完了のアラート 異なるユーザーとして動作するように構成できます (中程度)エラーコードではなく、説明的なエラーメッセージ しかし、これは悪い習慣であるという感覚から逃れることはできません-SQLエージェントはデータベース関連のタスクのためだけに予約する必要があり、その使いやすさを嫌いながらも、WindowsレベルのタスクスケジューラでOSレベルのタスクを実行したままにする必要があります。 この方法でSQLエージェントに依存しても大丈夫ですか?そうでない場合、探している機能の一部を取得するために、サードパーティのWindowsタスクスケジューラを検討する必要がありますか?

2
SQLエージェントはnext_run_date / next_run_time値をいつどのように更新しますか?
msdbデータベースのsp_add_jobscheduleプロシージャを使用して、SQLエージェントジョブに新しいスケジュールを追加するために、T-SQLのコードに取り組んでいます。新しいスケジュール(通常は特定の日時に1回だけ)を追加し、すぐにsysjobschedulesとsysschedulesの値を見ると、新しいスケジュールが追加され、SQLエージェントのjob_idに関連付けられていることがわかりますジョブ。ただし、next_run_dateおよびnext_run_timeの値には0が含まれています。私が戻ってきて、2、3分後に再びそれらを見ると、彼らはまだそれらに0を示しています。ただし、さらに5分または10分後に戻ってくると、次にスケジュールされた実行に対応する日付と時刻の値が正しく表示されるようになりました。 だから私の質問は: これらの値はどのくらいの頻度で更新されますか? これらの値を更新するプロセスは何ですか? たとえば、1分後のスケジュールを追加する場合、next_run_date / timeがまだ更新されていないため、ジョブが実行されないということですか? 新しいスケジュールを追加するために使用するコードの例: exec msdb.dbo.sp_add_jobschedule @job_id = @jobID , @name = @JobName , @enabled = 1 , @freq_type = 1 , @freq_interval = 0 , @freq_subday_type = 0 , @freq_subday_interval = 0 , @freq_relative_interval = 0 , @freq_recurrence_factor = 0 , @active_start_date = @ScheduleRunDate , …


1
SQL Server 2014 ExpressとAdvanced Servicesは実際に全文検索をサポートしていますか?
SQL Server 2014 Expressエディションと高度なサービスをインストールしました。全文検索機能を試してみたいと思っていました。ここで、全文検索が2014 Express Editionでサポートされていることを読みました。しかし、フルテキストインデックスをインストールして作成しようとすると、このバージョンのSQLサーバーではフルテキストインデックスがサポートされていないというエラーが表示されます。 全文索引は実際にサポートされていますか?間違ったバージョン(高度なサービスではない)をインストールする可能性はありますか?念のため、アンインストールと再インストールを2回行いましたが、どちらも同じ問題です。Advanced Servicesインストーラーを使用してインストールすることに同意します。 Windows 7、64ビットを使用しています。

2
別のSQLアカウントとして実行されるSQLジョブステップ
別のSQLログインアカウントとして実行されるSQLジョブステップを設定する方法に興味があります。既存の資格情報を必要とする新しいプロキシアカウントを設定する必要があるようです。資格情報を作成するときの唯一の選択肢は、Windowsログイン資格情報を使用することです。 私が実行しようとしているジョブは以下のとおりです。他にもステートメントがありますが、SQLログインとして実行するようにジョブステップを設定すると失敗します。 insert into [dbo].[TableA] SELECT ss.[Ref_ID] ,mm.[studentID] ,mm.[studentPersonID] ,mm.[studentFirstname] FROM [dbo].[TableB] mm left outer join [dbo].[TableC] ss on ss.parentPersonID=mm.parentPersonID and mm.studentPersonID = ss.studentPersonID where ss.Ref_ID is not null; これがSQLジョブステップを介して実行されると、失敗します。 Executed as user: an_admin_account. Access to the remote server is denied because the current security context is not trusted. [SQLSTATE …

2
1つのメインジョブから複数のSQL Serverエージェントジョブを順番に呼び出す良い方法は?
順次実行する必要があるSQL Serverエージェントジョブがいくつかあります。実行する必要があるジョブの概要をわかりやすくするために、への呼び出しで他のジョブを呼び出すメインジョブを作成しましたEXEC msdb.dbo.sp_start_job N'TEST1'。はsp_start_job即座に終了しますが(ジョブステップ1)、TEST1次のジョブを呼び出す前に、ジョブが終了するまでメインジョブを待機させます。 そのため、ジョブが呼び出された直後に実行を開始し(ジョブステップ2)、メインジョブを強制的にサブジョブが完了するまで待機させる次の小さなスクリプトを記述しました。 WHILE 1 = 1 BEGIN WAITFOR DELAY '00:05:00.000'; SELECT * INTO #jobs FROM OPENROWSET('SQLNCLI', 'Server=TESTSERVER;Trusted_Connection=yes;', 'EXEC msdb.dbo.sp_help_job @job_name = N''TEST1'', @execution_status = 0, @job_aspect = N''JOB'''); IF NOT (EXISTS (SELECT top 1 * FROM #jobs)) BEGIN BREAK END; DROP TABLE #jobs; END; これは十分に機能します。しかし、私はよりスマートで安全な(WHILE 1 = …

2
ジョブカテゴリのいずれかのジョブが失敗したときにアラート
SQL Server 2008で、特定のカテゴリのジョブが失敗したときに電子メールを送信するアラートを設定することはできますか? SSRSサブスクリプションが失敗するたびに電子メールをセットアップしたいと思っています。これらのサブスクリプションはすべて、カテゴリReport Serverのジョブです。 編集 -SSRSサブスクリプションが失敗しても、ジョブ自体は失敗しないことが判明したため、私の質問はSSRSサブスクリプションの監視の使用には適用されません。しかし、私は私たちの環境で実行している他の仕事についてまだ知りたいです

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.