Как получить имя сервера через код, если установлен 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;
Если вы создаете строку подключения впервые, то:
<Ол> (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;