Pergunta

Como obter o nome do servidor por meio de código se SQL Server (Standard Edition) está instalado.

Nós passamos o nome do servidor ao criar uma cadeia de ligação para conectar SQL Server. podemos recuperar esse valor através de 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);
Foi útil?

Solução

Eu não tenho certeza eu entendo o que você quer.

Se você já tem uma seqüência de conexão, e você está tentando extrair o nome do servidor para uso em outro lugar, você pode inverter-engenheiro-lo assim:

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

Se você está construindo sua seqüência de conexão, pela primeira vez, então:

  1. Se você sabe que você deseja se conectar ao SQL Server na máquina que o código do cliente está em execução, então é só usar (local) para o nome do servidor. Se o SQL Server tem um nome de instância, em seguida, especificá-lo como este:. (local)\myinstancename
  2. Se você não sabe com antecedência o servidor para se conectar, então é até você para obter essa informação de algum outro lugar.

Outras dicas

Você não pode apenas executar SELECT @@ SERVERNAME contra esta conexão?

é o servidor no computador local?
Se assim for, defina o nome do servidor para localhost.
Se não, uso SqlDataSourceEnumerator .


Além disso, em vez de construir uma cadeia de conexão usando String.Format, você deve usar um SqlConnectionStringBuilder . Isto irá lidar com valores com ponto e vírgula.

Por exemplo:

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top