Como obter o nome do servidor por meio de código se SQL Server (Standard Edition) é instalado
-
06-07-2019 - |
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);
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:
- 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
- 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;