比較的初心者です。ゆえに、環境のことはどうも弱くて困ります。
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と関連する良く見られている質問

Qメソッドの中のオブジェクト?

メソッドの中のオブジェクト?

オブジェクト志向を勉強しています。WSHも勉強しています。

オブジェクトはメソッドとデータで構成されていると学びました。

下記URLのWshNetworkオブジェクトではメソッドの中に更にオブジェクトがあるように見えます。
メソッドの中にオブジェクト、プロパティの中に更にオブジェクトを持つことがあるんでしょうか?

http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh15/cformwsh15_01.html

Aベストアンサー

>メソッドの中にあるオブジェクト?だと思ったのですが

メソッドがオブジェクトを返すケースは

1) あらかじめオブジェクトが持っていたオブジェクトを返す。
2) メソッドでオブジェクトを作成して返す。

などがあります。WSHで使うオブジェクトはCOMオブジェクトなので
2) のケースが多いでしょうね。

いずれにしても、メソッドはオブジェクトではないので、「持つ」という表現は
変です。

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

Qphpでオブジェクト指向と呼べる設計をするには・・・

phpで、なるべく同じ処理は関数化し、
ひとつの大きな処理としてまとめています。

これは、オブジェクト指向といえるのでしょうか?
オブジェクト指向とはもっと高度で汎用性が高く
たんなる関数化ではオブジェクト指向とはいえないでしょうか?

綺麗なオブジェクト指向とは一体のどようなものなのでしょうか?

どこまでオブジェクト化すれば
オブジェクト指向なのかよく分かりません。
使いまわしがきけばオブジェクト指向なのでしょうか?
他のプログラムに影響を与えなければオブジェクト指向なのでしょうか?

質問が抽象的ですが、よろしくお願いします。

Aベストアンサー

>たんなる関数化ではオブジェクト指向とはいえないでしょうか?

いえない。それは「構造化プログラミング」というものだ。プログラムを処理ごとに整理し構造化する手法だな。

オブジェクト指向は、「処理ごと」に整理するのを超え、「独立して扱える個々のプログラムの集合体」として設計する。これはクラスとして設計される。それぞれのクラスは、他のプログラムに依存せずそれぞれ単独で機能する形で設計されなければならない。そうして設計されたクラスの組み合わせによりプログラム全体を構築する。これがオブジェクト指向プログラミング。

関数は、ただ「一つの機能をまとめたもの」に過ぎない。これに対し、クラスは「機能と、値をパッケージ化」する。そのクラスに必要な機能をメソッドとして用意し、そのクラスを利用するために必要な情報をすべてメンバー変数として自身の中に保持する。そのクラスを利用するのに必要な情報は、すべて自分自身の中にある。そうした独立性のあるオブジェクトとしてプログラムを定義するのがオブジェクト指向。

ただ、PHPの場合、ちょっとしたものだとわざわざオブジェクト指向を持ち出さなくとも作れてしまうので、なかなかオブジェクト指向の考えを実践するのは難しいところがある。オレも、ちょっとしたものならまずクラスなんて定義しないで作っちまうし。すっきりと美しく作られたオブジェクト指向を理解したいなら、PHPの場合、MVCによるフレームワークを勉強するのが割と手っ取り早いんでないかと思うな。CakePHPとかZend frameworkなんかを実際に使ってみると、オブジェクト指向がどういうものか、次第にわかってくるんでないかな。

>たんなる関数化ではオブジェクト指向とはいえないでしょうか?

いえない。それは「構造化プログラミング」というものだ。プログラムを処理ごとに整理し構造化する手法だな。

オブジェクト指向は、「処理ごと」に整理するのを超え、「独立して扱える個々のプログラムの集合体」として設計する。これはクラスとして設計される。それぞれのクラスは、他のプログラムに依存せずそれぞれ単独で機能する形で設計されなければならない。そうして設計されたクラスの組み合わせによりプログラム全体を構築する。こ...続きを読む

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

QVBAのクラスオブジェクト

VBAのコレクションオブジェクトについての質問です。

一般的な説明では、
・コレクション(Collection)とは、同じ種類のオブジェクトの集合体をいいます。
となっているのですが、


 以下のような自分で作成するコレクションオブジェクトもあるみたいです。
この場合、同じ種類ではないオブジェクトでコレクションを作れるのでしょうか?それともこの場合も、同じ種類のオブジェクトでないといけないのでしょうか?

・Collectionオブジェクトを使うと、文字列、数値、オブジェクトを要素とする独自のオブジェクトを作成できます。
  Dim colTest As New Collection 

Aベストアンサー

 Excel VBAで説明すると、

 Excel.WorkBookクラスのWorkSheetsプロパティに設定されているオブジェクトがExcel.WorkSheetオブジェクトのコレクションオブジェクトとなるね。この場合、「コレクション」という言葉は一般的な「集まり(コレクション)」という意味だ。
 この時、WorkSheetsプロパティの実体はExcel.WorkSheetsクラスのインスタンスであり、WorkSheetsクラスはWorkSheetクラスのオブジェクトの集合を保持している。WorkSheetsクラスのソースが無いので分からないが内部ではCollectionクラスで管理しているのかもしれない。

 これに対し、
 Dim colTest As New Collection
 はCollectionというクラスのインスタンスを作成しているのであり、コレクションはCollectionクラスを指している。このCollectionクラスはAddやRemoveなどのメソッドを持っており、引数がObjectなので文字列も数値も何らかのオブジェクトも要素とできる。基本はこいつを内包したクラス(AddやRemoveを特定のクラスを引数にして用意する)を作成する事になる。

 Excel VBAで説明すると、

 Excel.WorkBookクラスのWorkSheetsプロパティに設定されているオブジェクトがExcel.WorkSheetオブジェクトのコレクションオブジェクトとなるね。この場合、「コレクション」という言葉は一般的な「集まり(コレクション)」という意味だ。
 この時、WorkSheetsプロパティの実体はExcel.WorkSheetsクラスのインスタンスであり、WorkSheetsクラスはWorkSheetクラスのオブジェクトの集合を保持している。WorkSheetsクラスのソースが無いので分からないが内部ではCollectionクラスで...続きを読む

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)
%>

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

Q枠オブジェクトを内側のオブジェクトに合わせる方法

枠オブジェクトを内側のオブジェクトに合わせる方法

タイトルにある通りなのですが、枠のオブジェクトを内側のオブジェクトに合わせて自動で縮小・拡大する方法はありますか?

Aベストアンサー

ソフトが不明ですが・・・?
自動と言うほど簡単ではないですが、Illustratorなら。
内側のオブジェクトを選択ツールで選択>編集>コピー>編集>前面へペースト>オブジェクト>グループ>効果>形状に変換>長方形>「値を追加」にチェック・「幅に追加」と「高さに追加」の数値を共に0mmにして、OK>オブジェクト>アピアランスを分割。

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"の後ろの";"が不要なんですね(^^;

Qイラレでグループ化されたオブジェクトを選択

イラレCS5を使っています。


複雑な形状をした複数のオブジェクトがグループ化されたオブジェクトがあるとします。
これの一部を選択したいのですが、
ダイレクト選択ツールを使って、Shiftキーを押しながら選択していくと
グループ化されたオブジェクトの中で複数のオブジェクトを同時に選択することが出来ます。
しかしながら、例えば、A、B、Cというオブジェクトを選択した状態で
C、D、Eというオブジェクトを選択すると、
Cの選択が外れてしまいます。

簡単なオブジェクトだとCだけ選択し直せば良いのですが、
複雑なオブジェクトだとこういう操作は難しくなってしまいます。

どうすれば、A、B、Cというオブジェクトを選択した状態で
C、D、Eというオブジェクトを選択してもABCDEすべてのオブジェクトが
選択出来ますでしょうか?

Aベストアンサー

グループ内のオブジェクトを選択する時に、ダイレクト選択ツールではなく「グループ選択ツール」(ダイレクト選択ツールの長押しで出ます)でオブジェクト一部をクリック(ドラッグして選択する必要が無い)すると、そのオブジェクト全体が選択出来ます。
ABCを選択後に、ABCDEを選択する為になぜCを再選択する必要が有るのでしょうか、ABCを選択後にShiftを押してDEを選択すれば良いと思いますが・・・。
途中で、CDEを選択状態にする必要が有るなら、ABCを選択後にShiftを押して、DEを選択してABを選択すれば、CDEが選択出来ます。
又は、そのグループを「選択ツール」でダブルクリックすれば、グループ選択モードになって、グループ解除した状態と同じ様に選択ツールで選択可能です。
戻す時は、上のグレーの帯をクリックするか、画面内をダブルクリック。

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


人気Q&Aランキング