web-dev-qa-db-ja.com

tcp / ipを介してリモートデータベースへのリンクサーバーを指定するにはどうすればよいですか?

IAASプロバイダーで実行しているリモートデータベースがあり、ローカルワークステーションから結合クエリを実行できる必要があります。リンクを作成しようとすると、接続に名前付きパイプを使用しようとしているため、問題が発生しています。

SQL Server Native Client 10を使用してシステムDSNを作成し、IP、データベース、ユーザー、パスワードを入力しました。それをテストし、それは大丈夫でした。

  1. リンクされたサーバーに行って、新しく作成しました。
  2. 「MAIN」という名前を指定しました
  3. コンボボックスでSQL Server Native Client 10を選択しました
  4. 製品名フィールドにSQL Serverを入力しました
  5. データソースフィールドにDSN名を入力しました
  6. プロバイダー名フィールドにSQLNCLI10を入力しました
  7. カタログフィールドにデータベース名を入力しました
  8. セキュリティオプションに移動し、ローカルとリモートのログインのペアを指定しました。

[OK]をクリックすると、サーバーが見つからず、名前付きパイプを使用しようとしていることを示すエラーが表示されます。

これを修正するにはどうすればよいですか?

4
Alex Erwin

DSNを使用する必要がある理由がわかりません。 SQL Server Native Clientを直接使用してリンクサーバーを作成します。

EXEC master.dbo.sp_addlinkedserver
    @server     = N'MAIN',
    @srvproduct = N'SQLServ', -- it’s not a typo: it can’t be “SQLServer”
    @provider   = N'SQLNCLI', 
    @datasrc    = N'IP_Address';

次に、ローカル/リモートログインのペアを作成できます。

-- Pair local and remote logins
EXEC master.dbo.sp_addlinkedsrvlogin
    @rmtsrvname  = N'MAIN',
    @useself     = N'False',
    @locallogin  = N'Local_user_name',
    @rmtuser     = N'Remote_user_name',
    @rmtpassword = N'Remote_password';
6
spaghettidba

IPアドレス。 IPの場合、TCPIPとして解釈されます

1
spaghettidba