2012-03-27 54 views
1

SQL Server Management StudioからSQL認証(非saユーザー)を使用してデータベースに接続しました。次のクエリを実行すると、「ログインマッピングが存在しないため、リモートサーバーへのアクセスが拒否されました」というメッセージが表示されます。OPENDATASOURCEを使用してクエリを実行中にエラーが発生しました

EXEC OPENDATASOURCE('SQLNCLI','Server=MyServer;Trusted_Connection=yes;').Database.dbo.myStoredProcedure 

saとしてSQL Server Management Studioに接続すると、クエリはエラーなしで実行されます。

クエリでユーザー名とパスワードを入力せずにSQL認証でSQL以外のユーザーとしてSQL Server Management Studioに接続してOPENDATASOURCEクエリを実行する方法はありますか?

答えて

0

saアカウントは、WindowsサービスアカウントのログオンとしてOPENDATASOURCEを実行します。 これは回避策の1つです。

EXEC N' 
EXEC OPENDATASOURCE(''SQLNCLI'',''Server=MyServer;Trusted_Connection=yes;'').Database.dbo.myStoredProcedure' 
AS LOGIN = 'sa'; 

実際にリモートサーバーにSQL認証情報を設定する必要があります。 次に、信頼できる接続をUser IDPasswordに置き換えてください。 クエリにユーザーIDとパスワードを追加しない場合は、リンクサーバーとして設定します。

http://msdn.microsoft.com/en-us/library/ms179856(v=sql.100).aspx

+0

注:saとして実行するには、 –

0

あなたは、一時的なリンクサーバーを作成し、それをドロップすることができます。これは、現在ログインしているSQLユーザーの資格情報を使用し、同じユーザーが他のボックスに存在すると仮定します。

exec sp_addlinkedserver @server='MyServer', @srvproduct='SQL Server' 
exec sp_addlinkedsrvlogin @rmtsrvname='MyServer', @locallogin=null, @useself='True' 
exec('exec [MyServer].Database.dbo.myStoredProcedure') 
exec sp_dropserver 'MyServer', 'droplogins' 
関連する問題