- - PR -
SQLSever2005のDTSをVS2003から起動したい
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-07-11 11:09
いつもお世話になっております。
SQLSever2005のDTS機能をVS2003から動かそうとし、DTSのパッケージも作成し、そのパッケージを実行するためのDLLを使用しようとしましたが、以下の点でエラーが出てしまいました。 DTS機能の「Microsoft.SQLServer.ManagedDTS.dll」がFrameWork2.0で作成されている。 VS2003上で参照設定に追加しようとすると、エラーメッセージが出てしまいます。 (参照を追加する際は、.NETにはないので自分でパスを指定して追加しました) エラーメッセージ 「Microsoft.SQLServer.ManagedDTS.dllへの参照を追加できませんでした。これは有効なアセンブリまたはCOMコンポーネントではありません。拡張子'dll'を持つアセンブリまたはCOMコンポーネントのみを参照することができます。ファイルがアクセス可能で、有効なアセンブリまたはCOMコンポーネントであることを確認してください。」 VS2005の環境では、参照設定の.NETにDLLがありましたので、それを追加してみましたが問題なく追加でき、問題なく使用できました。 (ならVS2005で作成すればいいのでは。という話は要件上できません。我侭ですみません) いろいろ調べてみて、VB.NETコンパイラ(vbc.exe)で、対象のDLLをコンパイルすれば.NETのアセンブリとして参照に追加されるとありましたので、「csc.rsp」に追加して実行してみましたが、結果は変わりませんでした。 どのような作業を行えば使用できるようになるのでしょうか? わかる人がおりましたら、教えていただければ本当に助かります。 よろしくお願い致します。 補足 VS2005の使用方法は以下のMSDNで紹介されていましたので、同じことをVS2003でしたいと思ってくださるとありがたいです。 プログラムによるローカル パッケージの読み込みと実行 http://msdn2.microsoft.com/ja-jp/library/ms136090.aspx [ メッセージ編集済み 編集者: YOSHI 編集日時 2007-07-11 11:20 ] | ||||
|
投稿日時: 2007-07-11 12:14
やろうとしている事の詳細が分からないので断定はできませんが、多分無理です。
現在の .NET Framework の制限の一つに「同一プロセスに別バージョンの CLR をロードできない」というのがあります。 従って、今回の例では、Visual Studio 2003 で作成しようとしている何かは CLR 1.1 上で動作し、Microsoft.SQLServer.ManagedDTS.dll は CLR 2.0 上で動作するわけですが、最初のアセンブリ(ここでは Visual Studio 2003 で作成しようとしている何かとします)が、CLR 1.1 をロードしてしまっているので、同じプロセスに CLR 2.0 をロードできず、基本的に Microsoft.SQLServer.ManagedDTS.dll は動作しないはずです(若干の頑張りは見せるかもしれませんが)。 現状では、同一プロセス上で動く全てのアセンブリの「対象 .NET Framework のバージョン」は合わせるしかありません。 厳密には、合わせるべきは .NET Framework のバージョンではなく、CLR のバージョンである事に注意してください。例えば、.NET Framework 2.0 と .NET Framework 3.0 のアセンブリは同居可能です。CLR のバージョンが同一であるため。 _________________ 囚人のジレンマな日々 | ||||
|
投稿日時: 2007-07-11 14:49
囚人さん、回答ありがとうございます。
CLRのバージョンが違っても動かせればよかったのですが、完全に否定されているのならば仕方ありませんね・・・。 なんとか、CLR1.1に偽装できないものですかね。 他の方法として、 同一プロセスでなければいいということで、VS2005でDTS呼出機能のEXEを作成し、VS2003でそのEXEを実行してみました。 これならばうまく実行できました。(引数や戻り値あたりで課題が残っていますが) Frameworkが2.0も必要になったり、VS2005も必須になったり問題な気もしますが、とりあえずはこの方法を考えてみたいと思います。 回答ありがとうございました。 | ||||
|
投稿日時: 2007-07-11 17:49
たぶん向学心のためにDTSパッケージをASPから動かすなんてすごいことをやっているので感動します。
私なら、データのインポートならば、bulkinsert のSQL文をASPから発行させて簡単に終わらせてしまうとこです。 | ||||
|
投稿日時: 2007-07-12 09:24
yawata133さんありがとうございます。 向上心のためだなんて・・・。単に今までSQLServer2000とVS2003で動かしてたシステム(DTSパッケージはプログラムから起動)がありまして。 それのDBだけSQLServer2005に変える必要があったのでこんな事態に陥ってしまったわけです。 SQLServer2000で作成したDTSパッケージからSQLServer2005のDBが操作できれば一番よかったのですが、できなかったため(ここが根本的に間違ってたりして)DTSパッケージもSQLServer2005用に移行しました。 整理しますと。 @VS2003、SQLServer2000で動いているシステムがある。(DTSパッケージ使用) ASQLServer2000をSQLServer2005にバージョンアップする事になった。 BSQLServer2000のDTSパッケージがSQLServer2005で使用できなかったので、 新しくSQLServer2005で作成した。 CVS2003から、新しく作成したSQLServer2005のDTSパッケージが使用できなかった。 です。 (なんでVSも、2005に変えてくれなかったんだろう・・・) 駄文失礼しました。 |
1