- - PR -
[VB.NET]WindowsフォームからのDTSパッケージの実行
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-05-17 14:55
こんにちは。
VB.NET+ASP.NETで確認をしてみました。 http://support.microsoft.com/default.aspx?scid=kb;ja;321525 に出ているサンプルコードが そのまま動きました。 0.テスト用のDTSパッケージを新規作成 1.新規にASP.NET Webアプリケーションを作成 2.Microsoft DTSPackage Object Library への参照を追加 3.コードに下記のimportsステートメントを追加 Imports System.Runtime.InteropServices Imports DTS 4.Webフォームにボタンを貼り付け、クリックイベントを作成し、サンプルの [3. Sub Main プロシージャに次のコードを挿入します。] に記載のコードをコピペ。 5.LoadFromSQLServerメソッドの"<server>", "<user>", "<password>", <package name>"を環境に合わせて変更 6.プロジェクトにPackageEventsSinkクラスを追加 7.ビルド&実行 webとは関係のないConsole.WriteLineの部分以外は上記手順で問題なく動作します。
私もatokさんと同じコードを試しましたが、動作しました。
アドバイザリコネクションを通じてDTSのライブラリと通信をするのだと思います。 | ||||||||
|
投稿日時: 2005-05-17 16:03
ueさん、お返事ありがとうございます。
実際に確認までして頂いて恐縮です。 ueさんの書かれた通りに作業を行い、 Console.WriteLine...と Console.ReadLine...のすべてをコメントアウトし、 実行した結果、状況は変わらず、 DTSパッケージを実行する事が出来ませんでした。。 (ueさんは出来たのに困りました。。) デバックを取り確認すると、 pkg.Execute()から PackageEventsSinkクラスの Overridable Overloads Sub OnQueryCancel...に 移動してしまいます。 1つ気になったのですが、環境の問題があるのかもしれません。。 (私の環境を書くのがずいぶんと遅くなりましたすみません) ------------------------------------------------- SQL Server OS:Windows2003 SBS Standard Edition SQL Server :SQL Server2000 クライアントOS:Windows2000 Pro SP4 IIS:クライアントOS内(←ここが問題でしょうか?) DTSパッケージ:SQL Server内のテーブルAからテーブルBにデータをコピー (テーブルAとテーブルBの両方に全ての権限を設定しています) ------------------------------------------------- クライアントのIISからSQLサーバを参照している形になっています。 申し訳ありませんが、アドバイスをよろしくお願いします。 [ メッセージ編集済み 編集者: atok 編集日時 2005-05-18 10:57 ] | ||||||||
|
投稿日時: 2005-05-18 11:12
こんにちわ。
ASP.NETからDTSパッケージを実行する事が出来ない件に関して 下記の情報を見つけましたので記載させてもらいました。 [GotDotNet Japanさんの掲示板に記載されていました。] スレッド: ASP.NET から、SQL server のDTSパッケージを実行したい http://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=19492#19599 こちらのケースは、SQLサーバにアクセスする際の問題だったようで Web.Configの設定を変更することで、問題は解決されたようです。 私の場合、設定は既に行っていますので違う問題と思います。 引き続き、調査を行います。 困ったなぁ。。 | ||||||||
|
投稿日時: 2005-05-18 11:39
SQLサーバ側で、DTSパッケージのログを取るように設定をし、
.NETを実行してみました。 んん? 状態がXになってエラーが起こっていました。 エラーの説明は下記の通りです。 ------------------------------------------------------------------ ステップ エラー ソース: Microsoft OLE DB Provider for SQL Server ステップ エラーの説明:ユーザー '(null)' のログインに失敗しました。 理由 : SQL Server の信頼関係接続に関連付けられていません。 ステップ エラー コード: 80004005 ステップ エラー ヘルプ ファイル: ステップ エラー ヘルプ コンテキスト ID:0 ------------------------------------------------------------------ 先程、自分で投稿した内容に関係ありげなエラーメッセージです。。 Web.Configの設定は行っているのですが、 その他にSQLサーバ側で何か設定を行わなくてはならないのでしょうか? どうもSQLサーバ側の問題のような気がします。。 | ||||||||
|
投稿日時: 2005-05-18 12:20
解決しました。
DTSパッケージ作成時、サーバ認証設定がありますが、 そちらの設定がWindows認証で設定されていた為のエラーでした。 正しくは、SQL認証でDTSパッケージを作成しなければいけません。 (Webアプリなので当たり前ですね。。すみません。) これで、Microsoft サポートオンライン [HOWTO] Visual Basic .NET での DTS パッケージ イベントの使用方法 を利用して、SQLサーバ側にDTSパッケージを正しく作成すれば Webアプリからも利用できそうです。 私事なのですが、最終目的はSQLサーバからIBM社から発売されている AS400(データベース:DB2)へDTSパッケージを利用して データを転送する事なので、もう少し調査を進めます。 えムナウさん、ueさん、ご教示ありがとうございました。 感謝です。 [ メッセージ編集済み 編集者: atok 編集日時 2005-05-18 13:37 ] | ||||||||
|
投稿日時: 2005-05-18 12:43
こんにちは。
解決されたようで何よりです。 私も認証で躓いたクチです。 LoadFromSQLServerメソッドの引数がC#のサンプルコードでは DTSSQLServerStorageFlags.DTSSQLStgFlag_UseTrustedConnection となっていて、初めそれに気づかずずいぶん悩みました。 初めに例として出しておけば早期解決のきっかけに なったかもしれませんね。 | ||||||||
|
投稿日時: 2005-05-18 13:40
ueさん、こんにちわ。
DB2へのデータ転送も正常に行われて 問題は全て解決しました。 ありがとうございました。 ------------------------------------------------------------------- 蛇足かもしれませんが、SQLサーバからAS400へ DTSパッケージを利用して、データ転送を行う際、 文字属性の設定によりエラーが発生してしまうことがあります。 詳しくは、SQL Server ユーザーグループ[PASSJ] 「PASSJ掲示板-SQL Server1年生-」 に記載してありますので、そちらをご覧下さい。 タイトル:DTSパッケージを利用した、SQLServerからAS400へデータ転送 ハンドルネーム:atok 投稿日時:2005/05/17 10:59:34 メッセージNo:No.3028 ご報告まで。 [ メッセージ編集済み 編集者: atok 編集日時 2005-05-19 15:42 ] |