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

Если вы создаете строку подключения впервые, то:

<Ол>
  • Если вы знаете, что хотите подключиться к 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;
    
    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top