- PR -

SQLServerから外部MDBファイルの参照

1
投稿者投稿内容
Rona
会議室デビュー日: 2005/07/06
投稿数: 2
投稿日時: 2005-07-06 15:34
お世話になります。Ronaと申します。

現在SQLServerから外部にあるMDBの接続ができず困っております。

今試している方法は、
OPENROWSET('Microsoft.Jet.OLEDB.4.0','MDBフルパス';'admin';
'Password', 'select * from テーブル') AS XXX を使用しています。

OPENROWSETを使用してPasswordがかかっていないMDBは開けるのですが、
Passwordがある場合、MDBは開けません。

エラー内容は、以下の内容です。
認証に失敗しました。
・アプリケーションを起動できません。
・システム データベースが存在しないか、
 またはほかのユーザーが排他的にシステム データベースを開いています。

OPENROWSETを使用してPasswordの設定されている外部MDBを開く方法を知っている方、
または他の方法でも結構ですので、外部MDBを開く方法を知っている方、
どうか教えて頂けないでしょうか。

申し訳ございませが、よろしくお願い致します。
TLC
大ベテラン
会議室デビュー日: 2005/05/31
投稿数: 152
お住まい・勤務地: 東京都
投稿日時: 2005-07-06 22:39
引用:

Ronaさんの書き込み (2005-07-06 15:34) より:

今試している方法は、
OPENROWSET('Microsoft.Jet.OLEDB.4.0','MDBフルパス';'admin';
'Password', 'select * from テーブル') AS XXX を使用しています。

OPENROWSETを使用してPasswordがかかっていないMDBは開けるのですが、
Passwordがある場合、MDBは開けません。



おつかれさまです。

OPENROWSET に指定するパスワードは,
OLEDB 文字列で言うところの

 UserID=admin

に対する

 Password=<password>

このパスワードです。

一方,Access MDB に対して掛ける,排他モードが必要なパスワードは,

 Database Password=<password>

の方のパスワードです。
ですので,OPENROWSET では排他パスワードつきの mdb はひとまず開けません。

代わりに,
OPENDATASOURCE を使用してアドホック接続します。

SELECT * FROM
OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=C:\test.mdb;Jet OLEDB:Database Password=testpass')...testtable)

とすることで,
データベースパスワードが掛けられた mdb の [testtable] にクエリを打つことができます。

ただし,この方法はアドホック接続が許可されていないとできません。
これで要件的にはいかがでしょう?

[ メッセージ編集済み 編集者: TLC 編集日時 2005-07-06 22:43 ]
Rona
会議室デビュー日: 2005/07/06
投稿数: 2
投稿日時: 2005-07-07 10:21
お世話になります。

OPENROWSETの仕様や、OPENDATASOURCE等大変勉強になりました。
こちらの方でも、思い通りの結果を出すことができました。

大変助かりました。
ありがとうございました。
1

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