• ベストアンサー

ASPとSQLServerの連携方法

比較的初心者です。ゆえに、環境のことはどうも弱くて困ります。 ASPとSQLの連携方法なんですが、 直接ODBCでつなぐ方法と、そうでない方法があるんですか。 そうでないのはどんなんで、メリットデメリットはなんでしょうか。 ちなみに、使用環境はWIN2000Server(IIS5.0)とSQL7.0です。 ある程度(数千人)の会員管理ができるサイトを作る場合を想定してご回答ください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • msystem
  • ベストアンサー率42% (79/186)
回答No.3

すいません。MTSに関してはおっしゃっている程度の知識しか持ち合わせておりません。 ただ、MTSは、DBのトランザクションではなく、コンポーネントのトランザクションだったと思います。(つまりプログラムでの処理をコミットしたり、ロールバックする)そのために結果的に、複数のDBをサポートすることになりますね。 MTSはWin2000にもあります。(標準だったか、追加インストールかは忘れました。)CDのどこかにあると思います。 MTSの本としては、ソフトバンク社から、電話帳のような分厚い本が出ていたと思います。(NT4のものですが、基本は変わらないはずです) あと複数DBのトランザクションですが、MTSでするのも一つですが、今の主流は、DBのほうで持っている分散処理で行うほうが簡単だと思います。2フェーズコミットなどの方法で実現されています。DB側で分散処理を行えば、アプリケーション側は、ADOによる単一の接続で大丈夫なので、アプリケーションの構築が簡単になると思います。

honoda
質問者

補足

ご回答ありがとうございます。お返事遅れてすみません。 >あと複数DBのトランザクションですが、MTSでするのも一つですが、今の主流は、DBのほうで持っている分散処理で行うほうが簡単だと思います。2フェーズコミットなどの方法で実現されています。DB側で分散処理を行えば、アプリケーション側は、ADOによる単一の接続で大丈夫なので、アプリケーションの構築が簡単になると思います。 あ、素人にはそういう表現のしかたがわかり易くて助かります。 そうですよね、それでできますもんね。 じゃあ、どういう時にMTSを使う必要があるんでしょう。 しろうとにはわかりませんが、とりあえず今回の質問の範疇を超えそうなので、 また今度にします。ご回答ありがとうございました。

その他の回答 (3)

  • itohh
  • ベストアンサー率45% (210/459)
回答No.4

こんにちは。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の中で使用した場合も管理してくれます。

参考URL:
http://www.microsoft.com/JAPAN/developer/workshop/default.asp
honoda
質問者

補足

ご回答ありがとうございます。 前提としてあがっている項目は、その通りです。 >この場合、ADOとかODBCを使用してどうにかするというよりSQL Serverの分散クエリ >を使用して行うべきではないでしょうか? どうもそのようです。どうも私がいろいろ混同というか混乱していたようです。 ちなみに、事情を説明しますと、会社のサイト構築ではなく個人ベースでのサイト構築 (なのにきちんと作ろうというのが厄介なのですが・・・)で、 間もなく友人のコンサルタント数名にも参画(無料)してもらう予定です。 んが、コンサルとのコミュニケーション上、最低限の知識は用意しておかんといかんということで、 企画者としてむやみに悩んでいる次第です。 私個人では、システム構築に関しては業務設計・DB設計と、非常に整った環境下でのプログラミングまで しか経験がないので、ミドルウェアだなんというところは素人同然でして、的を得ない質問を投げかけて しまいました。なんだか言い訳がましくなってきたので、この辺で。 ご回答ありがとうございました。

  • msystem
  • ベストアンサー率42% (79/186)
回答No.2

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へ移っていくのは間違いないと思います

honoda
質問者

補足

なるほど、なるほど。 素人なりに、昨日自分でも調べたところ、 ADOを使用すれば、それなりのトランザクション機能持っていると。 でも、ADOのConnectionオブジェクトは一つのデータースしか接続しないから、 複数のデータベースに接続する場合は、それでは不十分だと。 その場合はMicrosoft Transaction Server(MTS)とやらを使えとか書いてありますが、 これがまたよくわかりません。大体、NTじゃなくて2000なので、そのMTS自体見当たらないし。 でもそのMTSとやらで「ページ単位」のトランザクションが可能だとあります。 と、なると、単一DBを使うなら、ADOだけでよくって、複数DBを使うならMTSが必要ってことでしょうか。この認識正しいですか? で、MTSって何じゃらほい。WIN2000でのそういった複数DBに対するトランザクション機能を 実現するにはどうすればいいのか、 どこかに書いてあったり、本があったりしませんでしょうか。 よろしくご回答のほどお願いします。

  • selenity
  • ベストアンサー率41% (324/772)
回答No.1

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を使用してレコードセット(データ) の取得をします。 のあたりを使用したはず、、、

関連するQ&A

  • ASPとASP.netの連携について

    ASPで作られたシステムとASP.netで作るシステムの 連携について、ASP初心者で困っています。ご教授ください。 (1)ASPからASP.netの画面遷移はできますか? 可能ならば、どのようにすればできますか? (2)ASPとASP.netではセッションの共有はできない (オーバーヘッドがしやすい等問題があるためしない方がいい)と  いうのを知りました。  画面遷移時に、パラメータを渡したいのですが、  DBに格納という方法以外に、たとえば、  JSPのsubmitで値を飛ばすように、ASPで飛ばしたものを  ASP.netでgetするようなことはできますか? よろしくお願いします。 環境は、OSがWin2000、WEBサーバがIISです。

  • ASPを用いてSQLServerからのデータ取得ができません。

    ASPを使ってSQLServerからのデータ取得ができません。 クライアントのPCから、Webサーバ経由でDBサーバへアクセスすると、 『[Microsoft][ODBC SQL Server Driver]分散トランザクション エラー』 というエラーメッセージが表示されます。 WebサーバとDBサーバが同一PC上にある場合は、問題なく実行できます。 また、同じテーブルを使って、簡単なサンプルコードを実行した場合では、WebサーバとDBサーバが別々のPC上にあっても問題なく動きます。 原因はIIS、もしくはSQLServerの設定にあるのか、それともASPファイルのソース自体にあるのか、わかりません。 どなたかご存知の方、よろしくお願いします。 DBとの接続はADO接続で、環境は、 Webサーバ/WindowsXP Pro、IIS 5.0 DBサーバ/WindowsXP Pro、SQLServer2000 を使っています。

  • SQLServer2000でログインできません

    Windows2000SP4、IISの環境です。 1.SQLServer2000の認証:Windows認証を使用 2.ODBC接続時、 1)接続するサーバ名:Local 2)SQL ServerがログインIDの権限の確認を行う方法は    :ネットワークへのログインIDでWindows NTの認証メカニズムを使う 3.ASPファイルで以下のように記述しています。 Set Conn = Server.CreateObject(\"ADODB.Connection\") Conn.Open \"DSN=*****ODBCで登録した名前\" 4.エラーメッセージ: Microsoft OLE DB Provider for ODBC Drivers (0x80040E4D) [Microsoft][ODBC SQL Server Driver][SQL Server]ユーザー \'*****(私のサーバ名)\' はログインできませんでした。 index.asp, line 22 5.その他 SQLクエリアナライザでは何も問題なく接続できます。 以上、説明が不十分かもしれません。 なぜログインできないか、ご存知の方教えてください。よろしくお願いします。

  • ASP ODBC以外のSQLserver接続方法

    元来ASPでSQLサーバーに接続する際にODBCデータソースに登録されてるデータソース名を指定すると思うのですが、ODBC以外での方法はありますか? また、ある場合は具体的なソース等が記述されているサイトがありましたら教えてください

  • ASPからSQLサーバへの接続について

    しばらくASPから離れておりましたので、ご教授願います。 データベースにSQLサーバ6.5を使っています。 ASPからSQLサーバに接続してデータの登録、変更、削除をしています。 その際に、ASPのソースコードに接続ユーザ名とパスワードを記述しているのですが、 これを記述しないで接続することは可能でしょうか? 可能であれば、その設定方法をお教え願います。 開発環境は以下の通りです。 Windows2000 Prof + IIS + SQL Server6.5

  • ASPを出ぶ方法

    環境:IIS,ASP(VBScript) サーバー WindowsXPpr ASP超初心者です。 とても単純なことですが A.ASPからB.ASPを呼び出すにどうしたらよいのですか? <FORM ACTION="B.ASP" method="post">とかはわかるのですが・・・・・・・・

  • mdbを直接開いてもasp側に影響を与えない方法について

    お世話になります。当方、Windows Server 2003 R2 SP1 で IIS6.0 を使用しています。 サーバ側に設置しているmdbファイルをODBCでシステムDSNに登録し、ASPから 接続しております。 メンテナンスなどで直接mdbファイルを開いている時に、ASPのページに アクセスすると以下のエラーメッセージが出て正常表示が出来なくなります。 ======================================================== HTTP 500.100 - 内部サーバー エラー - ASP エラー インターネット インフォメーション サービス -------------------------------------------------------- エラー タイプ Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Microsoft Access Driver] '(不明)' は既に使用されているので、使用できませんでした。 ======================================================== mdbファイルを直接開いても、ASP側でもエラー表示されないように するにはどうしたらよいでしょうか? ソースは以下のようにしております。 Set cnn=Server.CreateObject("ADODB.Connection") cnn.open "dummy" cnn.close cnn.open "testdb"  '// ODBCをtestdbにしています。 SQL = "SELECT * FROM M_USER ORDER BY USERID" Set rs1 = cnn.Execute(SQL) よろしくお願いいたします。

  • SQLServerにodbcで接続

    こんにちは。 WindowsServer2003でIIS・SQLServer・ASP(VBScript)を使って簡単なデータベースを作りたいのですが、いきないつまずいています。 testデータベースをSQLServerで作り、ODBCに【odbcsqlsv】と登録しました。 ASPスクリプトを <%@ Language=VBScript %> <html> <head> <title>動作テストHTML</title> </head> <body> <% Response.Write "テストーASP" Set cn = server.CreateObject("ADODB.Connection") StrCn ="odbcsqlsv" cn.Open StrCn strSQL = "SELECT * FROM table2" Set RS = cn.Execute(strSQL) Do While Not RS.EOF Response.Write RS.fields("name") RS.movenext Loop cn.close set cn = nothing %> </body> </html> を書き実行すると Microsoft OLE DB Provider for ODBC Drivers エラー '80040e4d' [Microsoft][ODBC SQL Server Driver][SQL Server]ユーザー '(null)' のログインに失敗しました。理由 : SQL Server の信頼関係接続に関連付けられていません。 とエラーが出ます。 SQL Serverの信頼関係接続とは何でしょうか? また関連付けはどのようにして行ったらよいのでしょうか? すみませんが、ご教授のほどをよろしくお願いします。

  • Win2kのServerでASPが動かない

    以下のような状況になって困っています。 Windows2000のProfessionalに IISを導入して、HTMLやASPを動かしています。 こちらでは、特に問題なくHTMLもASPも動いています。 そこで、別のPCでOSが Windows2000 Serverのマシンに同じようにIIS を設定しました。ところが、Serverのほうでは,HTMLはIISを通して見れるの ですが、ASP のファイルを呼ぶと必ず HTTP 500 - 内部サーバー エラー となってしまいます。 HTMLが見えるということはIISが死んでいる、というわけでもないようですし、 IISの仮想フォルダにも、スクリプトの実行権限は与えています。 また、動かないASPは、単純にレスポンスを返しているだけですので、 ODBCまわりの問題でもありません。ASPのマッピングも、外れてません。 で、全然別のPCの Windows2000Serverでは、ASPが動きました。(なぜ?) 今のところ、ASP が動く Windows2000Serverと動かないのとでは、 ORACLE8i(8.1.7)が入っているかどうかぐらいの違いしか分らないのですが (ASPが動かないほうにOracleが入ってます。どっちのWin2kも他人のを  借りてるので、まだ詳しく調べれてないですが) なにかこの辺で情報をお持ちの方はいらっしゃらないでしょうか? (ちなみに、OracleのHTTPサーバサービスは停止させています)

  • perlとphpとASPの連携

    ごくまれなパターンらしいのですが、どなたか知っていた教えてくださいm(__)m ASPからphpを呼んで、phpがperlを呼び、perlがASPを呼ぶ方法です。アバウトな説明で申し訳ないんですが、こんな流れでperlからASPが呼ばれたときに、ASPのサーバー側の処理が無視されてデータベースによる制御が出来ないないんです(;_;) で、perlから隠しASPを呼んでさらにASPを呼ぶようにしてみたら、今度はエラーになって表示されません・・・ なんとかうまく連携できないでしょうか??(TOT)