@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

VB2005から SQLServerのジョブ

1
投稿者投稿内容
なび
ぬし
会議室デビュー日: 2007/08/27
投稿数: 273
投稿日時: 2007-11-21 17:15
先程は、ありがとうございました。
申し訳ありません、もう1点 お願いします。

VB2005 + SQLServer2005の環境です。

1.まずSQLServer2005のSSISにてパッケージを作りました。
 内容はSQLServer同士(AサーバーからBサーバー間)
 のテーブルの変換です。

2.次にSQLServer2005で1で作りましたパッケージを実行する
 ジョブを作成しました。

3.次にVB2005にてジョブを実行するプログラムをコーディングしました。
 実行方法は sp_start_jobを使います。(msdnを参考にしました)


ここまではOKなのですが、

そこで、お聞きしたいことが2つあります。

1点目は、ジョブを実行しますがジョブが失敗しているにも係わらず
 正常の戻り値を返してしまいます。エラーを感知させたいのですが
 どうするとようのでしょうか?
 (テストの為、Null値を変換しようとしました)

 コードは下記の通りです。

    jobCommand = New SqlCommand("sp_start_job", jobConnection)
jobCommand.CommandType = CommandType.StoredProcedure

jobReturnValue = New SqlParameter("@RETURN_VALUE", SqlDbType.Int)
jobReturnValue.Direction = ParameterDirection.ReturnValue
jobCommand.Parameters.Add(jobReturnValue)

jobParameter = New SqlParameter("@job_name", SqlDbType.VarChar)
jobParameter.Direction = ParameterDirection.Input
jobCommand.Parameters.Add(jobParameter)
jobParameter.Value = "JOB"

jobConnection.Open()
jobCommand.ExecuteNonQuery()
jobResult = DirectCast(jobCommand.Parameters("@RETURN_VALUE").Value, Integer)
jobConnection.Close()

Select Case jobResult
Case 0
MsgBox("正常終了")
Case Else
MsgBox("異常終了:" & jobResult)
End Select

実行すると エラーになるはずが 正常終了となってしまいます。
しかし、ジョブをSQLServerで実行するとエラーになります。


そして2点目が
SQLServerのジョブの実行するSSISパッケージの接続マネージャの変換先のサーバー名を
VBのコードから動的に変更したいのですが、そのコーディングを教えて欲しいのです。


どなたかお力をお貸し頂けないでしょうか。
宜しくお願いします。



じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-11-21 18:06
引用:

なびさんの書き込み (2007-11-21 17:15) より:

1点目は、ジョブを実行しますがジョブが失敗しているにも係わらず
正常の戻り値を返してしまいます。エラーを感知させたいのですが
どうするとようのでしょうか?
(テストの為、Null値を変換しようとしました)


ジョブのプロシージャの中で何もしていないからではないでしょうか。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
なび
ぬし
会議室デビュー日: 2007/08/27
投稿数: 273
投稿日時: 2007-11-21 19:24
じゃんぬねっとReありがとうございます。

ジョブのプロシージャの中で何もしていないからではないでしょうか

とは具体的にどういうことなのでしょうか?

未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2007-11-21 20:29
引用:

SQLServerのジョブの実行するSSISパッケージの接続マネージャの変換先のサーバー名をVBのコードから動的に変更したいのですが、そのコーディングを教えて欲しいのです。


Integration Services プログラミング - プログラムによる接続の追加でなんとかできるかも知れないですね。(やったことないです。)

VBのコードから動的に変更したいというのはなぜですか? パッケージ内に特定の接続先サーバー名が埋め込まれているのは美しくないとか、そういった理由でしょうか。そのような理由なら UDL を介して、接続設定を外部ファイルにするという方法もありだと思います。
なび
ぬし
会議室デビュー日: 2007/08/27
投稿数: 273
投稿日時: 2007-11-22 10:01
未記入さん、ありがとうございます。

紹介頂いたサイトも見ましたが
なかなかどうジョブに反映させるのか解らず・・

リモートパッケージの実行の
コーディングで止まったままなのです。

サーバーを動的に変えたいのは
パッケージをAサーバーに配置し
Bサーバーからリモートパッケージ実行します。

そこでCサーバー(例えば東京にある)、Dサーバー(大阪にある)
から起動させた場合SSISの変換先のサーバーを変えて実行させたい
からなのです。

Bサーバー用、Cサーバー用、Dサーバー用と
別々に作らず1つのパッケージで接続先を変更して
使用したいのです。

なんとか、お力をお借りして2つの問題を
解決したいのですが・・

すいません、宜しくお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)