9

リモート SQL Server からデータを取り込もうとしています。SQL 認証を使用してリモート サーバーにアクセスできます。sp_addlinkedserver で同じ資格情報を使用してもうまくいきませんでした。

私はこのようなことを試みています:

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プロバイダー「SQLNCLI」がメッセージを返しました
「ログインタイムアウトの期限が切れました」。

リンクサーバー「リモート」のOLE DBプロバイダー「SQLNCLI」がメッセージを返しました
「サーバーへの接続を確立中にエラーが発生しました。
SQL Server 2005 に接続する場合、この障害は、
デフォルト設定では、SQL Server はリモートを許可しないという事実
接続。」。

メッセージ 53、レベル 16、状態 1、行 0
名前付きパイプ プロバイダー: SQL Server [53] への接続を開けませんでした。

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

私がオンラインで見た例のほとんどは、SQL セキュリティ ログインではなく、Windows ドメイン アカウントに関係しているようです。これは SQL 認証では機能しませんか?

4

6 に答える 6

11

上記の問題を解決するために、Linked Server の定義を修正して、具体的に TCP を指定しました。

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'

これは私にとってはうまくいきました。この方法では、リモート サーバーに非標準のポートを指定することもできました。

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

これが役立つことを願っています

于 2010-03-18T11:53:15.930 に答える
7

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

あなたのエラー メッセージについて 1 つ紛らわしいことがあります。あなたのアドレスは IP アドレスです: 123.45.678.90

あなたのエラーメッセージは名前付きパイプについて話している. これは手がかりになるでしょうか?

IP アドレスで TSQL のサーバーを参照する必要はありません。リモート サーバーを指すエイリアスをローカル サーバーに追加すると、より適切な名前を付けることができます。IPアドレスで参照するのは明らかに不十分です。

于 2009-05-08T19:38:12.583 に答える
2

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

リンクされたサーバーの名前は単なる任意のエイリアスだと思いました。

これは魅力のように機能します。このリンク サーバーを使用するたびに (括弧内に) 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
于 2009-05-09T02:18:55.507 に答える
1

IP アドレスを指定しているときに名前付きパイプで失敗する場合は、IP アドレスの前に「tcp:」を付けてみて、正しいパスに設定するのに役立つかどうかを確認してください。

于 2009-05-08T19:50:24.863 に答える
1

プロトコルが有効になっていて、サーフェス エリアの構成でリモート接続が許可されている場合がありますが、構成が設定されてから SQL Server Browser サービスが再開されていません。これは、構成がアクティブでないことを意味します。

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

マイク

于 2010-08-11T15:16:39.320 に答える