- ベストアンサー
ASPとSQLServerの連携方法
比較的初心者です。ゆえに、環境のことはどうも弱くて困ります。 ASPとSQLの連携方法なんですが、 直接ODBCでつなぐ方法と、そうでない方法があるんですか。 そうでないのはどんなんで、メリットデメリットはなんでしょうか。 ちなみに、使用環境はWIN2000Server(IIS5.0)とSQL7.0です。 ある程度(数千人)の会員管理ができるサイトを作る場合を想定してご回答ください。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
すいません。MTSに関してはおっしゃっている程度の知識しか持ち合わせておりません。 ただ、MTSは、DBのトランザクションではなく、コンポーネントのトランザクションだったと思います。(つまりプログラムでの処理をコミットしたり、ロールバックする)そのために結果的に、複数のDBをサポートすることになりますね。 MTSはWin2000にもあります。(標準だったか、追加インストールかは忘れました。)CDのどこかにあると思います。 MTSの本としては、ソフトバンク社から、電話帳のような分厚い本が出ていたと思います。(NT4のものですが、基本は変わらないはずです) あと複数DBのトランザクションですが、MTSでするのも一つですが、今の主流は、DBのほうで持っている分散処理で行うほうが簡単だと思います。2フェーズコミットなどの方法で実現されています。DB側で分散処理を行えば、アプリケーション側は、ADOによる単一の接続で大丈夫なので、アプリケーションの構築が簡単になると思います。
その他の回答 (3)
- itohh
- ベストアンサー率45% (210/459)
こんにちは。itohhといいます。 すこし確認したいのですが、 1.既存のDBまたはDBの設計は終了している。 2.複数のDBに分かれている。(1つのDB内に複数のテーブルがある) 3.複数DBにまたがった処理が必要である。 以上を前提にお話しします。 この場合、ADOとかODBCを使用してどうにかするというよりSQL Serverの分散クエリ を使用して行うべきではないでしょうか? わたしの専門は、oracleなので分散クエリの詳しいことはわかりませんが、 MSDNライブラリなどを参考にされると良いと思います。サンプルなどもあります。 余計なことかもしれませんが、 会社のサイト構築をお考えならば、専門のコンサルタントに設計だけでも 一緒にサイト構築に参加してもらったほうがよろしいのではないでしょうか? レスポンス、セキュリティなどの面からも最適な助言が得られると思いますから。 ちなみに、 >MTSとやらで「ページ単位」のトランザクションが可能だとあります。 残念ながらMTSはDB操作だけを管理するものではありません。 端的に申し上げるとFORMタグの内容を読み込むobjectや 書き込むobjectなどの管理をするものです。自作のCOM(ActiveX) などをobjectとしてVBScriptの中で使用した場合も管理してくれます。
補足
ご回答ありがとうございます。 前提としてあがっている項目は、その通りです。 >この場合、ADOとかODBCを使用してどうにかするというよりSQL Serverの分散クエリ >を使用して行うべきではないでしょうか? どうもそのようです。どうも私がいろいろ混同というか混乱していたようです。 ちなみに、事情を説明しますと、会社のサイト構築ではなく個人ベースでのサイト構築 (なのにきちんと作ろうというのが厄介なのですが・・・)で、 間もなく友人のコンサルタント数名にも参画(無料)してもらう予定です。 んが、コンサルとのコミュニケーション上、最低限の知識は用意しておかんといかんということで、 企画者としてむやみに悩んでいる次第です。 私個人では、システム構築に関しては業務設計・DB設計と、非常に整った環境下でのプログラミングまで しか経験がないので、ミドルウェアだなんというところは素人同然でして、的を得ない質問を投げかけて しまいました。なんだか言い訳がましくなってきたので、この辺で。 ご回答ありがとうございました。
- msystem
- ベストアンサー率42% (79/186)
ASPからデータベースへのアクセスには、ミドルウェアと言うものを使います。 相手のデータベースにもよりますが、SQL Serverなら普通、ADOを使用します。 ADOは非常に汎用的な使い方ができ、データベースのみならず、ファイルなどにもアクセスできます。 多分お問い合わせの内容は、このADOからSQL Serverへの接続方法になると思います。 ADOからSQL Serverへの接続形態は、代表的なもので下の2つがあります。 ・ADO-ODBC-ODBCドライバ-SQL Server ・ADO-OLE DB-SQL Server メリットととしては、上記のとおり、とおるプログラムの数が少ないので、速度の面で有利です。また、ODBCはどのデータベースでも接続できると言うのがメリットですが、そのために特定のデータベースの制御に制限があります。 デメリットとしては、ODBCに比べ歴史が浅いため、バグ(?)の心配や、参考書などの不足があげられます。 ただし、次の.NETで名前は変わるかもしれませんが、流れとしては、MSの主力はODBCからOLE DBへ移っていくのは間違いないと思います
補足
なるほど、なるほど。 素人なりに、昨日自分でも調べたところ、 ADOを使用すれば、それなりのトランザクション機能持っていると。 でも、ADOのConnectionオブジェクトは一つのデータースしか接続しないから、 複数のデータベースに接続する場合は、それでは不十分だと。 その場合はMicrosoft Transaction Server(MTS)とやらを使えとか書いてありますが、 これがまたよくわかりません。大体、NTじゃなくて2000なので、そのMTS自体見当たらないし。 でもそのMTSとやらで「ページ単位」のトランザクションが可能だとあります。 と、なると、単一DBを使うなら、ADOだけでよくって、複数DBを使うならMTSが必要ってことでしょうか。この認識正しいですか? で、MTSって何じゃらほい。WIN2000でのそういった複数DBに対するトランザクション機能を 実現するにはどうすればいいのか、 どこかに書いてあったり、本があったりしませんでしょうか。 よろしくご回答のほどお願いします。
- selenity
- ベストアンサー率41% (324/772)
IISであればASP(Active Server Pages)が使えるので ADO(ActiveX Data Object)からSQLOLEDBを 使用してSQLServerへ接続します。 詳しくはASP本を読むのが早いでしょう。 Server.CreateObject(ADODB.Connection) Server.CreateObject(ADODB.Recordset) ADODB.Connectionを使用して、SQLServerへ接続し、 ADODB.Recordsetを使用してレコードセット(データ) の取得をします。 のあたりを使用したはず、、、
補足
ご回答ありがとうございます。お返事遅れてすみません。 >あと複数DBのトランザクションですが、MTSでするのも一つですが、今の主流は、DBのほうで持っている分散処理で行うほうが簡単だと思います。2フェーズコミットなどの方法で実現されています。DB側で分散処理を行えば、アプリケーション側は、ADOによる単一の接続で大丈夫なので、アプリケーションの構築が簡単になると思います。 あ、素人にはそういう表現のしかたがわかり易くて助かります。 そうですよね、それでできますもんね。 じゃあ、どういう時にMTSを使う必要があるんでしょう。 しろうとにはわかりませんが、とりあえず今回の質問の範疇を超えそうなので、 また今度にします。ご回答ありがとうございました。