SQL Server(Standard Edition)がインストールされている場合、コードからサーバー名を取得する方法

StackOverflow https://stackoverflow.com/questions/1613186

質問

SQL Server(Standard Edition)がインストールされている場合、コードからサーバー名を取得する方法。

SQL Serverに接続するための接続文字列の作成中にサーバー名を渡します。コードを使用してこの値を取得できますか?

string sqlConnectionString = string.Format(
"user id={0};password={1};server={2};Trusted_Connection=no;database=TestDB;
connection timeout={3}",
dirDBinfo.UserName, dirDBinfo.Password, "ServerName", dirDBinfo.TimeOut);
役に立ちましたか?

解決

あなたが何を望んでいるか理解していない。

既に接続文字列があり、そこからサーバー名を抽出して別の場所で使用しようとしている場合は、次のようにリバースエンジニアリングできます。

var parser = new SqlConnectionStringBuilder(connectionString);
var serverName = parser.DataSource;

接続文字列を初めて構築する場合:

  1. クライアントコードを実行しているマシンのSQL Serverに接続することがわかっている場合は、サーバー名に(local)を使用します。 SQL Serverにインスタンス名がある場合は、(local)\ myinstancename のように指定します。
  2. 接続するサーバーが事前にわからない場合は、他の場所からその情報を取得するのはあなた次第です。

他のヒント

この接続に対してSELECT @@ SERVERNAMEを実行するだけではいいですか?

サーバーはローカルコンピューターにありますか?
その場合、サーバー名を localhost に設定します。
そうでない場合は、 SqlDataSourceEnumeratorを使用します。


また、 String.Format を使用して接続文字列を作成する代わりに、 SqlConnectionStringBuilder 。これは、セミコロンで値を処理します。

例:

var builder = new SqlConnectionStringBuilder();

builder.UserID = dirDBinfo.UserName;
builder.Password = dirDBinfo.Password;
builder.Server= "localhost";
builder.UserID = dirDBinfo.UserName;
builder["Trusted_Connection"] = "no";
builder.Database = "TestDB"
builder.ConnectTimeout = dirDBinfo.TimeOut;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top