2016-12-13 268 views
0

こんにちは私は2つの異なるSQL Serverデータベースを持っています。リンクサーバーOLE DBプロバイダ "SQLNCLI11"リンクサーバー

これらは、リンクサーバーを介して相互に接続されています。リンクサーバーは正常に動作しています。

私が試してみてください。

SELECT 
    * 
FROM 
    OPENQUERY 
     ([192.168.1.170], 
     'SELECT MalCRM.dbo.ContractedNumber(1)') 

私は以下のエラーを取得します。どのように私はそれを修正することができます?

リンクサーバー "192.168.1.170"のOLE DBプロバイダー "SQLNCLI11"が返されました "遅延準備が完了できませんでした"。 Msg 229、レベル14、状態5、行1 オブジェクト 'ContractedNumber'、データベース 'MalCrm'、スキーマ 'dbo'でEXECUTE権限が拒否されました。

+1

同じログインを使用して、リンクされたサーバー上で 'SELECT MalCRM.dbo.ContractedNumber(1)'というクエリを直接実行してみてください。ほとんどの場合、アカウントに必要な権限の完全なセットがないことがわかります。 –

+0

申し訳ありません私もよく理解しているのか分かりません。あなたはもっと詳しく説明できますか? select文もターゲットサーバ上で動作します。しかし、私はdbリンクで実行しようとすると私はできません。 – Oracsql

+0

[192.168.1.170]で直接クエリを実行できないと思われます。リンクが設定されていても、そのサーバーに必要な権限はありません。 ssms経由で[192.168.1.170]に接続してください。クエリを実行します( 'SELECT MalCRM.dbo.ContractedNumber(1)')。同じエラーメッセージが表示された場合は、dbaにアクセス権の変更を依頼してください。 –

答えて

0

MERHABA Berhanは、

は私が
SELECT * FROM OPENQUERY([myInstance], 'SELECT AdventureWorks.dbo.test(3)') 

は、データベース機能が有効であるに資格情報を確認しました完璧に動作し、次のSQLクエリを試してみましたか? 許可の問題のようです。 SQL Server linked serverセキュリティコンテキストを確認し、データベースオブジェクトに対して実行権限があるかどうかを確認してください。 参照先のチュートリアルでは、セキュリティコンテキストで、ソースデータベースユーザーをリンクサーバー上の他のユーザーにマップできます。 これは問題の可能性があります

+0

Merhaba Alper、selectから結果を取得できますが、リンクされたプロパティのセキュリティにアクセスして偽装を選択した場合に限ります。偽装していないと、私が書いたようにエラーが出ています。どんな解決策ですか? – Oracsql

+0

リンクサーバーの構成を「偽装」として選択して変更しないでください。これは、両方のサーバー上のSQLログインをマップします – Eralper

+0

私はそれがデータベースに接続できないようになった後、任意のユーザーのためにこれを選択しました=)私は今何をすべきか分かりませんか? – Oracsql

関連する問題