Comment définir la chaîne de connexion SQL Server?

93

Je développe une application C # simple, j'aimerais savoir ceci: quand je connecte mon application à SQL Server sur mon PC, je connais la chaîne de connexion (nom du serveur, mot de passe etc.), mais quand je la connecte à un autre PC, la chaîne de connexion SQL Server est différente. Existe-t-il un compte commun dans SQL Server fourni avec un compte par défaut pouvant se connecter? J'ai entendu parler de sacompte dans SQL Server, qu'est-ce que c'est sa?

Roshan
la source
5
Vous ne souhaitez jamais utiliser un nom d'utilisateur et un mot de passe de compte par défaut pour configurer l'accès à SQL Server ou à tout type de connexion d'ailleurs.
jordanhill123
4
SAsys_adminrôle de serveur SQL moyen
Elshan
2
Pouvez-vous utiliser l'authentification Windows au lieu de l'authentification SQL Server? Cela éviterait d'avoir à utiliser à la fois des identifiants et des mots de passe.
Philip Sheard

Réponses:

128

.NET DataProvider - Connexion standard avec nom d'utilisateur et mot de passe

using System.Data.SqlClient;

SqlConnection conn = new SqlConnection();
conn.ConnectionString =
  "Data Source=ServerName;" +
  "Initial Catalog=DataBaseName;" +
  "User id=UserName;" +
  "Password=Secret;";
conn.Open();

.NET DataProvider - Connexion approuvée

SqlConnection conn = new SqlConnection();
conn.ConnectionString =
  "Data Source=ServerName;" +
  "Initial Catalog=DataBaseName;" +
  "Integrated Security=SSPI;";
conn.Open();

Reportez-vous au doc .

Itachi
la source
1
Comment puis-je utiliser ce format mais utiliser un utilisateur de domaine? Je continue à recevoir un soulignement rouge lorsque j'utilise user id=Domain\UnameJe pense que c'est quelque chose à voir avec des caractères d'échappement invalides, comment dois-je faire cela correctement?
Wairimu Murigi
1
@Wairimu Murigi Vous devez échapper à la barre oblique inverse ie user id = Domain \\ Uname
John Hartley
1
@Itachi: Désolé pour le necropost. Entrons-nous cela dans la ligne de commande Windows en utilisant SQLCMD?
MSIS
1
Mon mot de passe contient du ;caractère
Kiquenet
1
@Kiquenet Vous pouvez essayer des guillemets simples ou doubles pour l'encapsuler, vérifiez ceci .
Itachi le
30

En fait, vous pouvez utiliser la SqlConnectionStringBuilderclasse pour créer votre chaîne de connexion . Pour créer la chaîne de connexion , vous devez instancier un objet à partir de celui-ci SqlConnectionStringBuilderet définir ses propriétés avec les paramètres que vous utilisez pour vous connecter à la base de données. Ensuite, vous pouvez obtenir la chaîne de connexion de la ConnectionStringpropriété de l' SqlConnectionStringBuilderobjet, comme indiqué dans cet exemple:

Par exemple:

    SqlConnectionStringBuilder sConnB = new SqlConnectionStringBuilder ()
    {
        DataSource = "ServerName",
        InitialCatalog = "DatabaseName",
        UserID = "UserName",
        Password = "UserPassword"
    }.ConnectionString

SqlConnection conn = new SqlConnection(sConnB.ConnectionString);

Vous pouvez soit utiliser l' newopérateur pour le faire directement.

Par exemple:

SqlConnection conn = new SqlConnection(
    new SqlConnectionStringBuilder ()
    {
        DataSource = "ServerName",
        InitialCatalog = "DatabaseName",
        UserID = "UserName",
        Password = "UserPassword"
    }.ConnectionString
);

Vous pouvez ajouter plus de paramètres pour créer votre chaîne de connexion . N'oubliez pas que les paramètres sont définis par les valeurs définies dans les SqlConnectionStringBuilderpropriétés de l' objet.

Vous pouvez également obtenir la chaîne de connexion à la base de données à partir de la connexion de Microsoft Visual Studio avec la base de données attachée. Lorsque vous sélectionnez le DB, dans le panneau des propriétés s'affiche la chaîne de connexion .

La liste complète des propriétés de la SqlConnectionStringBuilderclasse est répertoriée dans cette page du site Microsoft MSDN.

À propos de l'utilisateur par défaut de SQL Server, sa signifie «administrateur système» et son mot de passe varie en fonction de la version de SQL Server. Dans cette page, vous pouvez voir comment le mot de passe varie.

Utilisateur SQL Server 2008 / R2 Express: mot de passe sa: [mot de passe vide - laissez le champ vide pour vous connecter]

Utilisateur SQL Server 201x Express: sa Mot de passe: Password123

Utilisateur Web ou standard SQL Server 20xx: mot de passe sa: sera le même que votre mot de passe d'administrateur ou d'utilisateur racine au moment où le VDS a été provisionné.

Vous pouvez vous connecter avec un utilisateur dans cette fenêtre de connexion au démarrage de SQL Server Database Manager. Comme dans cette image:

Exemple de connexion

Cryogénique Néo
la source
15

Fournisseur de données .NET - Chemin relatif par défaut - Connexion standard

 using System.Data.SqlClient;
 var conn = new SqlConnection();
 conn.ConnectionString = 
 "Data Source=.\SQLExpress;" + 
 "User Instance=true;" + 
 "User Id=UserName;" + 
 "Password=Secret;" + 
 "AttachDbFilename=|DataDirectory|DataBaseName.mdf;"conn.Open();

Fournisseur de données .NET - Chemin relatif par défaut - Connexion approuvée

 using System.Data.SqlClient;
 var conn = new SqlConnection();
 conn.ConnectionString = 
 "Data Source=.\SQLExpress;" + 
 "User Instance=true;" + 
 "Integrated Security=true;" + 
 "AttachDbFilename=|DataDirectory|DataBaseName.mdf;" conn.Open();

Fournisseur de données .NET - Chemin relatif personnalisé - Connexion standard

using System.Data.SqlClient;
AppDomain.CurrentDomain.SetData(
"DataDirectory", "C:\MyPath\");
 var conn = new SqlConnection();
 conn.ConnectionString = 
 "Data Source=.\SQLExpress;" + 
 "User Instance=true;" + 
 "User Id=UserName;" + 
 "Password=Secret;" + 
"AttachDbFilename=|DataDirectory|DataBaseName.mdf;" conn.Open();  

Fournisseur de données .NET - Chemin relatif personnalisé - Connexion approuvée

 using System.Data.SqlClient;
 AppDomain.CurrentDomain.SetData(
 "DataDirectory", "C:\MyPath\");
 var conn = new SqlConnection();
 conn.ConnectionString = 
 "Data Source=.\SQLExpress;" + 
 "User Instance=true;" + 
 "Integrated Security=true;" + 
 "AttachDbFilename=|DataDirectory|DataBaseName.mdf;" conn.Open();
Hemlata Gehlot
la source
11

Vous pouvez utiliser la chaîne de connexion comme suit et il vous suffit d'ajouter le nom de votre base de données.

string connetionString = "Data Source=.;Initial Catalog=DB name;Integrated Security=True;MultipleActiveResultSets=True";
Chamila Maddumage
la source
8

Il y a un certain nombre de choses dont il faut se soucier lors de la connexion à SQL Server sur une autre machine.

  • Adresse hôte / IP de la machine
  • Catalogue initial (nom de la base de données)
  • Nom d'utilisateur / mot de passe valide

Très souvent, le serveur SQL peut être exécuté en tant qu'instance par défaut, ce qui signifie que vous pouvez simplement spécifier le nom d'hôte / l'adresse IP, mais vous pouvez rencontrer un scénario où il s'exécute en tant qu'instance nommée (Sql Express par exemple). Dans ce scénario, vous devrez spécifier le nom d'hôte \ le nom de l'instance.

scartag
la source
6

Vous devez comprendre qu'un serveur de base de données ou un DBA ne voudrait pas que n'importe qui puisse se connecter ou modifier le contenu du serveur. C'est tout le but des comptes de sécurité. Si un seul nom d'utilisateur / pwd fonctionnait sur n'importe quelle machine, il n'offrirait aucune protection. Ce "sa" chose dont vous avez entendu parler, ne fonctionne pas avec SQL Server 2005, 2008 ou 2012. Je ne suis pas sûr des versions précédentes. Je crois que quelque part dans les premiers jours de SQL Server, le nom d'utilisateur et pwd par défaut était sa / sa, mais ce n'est plus le cas.

Pour info, la sécurité des bases de données et les rôles sont beaucoup plus compliqués de nos jours. Vous souhaiterez peut-être examiner les détails de l'authentification Windows. Si votre serveur SQL est configuré pour cela, vous n'avez pas besoin de nom d'utilisateur / pwd dans la chaîne de connexion pour vous y connecter. Tout ce que vous devez changer est le nom de la machine serveur et la même chaîne de connexion fonctionnera avec vos deux machines, étant donné que les deux ont le même nom de base de données bien sûr.

point net
la source
1
sa est le compte sysadmin de SQL Server. S'il a été installé avec l'authentification serveur SQL ou l'authentification en mode mixte, vous devez configurer un compte sa. Pour référence future, voici un guide sur la façon de configurer le compte sa s'il n'a pas été installé avec l'authentification de serveur SQL activée.
iCodeSometime
6

Vous pouvez utiliser l'authentification Windows, si votre serveur est dans le domaine, ou l'authentification SQL. Sa - est un administrateur système, le compte racine pour l'authentification du serveur SQL. Mais c'est une mauvaise pratique à utiliser pour la connexion de vos clients. Vous devez créer vos propres comptes et les utiliser pour vous connecter à votre SQL. Dans chaque connexion que vous définissez la connexion au compte , son mot de passe et la base de données par défaut , vous souhaitez vous connecter.

Alex
la source
6

saest un compte d'administrateur système fourni par défaut avec le serveur sql. Comme vous le savez peut-être déjà, vous pouvez utiliser deux méthodes pour vous connecter à SQL Server.

capture d'écran de SQL Server Management Studio

Par conséquent, il existe des chaînes de connexion adaptées à chaque scénario (comme l'authentification Windows, localdb, etc.). Utilisez https://msdn.microsoft.com/en-us/library/jj653752(v=vs.110).aspx#sqlserver pour créer votre chaîne de connexion. Ce sont des balises XML. Vous avez juste besoin de la valeur de connectionString

Menuka Ishan
la source
4

Nous pouvons simplement nous connecter à la base de données:

 uid=username;pwd=password;database=databasename;server=servername

Par exemple:

string connectionString = @"uid=spacecraftU1;pwd=Appolo11;
                            database=spacecraft_db;
                            server=DESKTOP-99K0FRS\\PRANEETHDB";
SqlConnection con = new SqlConnection(connectionString);
Praneeth Gopinathan
la source
-2
"ConnectionString":{
  "Database_Name": "server=.;database=Database_Name;Integrated Security=true;"
},

Essaye celui-là

VLB DE MEL
la source