SQL Server(Standard Edition)がインストールされている場合、コードからサーバー名を取得する方法
-
06-07-2019 - |
質問
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;
接続文字列を初めて構築する場合:
- クライアントコードを実行しているマシンのSQL Serverに接続することがわかっている場合は、サーバー名に
(local)
を使用します。 SQL Serverにインスタンス名がある場合は、(local)\ myinstancename
のように指定します。 - 接続するサーバーが事前にわからない場合は、他の場所からその情報を取得するのはあなた次第です。
他のヒント
この接続に対して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;
所属していません StackOverflow