- PR -

[VB.NET]WindowsフォームからのDTSパッケージの実行

投稿者投稿内容
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 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さんの書き込み (2005-05-17 12:45) より:

私のソースは下記のようにしています。
 Dim intCookie As Integer
 cpPoint.Advise(PES, intCookie)
 ...
 Catch exc As Exception


私もatokさんと同じコードを試しましたが、動作しました。
引用:

.netのヘルプを参照してみると
「コネクション ポイントと呼び出し元のシンク オブジェクト間に
アドバイザリ コネクションを確立します。」とありました。
WEBアプリの場合は必要ないのでしょうか?


アドバイザリコネクションを通じてDTSのライブラリと通信をするのだと思います。
atok
常連さん
会議室デビュー日: 2004/05/11
投稿数: 32
お住まい・勤務地: TOKYO
投稿日時: 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 ]
atok
常連さん
会議室デビュー日: 2004/05/11
投稿数: 32
お住まい・勤務地: TOKYO
投稿日時: 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の設定を変更することで、問題は解決されたようです。

私の場合、設定は既に行っていますので違う問題と思います。

引き続き、調査を行います。
困ったなぁ。。
atok
常連さん
会議室デビュー日: 2004/05/11
投稿数: 32
お住まい・勤務地: TOKYO
投稿日時: 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サーバ側の問題のような気がします。。
atok
常連さん
会議室デビュー日: 2004/05/11
投稿数: 32
お住まい・勤務地: TOKYO
投稿日時: 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 ]
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2005-05-18 12:43
こんにちは。
解決されたようで何よりです。

私も認証で躓いたクチです。

LoadFromSQLServerメソッドの引数がC#のサンプルコードでは
DTSSQLServerStorageFlags.DTSSQLStgFlag_UseTrustedConnection
となっていて、初めそれに気づかずずいぶん悩みました。

初めに例として出しておけば早期解決のきっかけに
なったかもしれませんね。
atok
常連さん
会議室デビュー日: 2004/05/11
投稿数: 32
お住まい・勤務地: TOKYO
投稿日時: 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 ]

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