トップ回答者
既定のインスタンス

質問
回答
-
「vmsdb002」のみでプログラムから接続したいのです。
そのプログラムは、接続文字列をMy.Settingsに持っていますが、プログラムへの変更を極力避けたいのです。
SQL Serverへは、コンピューター名\インスタンス名 で位置を特定して接続します。既定のインスタンスは省略できるので、その場合はコンピューター名だけで接続できます。つまり、「vmsdb002」のみでプログラムから接続したい場合、「vmsdb002」はコンピューター名を指すことになりますので、少なくともvmsdb002という名前のコンピューター名のサーバーが存在していなければなりません。言い換えれば、「vmsdb002」のみでプログラムから接続する場合、それはvmsdb002というコンピューター名の既定のインスタンスに接続することを意味します。
したがって、既定のインスタンス名の変更の問題ではないと思われます。佐祐理さんが回答されている通り、サーバーのコンピューター名をvmsdb002に変更するのが一つの選択肢ですし、それができないのであればMy.Settingsの接続文字列を変更するしかないでしょう。本来、プログラムに手を入れなくても良いようにプログラムから独立したMy.Settingsというところで接続文字列を一元管理するようになっています。コンパイルし直すという意味では同じですが・・・
一つの例ですが、ユーザーがログイン認証された後、認証サーバーから接続文字列を取得する方法もあります。これであればローカルに全く接続文字列を持たないため、特にSQLサーバー認証の場合(基本的にすべきではない認証ですが)、セキュリティ的にも向上します。
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/- 回答としてマーク x47 2010年11月11日 2:52
すべての返信
-
> 名前付インスタンスにした場合、「コンピュータ名¥vmsdb002」になると思いますが、どうでしょうか?
> 「vmsdb002」のみでプログラムから接続したいのです。
「コンピュータ名」のみで接続できていたのではないでしょうか?
(vmsdb002 のみで接続されていたのでしたら、それはコンピュータ名ではないでしょうか)(この確認は無視してください。)
もしその場合は、クライアント側で「別名」を定義されてはいかがでしょうか?
SQL Server 2005 または SQL Server 2000 の名前付きインスタンスに以前のバージョンの SQL Server のクライアント ツールを使用して接続する方法
http://support.microsoft.com/kb/265808/ja -
「vmsdb002」のみでプログラムから接続したいのです。
そのプログラムは、接続文字列をMy.Settingsに持っていますが、プログラムへの変更を極力避けたいのです。
SQL Serverへは、コンピューター名\インスタンス名 で位置を特定して接続します。既定のインスタンスは省略できるので、その場合はコンピューター名だけで接続できます。つまり、「vmsdb002」のみでプログラムから接続したい場合、「vmsdb002」はコンピューター名を指すことになりますので、少なくともvmsdb002という名前のコンピューター名のサーバーが存在していなければなりません。言い換えれば、「vmsdb002」のみでプログラムから接続する場合、それはvmsdb002というコンピューター名の既定のインスタンスに接続することを意味します。
したがって、既定のインスタンス名の変更の問題ではないと思われます。佐祐理さんが回答されている通り、サーバーのコンピューター名をvmsdb002に変更するのが一つの選択肢ですし、それができないのであればMy.Settingsの接続文字列を変更するしかないでしょう。本来、プログラムに手を入れなくても良いようにプログラムから独立したMy.Settingsというところで接続文字列を一元管理するようになっています。コンパイルし直すという意味では同じですが・・・
一つの例ですが、ユーザーがログイン認証された後、認証サーバーから接続文字列を取得する方法もあります。これであればローカルに全く接続文字列を持たないため、特にSQLサーバー認証の場合(基本的にすべきではない認証ですが)、セキュリティ的にも向上します。
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/- 回答としてマーク x47 2010年11月11日 2:52
-
あんまりお勧めしませんが、リプレイスなのであれば、複数のコンピューター名を持たして逃げるとか・・・
@IT:Windows TIPS -- Tips:システム移行などのために複数のコンピュータ名を付ける
「http://www.atmarkit.co.jp/fwin2k/win2ktips/373mltname/mltname.html」 -
なるほど。別名は使ったことが無いので知りませんでした。以下に、「接続のためにサーバー名以外の名前を使用する場合には、別名を作成してください。」とあるので、できそうですね。勉強になりました。
[別名 - 新規] ダイアログ ボックス ([別名] タブ)
http://msdn.microsoft.com/ja-jp/library/ms188635.aspx
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/ -
trapemiya様
SQL Serverへは、コンピューター名\インスタンス名 で位置を特定して接続します。既定のインスタンスは省略できるので、その場合はコンピューター名だけで接続できます。つまり、「vmsdb002」のみでプログラムから接続したい場合、「vmsdb002」はコンピューター名を指すことになりますので、少なくともvmsdb002という名前のコンピューター名のサーバーが存在していなければなりません。言い換えれば、「vmsdb002」のみでプログラムから接続する場合、それはvmsdb002というコンピューター名の既定のインスタンスに接続することを意味します
その通りだと思います。
しかし、既存のシステムがそのように動いている以上、何らかの手段があるのではと思いました。
ちなみに既存システムは Windows2003Server+SQLServer2005 です。再度クライアントを調査する必要があると思います。
コンパイルし直すという意味では同じです
再コンパイル=プログラムの変更と認識しています。ユーザーがログイン認証された後、認証サーバーから接続文字列を取得する方法もあります。これであればローカルに全く接続文字列を持たないため、特にSQLサーバー認証の場合(基本的にすべきではない認証ですが)、セキュリティ的にも向上します
その方法は存じませんでした。ありがとうございます。