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

このQ&Aに関連する最新のQ&A

A 回答 (4件)

すいません。

MTSに関してはおっしゃっている程度の知識しか持ち合わせておりません。
ただ、MTSは、DBのトランザクションではなく、コンポーネントのトランザクションだったと思います。(つまりプログラムでの処理をコミットしたり、ロールバックする)そのために結果的に、複数のDBをサポートすることになりますね。

MTSはWin2000にもあります。(標準だったか、追加インストールかは忘れました。)CDのどこかにあると思います。

MTSの本としては、ソフトバンク社から、電話帳のような分厚い本が出ていたと思います。(NT4のものですが、基本は変わらないはずです)

あと複数DBのトランザクションですが、MTSでするのも一つですが、今の主流は、DBのほうで持っている分散処理で行うほうが簡単だと思います。2フェーズコミットなどの方法で実現されています。DB側で分散処理を行えば、アプリケーション側は、ADOによる単一の接続で大丈夫なので、アプリケーションの構築が簡単になると思います。

この回答への補足

ご回答ありがとうございます。お返事遅れてすみません。


>あと複数DBのトランザクションですが、MTSでするのも一つですが、今の主流は、DBのほうで持っている分散処理で行うほうが簡単だと思います。2フェーズコミットなどの方法で実現されています。DB側で分散処理を行えば、アプリケーション側は、ADOによる単一の接続で大丈夫なので、アプリケーションの構築が簡単になると思います。

あ、素人にはそういう表現のしかたがわかり易くて助かります。
そうですよね、それでできますもんね。
じゃあ、どういう時にMTSを使う必要があるんでしょう。
しろうとにはわかりませんが、とりあえず今回の質問の範疇を超えそうなので、
また今度にします。ご回答ありがとうございました。

補足日時:2001/04/16 17:34
    • good
    • 0

こんにちは。

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/worksho …

この回答への補足

ご回答ありがとうございます。
前提としてあがっている項目は、その通りです。

>この場合、ADOとかODBCを使用してどうにかするというよりSQL Serverの分散クエリ
>を使用して行うべきではないでしょうか?

どうもそのようです。どうも私がいろいろ混同というか混乱していたようです。

ちなみに、事情を説明しますと、会社のサイト構築ではなく個人ベースでのサイト構築
(なのにきちんと作ろうというのが厄介なのですが・・・)で、
間もなく友人のコンサルタント数名にも参画(無料)してもらう予定です。
んが、コンサルとのコミュニケーション上、最低限の知識は用意しておかんといかんということで、
企画者としてむやみに悩んでいる次第です。

私個人では、システム構築に関しては業務設計・DB設計と、非常に整った環境下でのプログラミングまで
しか経験がないので、ミドルウェアだなんというところは素人同然でして、的を得ない質問を投げかけて
しまいました。なんだか言い訳がましくなってきたので、この辺で。
ご回答ありがとうございました。

補足日時:2001/04/16 17:25
    • good
    • 0

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に対するトランザクション機能を
実現するにはどうすればいいのか、
どこかに書いてあったり、本があったりしませんでしょうか。

よろしくご回答のほどお願いします。

補足日時:2001/04/11 12:12
    • good
    • 0

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

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QIISとODBCを使えるプロバイダを教えてください

IIS6.0以上とODBC(ACCESS2003とMSSQL2000と2003)を使えるプロバイダを教えてください。
データ件数は千件から1万件くらいで、少し高くてもしっかりしている所が希望です。
また.NET2.0(Visual Studio2.0で作成)が使えるプロバイダがあったら、教えてください。

Aベストアンサー

プロバイダでは無くレンタルサーバーではないでしょうか?

http://www.google.co.jp/search?hl=ja&hs=D3l&q=%E3%83%AC%E3%83%B3%E3%82%BF%E3%83%AB%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC+IIS+ODBC&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja

これで大量に出てきますよ

どうしても「プロバイダ」って事であれば・・・OCNかなぁ

↓OCNメール&ウェブWindowsEdition
http://www.ocn.ne.jp/hosting/service/win/index.html

QODBCドライバーのバージョンアップの仕方

ASPからACCESS2000にアクセスしてます。ODBCドライバーのバージョンが古いためにDBオープンがうまくいってません。バージョンを、4.00.5303.01にあげたいのですが、どうすればいいのか分かりません。どなたかアドバイスお願いします。

Aベストアンサー

MicrosoftのサイトからMicrosoft Jet 4.0 SP3 をダウンロードし
インストールすれば良いと思います

参考URL:http://www.microsoft.com/japan/developer/data/download/mdac/26/jet4sp3.asp

QSQLServerに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の信頼関係接続とは何でしょうか?
また関連付けはどのようにして行ったらよいのでしょうか?
すみませんが、ご教授のほどをよろしくお願いします。

こんにちは。
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 =...続きを読む

Aベストアンサー

こんな感じでいかがでしょう?
ODBCが作成されている事が前提です。

<%
dim OBJ
dim sqlstm
SET DBOBJ=SERVER.CREATEOBJECT("ADODB.CONNECTION")
DBOBJ.OPEN "ODBCデータソース名","ユーザーID","パスワード"
sqlstm="SELECT * FROM table2"
SET OBJ=DBOBJ.EXECUTE(sqlstm)
%>

解決できるといいですね。

QODBC経由でオラクルに接続

ASPにてODBC経由でオラクルにADOで接続してデータを表示していますが、GROUP BY 区を追加すると「オブジェクトが閉じている場合は、操作は許可されません」とエラーが発生します。
GROUP BY 区を追加しなければエラーが発生しません。どうしてでしょうか?またこの接続方法の場合JetのSQL関数が使用可能でしょうか?
ASPの中身--------------------------------------
cn = Server.CreateObject("ADODB.Connection");
rs = Server.CreateObject("ADODB.Recordset");
cn.Open("DSN=XXXXX;UID=XXXXX;PWD=XXXXX;");

sq="";
sq+="SELECT ";
sq+="TTUMIAGK.BUCD ";
sq+="FROM ";
sq+="TTUMIAGK ";
sq+="WHERE ";
sq+="TTUMIAGK.BUCD='04' ";
sq+="GROUP BY TTUMIAGK.BUCD;";//追加するとエラー

rs.Open(sq, cn ,3);
while (!rs.eof) { //ここでエラーが発生
j++;
%><tr><%
for (i=0;i<rs.Fields.count;i++){
%><td><%=rs(i).value%></td><%
}
%></tr><%
rs.movenext();
}
rs.close();

ASPにてODBC経由でオラクルにADOで接続してデータを表示していますが、GROUP BY 区を追加すると「オブジェクトが閉じている場合は、操作は許可されません」とエラーが発生します。
GROUP BY 区を追加しなければエラーが発生しません。どうしてでしょうか?またこの接続方法の場合JetのSQL関数が使用可能でしょうか?
ASPの中身--------------------------------------
cn = Server.CreateObject("ADODB.Connection");
rs = Server.CreateObject("ADODB.Recordset");
cn.Open("DSN=XXXXX;U...続きを読む

Aベストアンサー

ANo.1,2です。
すみません、難しく考えすぎでした。

sq+="GROUP BY TTUMIAGK.BUCD;";//追加するとエラー

の"TTUMIAGK.BUCD"の後ろの";"が不要なんですね(^^;

QAccess ODBC ドライバのバージョンを 4.00 に

こんにちわ

MicroSoft Office をインストールせずに、Access OBCD ドライバのバージョンを 4.00 以上にあげる方法を探しています。


ASPでちょっとしたデータベースシステム作ってます。
データは mdb を ODBC でアクセスするのですが、
Access ODBC ドライバーが 4.00 以上でないと動かないようです。

Office 2000 で Access をインストールしてしまえば、バージョンアップできると思うのですが、訳あって出来ません。

MDAC 2.6 sp2 インストールしたのですが、バージョンアップされません。


多忙かつ時間が無い為、このような形で質問させて頂きます。
(調べる時間が無いと言うか、優先度の高い作業があり自力で調査する余裕がありません。)

お忙しい中大変申し訳有りませんが、もし何かご存知の方いらっしゃいましたら、よろしくお願い致します。

Aベストアンサー

こちらをご覧ください

MDAC Version 2.6 は Jet を含んでいない
http://www.microsoft.com/JAPAN/support/kb/articles/JP271/9/08.HTM

参考URL:http://www.microsoft.com/JAPAN/support/kb/articles/JP271/9/08.HTM


おすすめ情報