Cómo obtener el nombre del servidor a través del código si está instalado SQL Server (edición estándar)

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

Pregunta

Cómo obtener el nombre del servidor a través del código si está instalado SQL Server (Edición estándar).

Pasamos el nombre del servidor mientras creamos una cadena de conexión para conectar a SQL Server. ¿Podemos recuperar este valor a través del código?

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);
¿Fue útil?

Solución

No estoy seguro de entender lo que quieres.

Si ya tiene una cadena de conexión y está tratando de extraer el nombre del servidor para usarla en otro lugar, puede realizar ingeniería inversa de esta manera:

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

Si está construyendo su cadena de conexión por primera vez, entonces:

  1. Si sabe que desea conectarse al SQL Server en la máquina en la que se está ejecutando el código de su cliente, simplemente use (local) para el nombre del servidor. Si el servidor SQL tiene un nombre de instancia, especifíquelo así: (local) \ myinstancename .
  2. Si no sabe de antemano a qué servidor conectarse, entonces depende de usted obtener esa información en otro lugar.

Otros consejos

¿No puedes ejecutar SELECT @@ SERVERNAME en esta conexión?

¿Está el servidor en la computadora local?
Si es así, establezca el nombre del servidor en localhost .
Si no, use SqlDataSourceEnumerator .


Además, en lugar de crear una cadena de conexión utilizando String.Format , debe usar un SqlConnectionStringBuilder . Esto manejará los valores con punto y coma.

Por ejemplo:

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;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top