Question

Comment obtenir le nom du serveur via le code si SQL Server (Standard Edition) est installé.

Nous passons le nom du serveur lors de la création d'une chaîne de connexion pour connecter SQL Server. Pouvons-nous récupérer cette valeur par le code?

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);
Était-ce utile?

La solution

Je ne suis pas sûr de comprendre ce que vous voulez.

Si vous avez déjà une chaîne de connexion et que vous essayez d’en extraire le nom du serveur pour l’utiliser ailleurs, vous pouvez procéder à un reverse-engineering de la manière suivante:

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

Si vous construisez votre chaîne de connexion pour la première fois, alors:

  1. Si vous savez que vous souhaitez vous connecter à SQL Server sur la machine sur laquelle votre code client s'exécute, utilisez simplement (local) pour le nom du serveur. Si le serveur SQL a un nom d'instance, spécifiez-le ainsi: (local) \ myinstancename .
  2. Si vous ne connaissez pas à l'avance le serveur auquel vous souhaitez vous connecter, c'est à vous d'obtenir ces informations ailleurs.

Autres conseils

Ne pouvez-vous pas simplement exécuter SELECT @@ SERVERNAME sur cette connexion?

Le serveur est-il sur l'ordinateur local?
Si tel est le cas, définissez le nom du serveur sur localhost .
Sinon, utilisez SqlDataSourceEnumerator .

De même, au lieu de créer une chaîne de connexion à l'aide de String.Format , vous devez utiliser un SqlConnectionStringBuilder . Ceci gérera les valeurs avec des points-virgules.

Par exemple:

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;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top