web-dev-qa-db-fra.com

Connexion à la base de données SQL Server 2012 avec C # (Visual Studio 2012)

Soirée tous

J'essaie de me connecter à une base de données SQL Server 2012 à partir de C #. Mes paramètres de connexion lors de l'utilisation de SQL Server Management Studio sont les suivants: -

Server Type:    Database Engine
Server Name:    Paul-PC\SQLEXPRESS
Authentication: Windows Authentication
Username:   Greyed out
Password:   Greyed out 

Le nom de la base de données à laquelle je tente de me connecter est "testDB".

Voici mon code:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace DatabaseConnection
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnConnect_Click(object sender, EventArgs e)
        {
            SqlConnection myConnection = new SqlConnection("server=localhost;" +
                                       "Trusted_Connection=yes;" +
                                       "database=testDB; " +
                                       "connection timeout=30");
            try
            {
                myConnection.Open();
                MessageBox.Show("Well done!");
            }
            catch(SqlException ex)
            {
               MessageBox.Show("You failed!" + ex.Message);
            }

        }
    }
}

Malheureusement, mon code ne parvient pas à se connecter avec l'erreur suivante: -

"Vous avez échoué! Une erreur liée au réseau ou spécifique à l'instance s'est produite lors de l'établissement d'une connexion à SQL Server. Le serveur était introuvable ou inaccessible. Vérifiez que le nom de l'instance est correct et que SQL Server est configuré pour autoriser les connexions à distance. "

Aucune suggestion? SQL Server s'exécute localement.

9
thefragileomen

Dans votre chaîne de connexion, remplacez server=localhost par "server = Paul-PC\\SQLEXPRESS;"

6
Milen

J'ai testé toutes les réponses ici, mais pour moi, aucune n'a fonctionné. J'ai donc étudié un peu le problème et finalement j'ai trouvé la chaîne de connexion nécessaire. Pour obtenir cette chaîne, vous faites:
1. dans votre nom de projet:
une. faites un clic droit sur le nom du projet,
b. cliquez sur Ajouter,
c. sélectionnez SQL Server Database (vous pouvez évidemment le renommer à votre guise).
Maintenant, la nouvelle base de données souhaitée sera ajoutée à votre projet.
2. La base de données est visible dans la fenêtre de l’explorateur de serveurs.
3. Cliquez avec le bouton gauche sur le nom de la base de données dans la fenêtre de l'Explorateur de serveurs. Maintenant, vérifiez la fenêtre de l'Explorateur de solutions et vous trouverez la "Chaîne de connexion", avec Fournisseur, Etat, Type, Version.
4. Copiez la chaîne de connexion fournie et mettez-la dans la méthode Page_Load:

string source = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=c:\x\x\documents\visual studio 2013\Projects\WebApplication3\WebApplication3\App_Data\Product.mdf;Integrated Security=True";
SqlConnection conn = new SqlConnection(source);
conn.Open();
//your code here;
conn.Close();

J'ai renommé ma base de données en Produit. De même, dans "AttachDbFilename", vous devez remplacer "c:\x\x\documents \" par votre chemin d'accès à l'adresse physique du fichier .mdf.

Cela a fonctionné pour moi, mais je dois mentionner que cette méthode fonctionne pour VS2012 et VS2013. Je ne sais pas sur les autres versions.

3
user3143076

Note à sous

connetionString =@"server=XXX;Trusted_Connection=yes;database=yourDB;";

Note: XXX =. OR.\SQLEXPRESS OR.\MSSQLSERVER OR (local)\SQLEXPRESS OR (localdb)\v11.0 & ...

vous pouvez remplacer ' serveur ' par ' source de données '

vous pouvez aussi remplacer ' base de données ' par ' Catalogue initial '

Échantillon:

 connetionString =@"server=.\SQLEXPRESS;Trusted_Connection=yes;Initial Catalog=books;";
0
ali

Essayer:

SqlConnection myConnection = new SqlConnection("Database=testDB;Server=Paul-PC\\SQLEXPRESS;Integrated Security=True;connect timeout = 30");
0
Ben Narube

Remplacer server=localhost par server=.\SQLEXPRESS pourrait faire l'affaire.

0
Dennis Traub