2009-05-08 12 views
9

リモートSQL Serverからデータを取得しようとしています。 SQL認証を使用してリモートサーバーにアクセスできます。私はsp_addlinkedserverで同じ資格情報を使用して運がなかった。リンクされたSQLサーバーの追加に問題があります

私はこのような何かをしようとしている:ここで

Exec sp_dropserver 'Remote', 'droplogins' 
go 

EXEC sp_addlinkedserver 
    @server='Remote', 
    @srvproduct='', 
    @provider='SQLNCLI', 
    @datasrc='0.0.0.0' 

EXEC sp_addlinkedsrvlogin 
    @useself='FALSE', 
    @rmtsrvname='Remote', 
    @rmtuser='User', 
    @rmtpassword='Secret' 

Select Top 10 * from Remote.DatabaseName.dbo.TableName 

は私が得るものです:

再び
 

OLE DB provider "SQLNCLI" for linked server "Remote" returned message 
"Login timeout expired". 

OLE DB provider "SQLNCLI" for linked server "Remote" returned message 
"An error has occurred while establishing a connection to the server. 
When connecting to SQL Server 2005, this failure may be caused by the 
fact that under the default settings SQL Server does not allow remote 
connections.". 

Msg 53, Level 16, State 1, Line 0 
Named Pipes Provider: Could not open a connection to SQL Server [53]. 

、私はこれらの正確な資格情報を使用して(SQL Management Studioで)直接サーバーにアクセスすることができ、私のネットワークや資格情報に問題はありません。

私がオンラインで見た例のほとんどは、SQLセキュリティログインとは対照的に、Windowsドメインアカウントを含むようです。これはSQL認証では機能しませんか?

答えて

6

これはSQL認証で動作します。 SQL認証を使用する場合、Kerberosを設定する必要がないので、実際には簡単です。

一つのことは、あなたのアドレスはIPアドレスである、あなたのエラーメッセージについて紛らわしいです:123.45.678.90

あなたのエラーメッセージは、名前付きパイプについて話しています。これは手掛かりになるだろうか?

TSQLのサーバーをIPアドレスで参照する必要はありません。リモートサーバーを指すalias on the local serverを追加すると、より分かりやすい名前を付けることができます。 IPアドレスでそれを参照することは明らかに不十分です。

+0

これは興味深い考えです。 @datasrcパラメータに "foofoofoo"という偽のIPアドレスを入力しても同じ結果になります。 –

+0

ありがとう、これは正しい解決に私を導いた。 –

+1

私の善良な人に答えてください、私は高いスコアを渇望= D –

1

IPアドレスを指定しているときに名前付きパイプでエラーが発生した場合は、IPアドレスの先頭に「tcp:」と入力して、正しいパスに設定するのを助けてください。

+0

ありがとう - 私はこれを試して、それは助けになりませんでした。 –

+1

ドメイン名swap @ datasrc = 'tcp:0.0.0.0'で@ datasrc = 'mydomain.com'で接続しようとする人は、他の多くの投稿と同じSERVER = –

2

は、リンクサーバーを追加するためのSMSのGUIウィザードの指示のラインのおかげでそれを考え出し:"If SQL Server is selected, then the Linked Server name is also the network name of the server."

私はリンクサーバーの名前だけで、任意の別名だと思いました。

これは魅力的なように機能します。このリンクサーバーを使用するたびにIPを入力する必要がありますが、IPアドレスを入力する必要があります。

Exec sp_dropserver '0.0.0.0', 'droplogins' 
go 

EXEC sp_addlinkedserver 
    @server='0.0.0.0', 
    @srvproduct='', 
    @provider='SQLNCLI', 
    @datasrc='0.0.0.0' 

EXEC sp_addlinkedsrvlogin 
    @useself='FALSE', 
    @rmtsrvname='0.0.0.0', 
    @rmtuser='user', 
    @rmtpassword='secret' 
go 

Select Top 10 * from [0.0.0.0].DatabaseName.dbo.TableName 
+0

うわー、それは吸う。名前解決の問題がないのは確かですか? –

+0

あなたは何を意味するのかわかりません - DBサーバーに関連付けられたドメイン名はなく、IPアドレスだけです。 –

+0

ええ、私は今同じ問題があります。私はSQLOLE(または何でも)をプロバイダとして指定して接続文字列を与えることで対処しようとしました。この場合、@ serverは実際には任意の論理名です...しかし、これは本番マシンではあまり接続しませんなぜ忘れたの?)そこで、私はこの方法に戻り、これまでに働いていた関心のあるテーブルのビューを使って物理的な位置を抽象化しました。 – harpo

1

ます。sp_configure 'アドホック分散クエリ'、オーバーライド

と1つの

再構成は、SQL表面積configuratonをチェックしている - > Databaseengine - > Remoteconnections - > TCP/IPと名前付きパイプの両方を使用するオプション (そのオプションを選択して再起動しない場合)

これは問題を解決する必要があります リンクサーバー "リモート"のOLE DBプロバイダー "SQLNCLI"がメッセージを返しました "サーバーへの接続を確立中にエラーが発生しました。 SQL Server 2005に接続するとき、このエラーは という既定の設定ではSQL Serverがリモートの 接続を許可しないという事実によって引き起こされる可能性があります。 "

EXEC sp_addlinkedserver 
    @server='TEST_LINK', 
    @srvproduct='', 
    @provider='SQLNCLI', 
    @datasrc='tcp:0.0.0.0' 

EXEC sp_addlinkedsrvlogin 
    @useself='FALSE', 
    @rmtsrvname='TEST_LINK', 
    @rmtuser='user', 
    @rmtpassword='secret' 

これは私のために働いていた:私は、特にTCPを指定するには、リンクサーバーの定義を改正上記課題を解決する

9

。この方法は、また、私は、リモートサーバの非標準のポートを指定することができ:

EXEC sp_addlinkedserver 
    @server='TEST_LINK', 
    @srvproduct='', 
    @provider='SQLNCLI', 
    @datasrc='tcp:0.0.0.0,1111' 

私は、これは時々、プロトコルが有効になっていると表面積の設定がリモート接続を許可しますが、SQL

0

役に立てば幸い構成が設定されてからServer Browserサービスが再起動されませんでした。これは、構成がアクティブでないことを意味します。

構成設定がすべて正しいと思われる場合は、トラブルシューティング手順としてSQL Server Browserを再起動してください。

マイク