- PR -

OPENROWSETについてお伺いさせて下さい

1
投稿者投稿内容
yako
会議室デビュー日: 2006/01/18
投稿数: 3
投稿日時: 2006-01-18 11:36
はじめまして、えると申します。
OPENROWSETについてお伺いさせて下さい。

OPENROWSETを使用して別アカウント(権限)でストアドプロシージャを実行したいと考えています。
↓こちらのページを参考にして
http://blogs.sqlpassj.org/yoshihirokawabata/articles/7974.aspx
TrainingというDBにTEST_EXECUTEプロシージャを作成し、server名・そのサーバーのアドミン名とパスワードを指定して実行しているのですが、
SELECT * FROM OPENROWSET('SQLOLEDB', 'server';'administrator';'password', 'EXEC Training.dbo.TEST_EXECUTE ')

サーバー : メッセージ 18452、レベル 14、状態 1、行 1
ユーザー 'administrator' のログインに失敗しました。理由 : SQL Server の信頼関係接続に関連付けられていません。

となってしまいます。他のアカウントでもいろいろ試したのですが同じでした。
サーバーの認証はWindows認証になっています。
サーバーのレジストリでSQLOLEDBのDisallowAdhocAccessも確認しましたが「0」(許可)が設定されていました。

Windows認証でOPENROWSETを使うために何かServerに設定が必要なのか、あるいはそもそもOPENROWSETの使い方が間違っているのか、
原因がわからず困っています…。

SQLServerの経験が少なく、何か大きな勘違いや他に必要な情報、確認ポイント等がありましたらご指摘いただけるとうれしいです。
恐れ入りますが、ご存知の方いらっしゃいましたらご教授お願いします。


○ 環境
 ・Microsoft Windows Server 2003
 ・Microsoft SQLServer 2000 Enterprise Edition SP3


TLC
大ベテラン
会議室デビュー日: 2005/05/31
投稿数: 152
お住まい・勤務地: 東京都
投稿日時: 2006-01-28 00:37
引用:

yakoさんの書き込み (2006-01-18 11:36) より:

SELECT * FROM OPENROWSET('SQLOLEDB', 'server';'administrator';'password', 'EXEC Training.dbo.TEST_EXECUTE ')




お疲れ様です。
OPENROWSET に指定するのは,データベースのマッピングユーザーの ID とパスワードです。
つまり,SQL Server 認証のログイン,パスワードです。
Windows 認証の認証圏とは別物です。

Windows 認証で OPENROWSET を呼び出すには,
プロバイダ文字列を適切に使う必要があります。

たとえば,ODBC 経由で取り扱うときは,

[CODE]---
SELECT *
FROM OPENROWSET('MSDASQL',
'DRIVER={SQL Server};SERVER=<SERVER_NAME>;Trusted_Connection = yes',
<DBNAME>.<SCHEMA_NAME>.<TBLNAME>)
[CODE]---

といった感じです。

しかし,
この場合は,現在のユーザーコンテキストで接続に行きますから,
明示的に Admin に権限上昇するようなことはありません。
その辺から,目的とされている処理を実現させるためにどこで権限を上昇させるかをもう一度検討する必要があると思います。

「参考」
ちょっとトピックが違いますが,
Access MDB ですと OPENROWSET はこんな感じです。
 ↓
http://blogs.timberlandchapel.com/blogs/timberlandchapel/archive/2005/07/27/168.aspx

----------
TimberLandChapel
http://blogs.timberlandchapel.com/blogs/timberlandchapel/
1

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