Как получить имя сервера через код, если SQL Server (Standard Edition) установлен

“First class” означает, что можно воздействовать на них обычным способом. Большинство времен, это просто означает, что можно передать этих первоклассных граждан как аргументы функциям или возвратить их из функций.

Это самоочевидно для объектов, но не всегда так очевидно для функций, или даже классов:

void f(int n) { return n * 2; }

void g(Action<int> a, int n) { return a(n); }

// Now call g and pass f:

g(f, 10); // = 20

Это - пример в C#, где функции на самом деле не первоклассные объекты. Вышеупомянутый код поэтому использует маленькое обходное решение (а именно, универсальный делегат звонил Action<>) передать функцию как аргумент. Другие языки, такие как Ruby, позволяют рассматривать даже классы и кодируют блоки как нормальные переменные (или в случае Ruby, констант).

5
задан abatishchev 15 February 2014 в 04:39
поделиться

3 ответа

Я не уверен, что понимаю, что вы хотите.

Если у вас уже есть строка подключения, и вы пытаетесь извлечь из нее имя сервера для использования в другом месте, вы можете отменить -engineer это так:

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

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

  1. Если вы знаете, что хотите подключиться к SQL Server на машине, на которой выполняется ваш клиентский код, тогда просто используйте (локальный) в качестве имени сервера. Если у SQL Server есть имя экземпляра, укажите его следующим образом: (local) \ myinstancename .
  2. Если вы не знаете заранее, к какому серверу подключаться, то решать вам получить эту информацию откуда-нибудь.
8
ответ дан 14 December 2019 в 04:41
поделиться

Вы не можете просто выполнить SELECT @@ SERVERNAME для этого соединения?

0
ответ дан 14 December 2019 в 04:41
поделиться

Находится ли сервер на локальном компьютере?
Если это так, установите имя сервера на 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;
0
ответ дан 14 December 2019 в 04:41
поделиться