質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

ADO.NET

ADO.NETは.NET Frameworkで各種データベースへの統一された接続機能を提供するソフトウェアコンポーネントの集合です。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

1回答

7789閲覧

SQLServerエージェントジョブ 実行待ちと実行結果取得

kei5

総合スコア13

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

ADO.NET

ADO.NETは.NET Frameworkで各種データベースへの統一された接続機能を提供するソフトウェアコンポーネントの集合です。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

1クリップ

投稿2016/08/08 06:41

###前提・実現したいこと
VB.NET 2013 でSQLServer2014 のエージェントジョブをキックしています。
そこで以下の事柄についてご教授していただければ幸甚です。
①ジョブが終了するまで、次のコードを実行しないこと
②ジョブの終了結果を取得すること

Windowsデスクトップアプリケーションを作成しているので、
DBが更新される前にSQLServer側のエージェントジョブでBKを
とりたいと考えています。
※エージェントジョブは実行できます。

###発生している問題・エラーメッセージ
エージェントジョブのキック部分を記載しておきますが、
エージェントジョブをキックした後のエージェント終了までの
コード記載方法をご教授していただきたいと考えています。

###該当のソースコード

'接続文字列初期化 cn = "" '+ *** 接続文字列 *** cn &= "Provider=SQLOLEDB;" cn &= "Data Source = xx.xx.xx.xx;" cn &= "Initial Catalog = DB;" cn &= "User ID=TEST; Password=TEST!;" cn &= "Trusted_Connection = False;" 'ADODBオブジェクト作成 mCon = New ADODB.Connection '作業領域をクライアント側に設定 mCon.CursorLocation = ADODB.CursorLocationEnum.adUseClient 'SQLServerオープン mCon.Open(cn) 'エージェントジョブ実行SQL指定 strSQL = "USE msdb EXEC sp_start_job 'テストジョブ'" 'SQLにてエージェントジョブ実行 f = mCon.Execute(strSQL)

###試したこと
エージェントジョブの起動確認結果は取得することは出来ますが、
ググってもエージェントジョブの実行結果を取得する根本的な
方法は検索できませんでした。
ジョブが終了するまで次の処理を実行しないことは
「EXEC msdb..sp_help_job @execution_status=1」を利用して
NAME列を取得することで何とかできそうですが、
そもそもNAME列を1行ずつ調べなくてはならないので、
あまりスマートではないです。。。。
テーブル名が分かればSQL文でNAME列のジョブ名を指定できるのですが、
テーブル名が分からないため、それも出来ない状態です。

###補足情報(言語/FW/ツール等のバージョンなど)
SQLServer 2014
VB.Net 2013

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

sp_help_job は @job_name でジョブ名を指定できるようです

USE msdb EXEC sp_help_job @job_name = 'テストジョブ'

で execusion_statusを調べてみては。(成功とは限らないので)

sp_help_job


余談ですが、VB.NETを使っているならADODBではなく ADO.NETを使った方が良いと思います。(COMをきちんと解放しないとメモリリークになりますし)
今回とは関係ないですがご参考までに。

投稿2016/08/08 13:10

flied_onion

総合スコア2604

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei5

2016/08/08 23:54

ご連絡有難うございます。本日は時間がないのですが、明日以降に試して見ます。それと確かにADO.NETを利用したほうが良いと思いますので、そのあたりも変更してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問