QA@IT

SQLサーバー名の変更について

13296 PV

いつもお世話になっております。itaと申します。
現在、新サーバーへのシステム移行を考えていますが、SQL Serverのサーバー名の変更を下記のとおり進めたいと思っています。

そもそも、SQL serverのサーバー名は、マシンのコンピュータ名に固定されるのでしょうか?
コンピュータ名が「dbserver1」というマシンにインストールしたSQL Serverのサーバー名に「dbserver2」という名前を付けることはできないのでしょうか?
逆にコンピュータ名を変更すれば、SQLサーバー名も変更されるのでしょうか?

あまり詳しくないので、トンチンカンな質問になっているかもしれません。
とにかく実現させたいことは、現在のSQL Serverのサーバー名を現在のものから変更させることです。

下記の新サーバーマシンへのシステム移行を考えています。
1.現サーバーマシンのマシン名:「main1」、SQLサーバー名も「main1」で運用されています。
2.新サーバーマシンのマシン名:「test1」、SQLサーバー名を「test1」としてインストールしてテスト環境としています。
3.テスト完了後に、1の現サーバーのSQLサーバー名も「main1」から他の名前「old1」などに変更し。
4.2の新サーバーのSQLサーバー名を「main1」に変更したいと思っています。
(運用時のSQLサーバー名は変更したくない為)

拙い質問で恐縮ですが、よろしくお願いいたします。

回答

いろいろ名前(ホスト名=コンピュータ名、SQL Serverが自分のコンピューター名だと思っている名前、名前解決に使われる名前、名前付きインスタンス名、クライアント別名…)があるので、どのレベルの名前の事を言っているかにもよりますが、

要望を見る限り

  • サーバー差し替えにあたり外部からSQL Serverを指定する名前を変えたくない
  • 構築中はSQL Serverが入ったWindowsのコンピュータ名は仮の名前にしてあるが現行サーバー停止とともに現行と同じ名前に変更したい の 2つの課題があるように思います。

外部から接続の設定やプログラムの接続文字列にはサーバー名(接続元がLAN内のどのマシンがSQL Serverか示す名前。IPアドレスでも可。)が書いてあります。
サーバーに最初のSQL Server(Express以外)をインストールするとき、既定のインスタンスでインストールしておけば、ここに名前は一つしか指定しないと思います( Server Name=main1;uid=xxxx;... のようになり、Server Name=main1\myNamedInstance;uid=xxxx の様に指定しない )。
(一個目はインスタンス名つけても既定のインスタンスになったような気もしますが、ちょっと記憶が曖昧)
これであれば移行のタイミングでDNSやhostsの設定によって「接続する側にとって」"main1"が新サーバーとなっていればよいでしょう。

開発時限定であれば、「接続元≠SQL Server」のhostsの定義で main1に新サーバーのIPを書いておけばつながると思います。
(最終環境ではお勧めしません)

最終的な環境では現在の名前解決をどこにゆだねているかに依存しますので(ADとかNetBIOSとか)それに則ればよいかと。

SQL Serverのコンピューター名を変えたい場合に関しては、変えた後で sp_addserver を使って新しいコンピュータ名をSQL Serverに指定する必要があったと思いますので、そこも留意しておいてください。

編集 履歴 (1)

回答ありがとうございます。
私のやりたかったことは、これです。
私が思っていたSQL server名は単純にマシン名だったのですね。
コンピュータ名の変更を行うことで、実現できました。

名前付きインスタンスの話は、sql server name=main1\test1のmain1の部分が変更になることでtest1の部分は困難(インストールのし直し等)だということが分かりましたので、他の手段で対応したいと思います。

拙い質問にも関わらず、沢山の方からのアドバイスを頂き、本当に助かりました。
ありがとうござました。

編集 履歴 (0)
  • 「私のやりたかったことは、これです。」の「これ」というのはコンピュータ名の変更ですか? そうではなくて「名前解決」のやりかたで問題に対応してはいかがと言ったつもりですが。flied_onion さんもその方向で回答されているように思いますけど。 -
  • 何にせよ、問題が解決したのであれば、このスレッドおよび先の「インスタンス名の変更」のスレッドはクローズしてください。 -

コンピュータ名が「dbserver1」というマシンにインストールしたSQL Serverのサーバー名に「dbserver2」という名前を付けることはできないのでしょうか?

リモートのサーバーにある SQL Server に接続するのだと理解していますが、そうであれば dbserver2 で正しく名前解決できるようにすれば接続できると思います。

1.現サーバーマシンのマシン名:「main1」、SQLサーバー名も「main1」で運用されています。

このあたり、思い違いがあるのでは? 名前付きインスタンスに接続するには、接続文字列で、

Server=<server name>\<instance name>

としますが、その <server name> は「マシン名」です。(そもそも「SQLサーバー名」とは何のことを言っていますか?)

なので、<server name> で正しく名前解決(詳しくは下記のページ参照)できなければ(即ち 、<server name> はマシン名とか、DNS に登録されたホスト名とか、IP アドレスでなければ)接続できないはずです。

名前解決
http://surferonwww.info/BlogEngine/post/2012/05/23/Address-resolution.aspx

#前のスレッドで「名前付きインスタンス」に接続という話だったんですが、それは変わってないと理解しています。

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。