- - PR -
[VB.NET]WindowsフォームからのDTSパッケージの実行
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-08-03 11:34
お世話になります。
まさ1973です。 環境:VB.NET 2003 SQL Server 2000 SQLServer2000のDTSインポート/エクスポート定義をVisualBasicファイルへ出力し、そのファイルをVB.NETのプロジェクトへ追加しました。 すると Public goPackageOld As New DTS.Package Public goPackage As DTS.Package2 の箇所で ”名前空間のステートメントが無効です。”というエラーが発生します。 VB.NETでDTSの参照はできるのでしょうか? できるとすればどのような定義方法をすればいいのでしょうか? パッケージを指定して実行するバッチファイルを作成して実行する方法でできそうな感じはするのですが、できればVB.NETのソースで管理したいです。 どうぞ、よろしくお願いします。 | ||||
|
投稿日時: 2004-08-03 22:35
まさ1973です。
とりあえずは、 後の方法(DTSをコマンドラインでコールするバッチファイルを実行する)で 対処するようにしてます。 引き続き、SQLServer2000で作成した出力ソースをVB.NETで活用する方法があれば(不可能であれば不可能でもかまいませんので)教えてください。 よろしくお願いします。<(_ _)> | ||||
|
投稿日時: 2005-05-13 16:29
こんにちわ。
私もVB.NETから、DTSを実行したいと思うのですが、 (私の場合は、VB.NETのWEBフォームからです。。) 情報が見つかりませんでした。 どなたかご存知の方は、ご教授下さい。 よろしくおねがいします。 | ||||
|
投稿日時: 2005-05-13 18:20
1つ情報を見つけました。
Microsoft サポートオンラインに [HOWTO] Visual Basic .NET での DTS パッケージ イベントの使用方法 http://support.microsoft.com/default.aspx?scid=kb;ja;321525 が公開されていました。 記事を参照しましたが、難しくあまり理解が出来ませんでした。。 文中のサンプルに 1.Visual Studio .NET を開いて新規の Visual Basic コンソール アプリケーション プロジェクトを作成し・・・ とあるので、Windowsフォームでのみ使用可能と思います。 私は、 2.DTSPackage Object (COM) Library への参照を追加が出来ず、前に進めません。。 | ||||
|
投稿日時: 2005-05-13 19:31
プロジェクトの参照設定に、Microsoft DTSPackage Object Library への参照を追加していますでしょうか?
ソリューションエクスプローラの該当プロジェクトの参照設定のフォルダ内にDTSがあるか確認してください。 ない場合は、参照設定のフォルダを右クリック-参照の追加-COMタブ-Microsoft DTSPackage Object Library を選んで選択を押して、OKをおします。 参照設定が追加されてエラーにならないと思います。 | ||||
|
投稿日時: 2005-05-16 17:20
えムナウさん、お返事ありがとうございます。
>プロジェクトの参照設定に、Microsoft DTSPackage Object Library への参照を追加して >いますでしょうか? 参照の追加をしていませんでした。。すみません。 追加をするとエラーが無くなりました。ありがとうございます。 上記サイトを参考に、下記のようなロジックを作成してみたのですが、 処理を実行しても何も起こらず、はまっています。。 (処理をかなり削りました) Imports System.Runtime.InteropServices Imports DTS Public Class WebForm1 Inherits System.Web.UI.Page ボタン1クリック時処理開始 Dim pkg As DTS.Package pkg = New DTS.Package pkg.LoadFromSQLServer("SQLサーバ名", "ユーザ名", "パス", _ DTSSQLServerStorageFlags.DTSSQLStgFlag_Default, _ "", "", "", "DTSパッケージ名", Nothing) pkg.Execute() pkg.UnInitialize() pkg = Nothing 処理終了 引き続き、調査中ですが ご存知の方がいらっしゃいましたら、ご教示の程よろしくお願いいたします。 | ||||
|
投稿日時: 2005-05-16 17:59
こんにちは。
C#ですが、下記のコードで動いています。 他にPackageEventsSinkクラスが必要ですが、
に載っているコードの Console.Writeline 部分をWeb向けになんとかしてやればそのまま使えるはずです。 public void RunDts(string _strSetverName, string _strServerUserName, string _strServerUserPass, string _strPackageName) { Package2Class package; string strSetverName = _strSetverName; string strServerUserName = _strServerUserName; string strServerUserPass = _strServerUserPass; string strPackageName = _strPackageName; try { package = new Package2Class(); UCOMIConnectionPointContainer CnnctPtCont = (UCOMIConnectionPointContainer) package; UCOMIConnectionPoint CnnctPt; PackageEventsSink PES = new PackageEventsSink (); // PackageEvents インターフェイスの UUID Guid guid = new Guid("10020605-EB1C-11CF-AE6E-00AA004A34D5"); CnnctPtCont.FindConnectionPoint(ref guid, out CnnctPt); int iCookie; CnnctPt.Advise(PES, out iCookie); object pVarPersistStgOfHost = null; package.LoadFromSQLServer(strSetverName, strServerUserName, strServerUserPass, DTSSQLServerStorageFlags.DTSSQLStgFlag_Default, null, null, null, strPackageName, ref pVarPersistStgOfHost); package.Execute(); package.UnInitialize(); package = null; } catch(System.Runtime.InteropServices.COMException ex) { throw ex; //Console.WriteLine("COMException {0}\\\\n{1}\\\\n{2}", ex.ErrorCode, ex.Message, ex.StackTrace); } catch(System.Exception ex) { throw ex; //Console.WriteLine("Exception\\\\n{0}\\\\n{1}", ex.Message, ex.StackTrace); } } | ||||
|
投稿日時: 2005-05-17 12:45
ueさん、お返事ありがとうございます。
下記の場所がうまくいかず、処理が行われない状態です。 ※ueさんから頂いたアドバイス通り、PackageEventsSinkも追加しています。 (Console.WriteLine部はWebでは使用できないのでコメント化していますが。。) ueさんのソースで int iCookie; CnnctPt.Advise(PES, out iCookie); の部分を通った後、 catch(System.Exception ex) へ移動してしまい、 肝心な「package.LoadFromSQLServer...」 の処理が行われません。。 .netのヘルプを参照してみると 「コネクション ポイントと呼び出し元のシンク オブジェクト間に アドバイザリ コネクションを確立します。」とありました。 WEBアプリの場合は必要ないのでしょうか? 私のソースは下記のようにしています。 Dim intCookie As Integer cpPoint.Advise(PES, intCookie) ... Catch exc As Exception ちなみに、この部分をコメント化して処理も行ってみましたが、 データは変わりませんでした。 よろしければ、ご教示の程よろしくお願いします。 |