2016-07-25 2 views
0

私は2つのデータベースサーバを持っています。 1つはオフィスのコンピュータに、もう1つはウェブサーバー上にある。インターネット経由で2台のコンピュータ間に安全な暗号化トンネルがあります。 必要なテーブルへのアクセスを許可するために、WebサーバーPCにSQL Serverユーザーが設定されています。管理者経由でリンクサーバー上のテーブルのみを表示できます。 SQLサーバユーザではありません

オフィスPCには、それらのリンクテーブルへのアクセスが必要なローカルアカウントがあります。

コンピュータ間にリンクサーバーが設定されています。 SQL Server Management Studioのsysadminインターフェイスから、リンクされたサーバー上のテーブルを自由に閲覧できます。

が、私は、SQL Serverのユーザーとしてログインし、私は私がリンクされたローカルおよびリモートユーザの詳細を追加、これまで

  • を試してみましたが、何

    =================================== 
    
    The test connection to the linked server failed. 
    
    =================================== 
    
    An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo) 
    
    ------------------------------ 
    Program Location: 
    
        at Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTypes executionType) 
        at Microsoft.SqlServer.Management.Smo.ExecutionManager.ExecuteNonQuery(String cmd) 
        at Microsoft.SqlServer.Management.Smo.LinkedServer.TestConnection() 
        at Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.LinkedServerConnectionTest.Invoke() 
    
    =================================== 
    
    Access to the remote server is denied because no login-mapping exists. (.Net SqlClient Data Provider) 
    
    ------------------------------ 
    For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=11.00.5058&EvtSrc=MSSQLServer&EvtID=7416&LinkId=20476 
    
    ------------------------------ 
    Server Name: SERVER\INSTANCE 
    Error Number: 7416 
    Severity: 16 
    State: 2 
    Procedure: sp_testlinkedserver 
    Line Number: 1 
    
    
    ------------------------------ 
    Program Location: 
    
        at Microsoft.SqlServer.Management.Common.ConnectionManager.ExecuteTSql(ExecuteTSqlAction action, Object execObject, DataSet fillDataSet, Boolean catchException) 
        at Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTypes executionType) 
    

    テスト接続をしようとした場合サーバーのプロパティウィンドウ。

  • 私はSQL Serverのユーザーは、リンクサーバーを使用することができますので、それを設定することができますどのように「このセキュリティコンテキストを使用して製造することが」

をデフォルトのセキュリティコンテキストを追加しますか?

答えて

0

問題は、リモート接続文字列でユーザーIDを定義する必要があることにあります。パラメータ@provstrと ローカルSQL Serverの非管理者またはWindows以外のアカウントを使用してリンクサーバーを作成するとき、あなたはパラメータを追加する を持っている「ユーザー:

原因https://blogs.technet.microsoft.com/mdegre/2011/03/10/access-to-the-remote-server-is-denied-because-no-login-mapping-exists/からあなたの リンクサーバー上のプロバイダ文字列の中に 『ユーザーID =ユーザー名を

EXEC master.dbo.sp_addlinkedserver @server = N:「追加@provstr

決議に』名前LinkServerName 'プロバイダ= N'SQLNCLI @ '、@ srvproduct = 'MS SQL Serverの'、 @ provstr = N'SERVER =サーバー名\ InstanceNameは、ユーザーID = MYUSER」

EXECのmaster.dbo.sp_addlinkedsrvloginの@rmtsrvname = N'LinkServerName ' @locallogin = NULL、@useself = N'False'、@rmtuser = N'myUser」、 @rmtpassword = N '私のセットアップ合計で*****'

文字列はこのように見えました(インターネット上の接続を設定するための詳細があります)。

EXEC master.dbo.sp_addlinkedserver @server = N'LINKEDSERVERNAME', @srvproduct=N'SQL_SERVER', @provider=N'SQLNCLI', @provstr=N'SERVER=SERVER\INSTANCE;User ID=webuser', @datasrc=N'www.domain.com' 

小型ノート、私のウェブサーバは、インスタンス名を持っていないので、私はビルドアップ接続文字列のうち、「\ INSTANCE」の部分を残しました。

注2:ドキュメントでは、@ srvproduct = 'MS SQL Server'と記載されていますが、2012年のSQL ServerはSQL_SERVERのみを受け入れます。

関連する問題