web-dev-qa-db-ja.com

SQL Serverレプリケーションでは、サーバーに接続するために実際のサーバー名が必要です

新しいパブリケーションまたはサブスクリプションを作成しようとすると、次のメッセージが表示されます。

「SQL Serverレプリケーションでは、サーバーに接続するために実際のサーバー名が必要です。サーバーエイリアス、IPアドレス、またはその他の代替名による接続はサポートされていません。実際のサーバー名を指定してください」

誰が私が何をすべきか知っていますか?

35
Vahid Ghadiri

次のリンクで解決策を見つけました http://www.cryer.co.uk/brian/sqlserver/replication_requires_actual_server_name.htm

ブライアンクライアーの便利なサイトに感謝

リンクの腐敗を避けるためにリンクから引用する:

原因:

このエラーは、SQL Serverの最初のインストール後に名前が変更され、SQL Server構成関数@@SERVERNAMEはまだサーバーの元の名前を返しました。これは次の方法で確認できます。

select @@SERVERNAME
go

これにより、サーバーの名前が返されます。解決しない場合は、以下の手順に従って修正してください。

対策:

問題を解決するには、サーバー名を更新する必要があります。以下を使用します。

sp_addserver 'real-server-name', LOCAL

これにより、名前がすでに存在するというエラーが表示される場合、次のシーケンスを使用します。

sp_dropserver 'real-server-name'
go

sp_addserver 'real-server-name', LOCAL
go

代わりに、報告されたエラーが「ローカルサーバーが既に存在します」である場合。次に、次のシーケンスを使用します。

sp_dropserver old-server-name
go

sp_addserver real-server-name, LOCAL
go

「old-server-name」は、元のエラーの本文に含まれる名前です。

SQL Serverを停止して再起動します。

44
Vahid Ghadiri

この問題には別の解決策があり、**sp_dropserver****sp_addserver**またはサーバーの再起動。

手順:

  1. エラーメッセージを読み、引用符で囲まれたSERVERNAMEを覚えておいてください。
  2. Management Studioがインストールされているマシン(通常はパブリッシャー/ディストリビューター側)でSql Server Configuration Managerを実行します。
  3. Sql Native 10.0 Configuration\Aliasesノードを展開します。
  4. 1からSERVERNAMEという名前の新しいエイリアスを作成します。 NetBIOSマシン名、または名前付きインスタンスの場合はNetBIOS\instance_nameでなければなりません。
  5. エイリアスの他のオプション(ポート、サーバー、プロトコル)を指定します。
  6. 32ビットネイティブクライアントに対して4および5を繰り返します。
  7. テスト。同じマシンでManagement Studioを実行し、サーバーへの接続を試行します(サーバー名としてエイリアスを指定します)。

  8. (オプション)Management Studioがレプリケーションセットアップに使用されるすべてのクライアントマシンで2-7を繰り返します。

それで全部です!

31
eLVik

短い答え:SSMSを介して間違ったネットワークエイリアスで接続しているかどうかを確認してください

たとえば、サーバーは次の両方としてアクセス可能です。

  • MyDataServer
  • MyDataServer.Company.Com

レプリケーションパブリケーション/サブスクリプションが作成されると、その時点でサーバーへの接続に使用される名前に関連付けられます。別のエイリアスまたは完全修飾名を使用して接続すると、質問に記載されているエラーが発生します。

詳細:私はこれに偶然遭遇しました。@@ servernameの変更に関する答えは、問題を理解するのに役立ちましたが、それをする必要はありませんでした。

このことを考慮:

SQLサーバーボックスは{my_system_name} .local.domainとしてセットアップされました

このネットワークには、{my_system_alias}がサーバーに到達し、完全修飾ドメイン名(FQDN)を入力しなくても済むようにするネットワークエイリアスがあります。

SQL Serverがインストールされ、{my_system_alias}名を使用して接続されている間にローカルレプリケーションパブリケーションもセットアップされました。

次に、FQDNを指定してSSMSを使用してサーバーに接続しました。この既存のレプリケーションのプロパティを右クリックし、[ローカルパブリケーション]をクリックすると、「SQL Serverレプリケーションには実際のサーバー名が必要です」というエラーが表示されます。

私がしなければならなかったのは、エイリアスを使用して(または他の方法で)SSMSでサーバーに再接続すると、レプリケーションパブリケーションの詳細を表示できるようにすることです。

PS:別の答えのPhillのコメントも選択肢であり、接続に使用する必要がある名前に一致するhostsファイルエントリを作成します。

5
Chris Amelinckx

マシン名のようにサーバー名を変更する必要があります。

  1. サーバー名を確認します。

@@ servername

  1. 上記のテストの名前に表示されるサーバーの古い名前を削除します。

sp_dropserver 'old_name'

  1. 新しいネームサーバーを追加します。

sp_addserver 'new_name'、 'local'

4
galgil

別の解決策は、SQL Server Management Studioの追加パラメーターを使用してそのデータベースに接続することです。

これを行うには、接続時にサーバー名が@@ servername経由で確認したもの(またはエラーメッセージが表示されるもの)になり、[オプション>>]ボタンを選択します。

Select Options >> button

次に、[追加の接続パラメーター]タブで、データベースの現在の名前を追加できます。

enter image description here

よろしく、

2
an3sarmiento

サーバー名が実際には他のサーバーと共有されている可能性のある奇妙な文字列であるホスト環境で作業している場合... WIN-II7VS-100。 @ZachSmithのおかげで見つけた解決策は、接続元のサーバー上のホストファイルを編集し、接続先のSQLサーバーの静的IPに設定することです。

0
John K.

[〜#〜] everything [〜#〜]を試した後、修正を共有します。それ以外の場合、この問題を解決できます。 SSMS 18.2(この投稿の時点での最新バージョン)を使用して、SQL Server 2017でレプリケーションをセットアップしようとしました。ディストリビューターをセットアップすると、すべてが正常になりましたが、ディストリビューターのプロパティに移動し、[キューリーダーエージェントの作成]チェックボックスをオンにすると、有名な「SQL Serverレプリケーションには実際のサーバー名が必要です。サーバー:実際のサーバー名「。(Replication.Utilities)」を指定します。

数日後、私は異なるバージョンのSSMSを試しました。 SSMS 17.9.1をインストールし、すべてを再試行すると正常に機能しました。うまくいけば、これは他の誰かを助ける。

0
Ben