@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

C++でのSQLサーバのリモートアクセスの方法について

1
投稿者投稿内容
なな
会議室デビュー日: 2005/10/12
投稿数: 13
投稿日時: 2005-10-14 16:06
お世話になっています。
2台のPCで、データベースを持っているPC-AにクライアントのPC-Bがアクセスして、
データを取得しようと考えています。

PC-AはSQL Serverでデータを管理していて、ODBCを用いてPC-A自身がデータを取得するには、

HRESULT hr;
hr = pConnection.CreateInstance( __uuidof( Connection ) );
hr = pConnection->Open(
_bstr_t(L"Provider=MSDASQL.1; DSN=MySQLServer;"),
_bstr_t(L"sa"),
_bstr_t(L"PASSWD"),
adModeUnknown);

pRecordSet = pConnection->Execute(bstrQuery, &vRecsAffected, adOptionUnspecified);

によって、データベースにアクセスしてデータを取得することができているのですが、
これを別マシンであるPC-BがODBCを利用しないでPC-Aのデータベースにアクセスして、
データを取得するにはどのようにしたらよろしいでしょうか?。

(SQL Serverのアカウント情報はsa/PASSWDでアクセスしたいデータベースはMyDataBaseです。また、OSは共にXPです。 )

hr = pConnection->Open(
_bstr_t(L"Provider=MS Remote; Remote SERVER=http://192.168.1.10; DATABASE=MyDataBase; UID=sa; PWD=PASSWD;"),
_bstr_t(L"sa"),
_bstr_t(L"PASSWD"),
adModeUnknown);

pRecordSet = pConnection->Execute(bstrQuery, &vRecsAffected, adOptionUnspecified);

以上のようなコードで試したところ、Executeしようとしたら「インターネットサーバエラーです。」と
処理ができませんでした。もちろん存在・稼動しているアドレスやデータベースを指定しています。
ですが、オプションがおかしかったり、足りない記述などがあるのでしょうか?

ちなみに以下のサイトから参考にしました。
http://www.eonet.ne.jp/~nakanishia/Hidetaka/Software/VC/DataBase/ADO/index.htm

大ベテラン
会議室デビュー日: 2003/09/16
投稿数: 193
お住まい・勤務地: 千葉県
投稿日時: 2005-10-14 17:40
引用:

ななさんの書き込み (2005-10-14 16:06) より:

これを別マシンであるPC-BがODBCを利用しないでPC-Aのデータベースにアクセスして、
データを取得するにはどのようにしたらよろしいでしょうか?。

(SQL Serverのアカウント情報はsa/PASSWDでアクセスしたいデータベースはMyDataBaseです。また、OSは共にXPです。 )

hr = pConnection->Open(
_bstr_t(L"Provider=MS Remote; Remote SERVER=http://192.168.1.10; DATABASE=MyDataBase; UID=sa; PWD=PASSWD;"),
_bstr_t(L"sa"),
_bstr_t(L"PASSWD"),
adModeUnknown);

pRecordSet = pConnection->Execute(bstrQuery, &vRecsAffected, adOptionUnspecified);




WIN 2000 Server ではお世話になりました

間違っていたらごめんなさい なのですが
ODBCを使用しない場合は プロバイダ文字列 "Provider=MS Remote" は必要ないと思います
サーバー名とDB名 と接続セキュリティ情報の指定でよいと思います

"workstation id=xxxxxxx;packet size=4096;" & _
"user id=sa;password=PASSWD;data source=サーバー名;" & _
"persist security info=True;initial catalog=MyDataBase"

workstation id はいらないと思います
サーバー名はコンピュータ名しか使用したことしかないのですが
アドレスでもOKだと思います
.NETから持ってきた文なので、多少構文が違うかもしれませんが
ためしてみてください
なな
会議室デビュー日: 2005/10/12
投稿数: 13
投稿日時: 2005-10-17 20:39
返事遅れてしまってスミマセン。

七さんのおかげでアクセスすることができました。

initial catalog=MyDataBase
などのキーワードが決め手になりました。
workstation idは確かに使わなくてすみました。

お世話になりました。ありがとうございます。
1

スキルアップ/キャリアアップ(JOB@IT)