ASP.NET : Chaîne de connexion à la base de données

Afin de pouvoir accéder aux données, il faut configurer une chaîne de connexion dans le fichier Web.config. La configuration sera donc effectuée à un seul endroit et vous utiliserez cette même chaîne de connexion à chaque fois que vous devez accéder à votre base de données.

▼Publicité

Vous pouvez configurer la chaîne de connexion à l'aide d'un assistant de Visual Studio, par exemple lorsque vous ajoutez un contrôle orienté données en mode Design. Vous obtiendrez une chaîne de connexion semblable à celle-ci :

Fichier Web.config

<add name="ConnectionStringVotreBD"

    connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\VotreBD.mdf;Integrated Security=True"

    providerName="System.Data.SqlClient" />

ou, selon les configurations de votre ordinateur :

Fichier Web.config

<add name="ConnectionStringVotreBD"

    connectionString="Data Source=(LocalDB)\v11.0;Initial Catalog=VotreBD.mdf;Integrated Security=True" 

    providerName="System.Data.SqlClient" />

Vous pouvez également configurer la chaîne de connexion manuellement. Pour cela, ouvrez le fichier Web.config et ajoutez le code précédent dans la zone <connectionStrings>. Si vous n'avez qu'une balise <connectionStrings/>, changez-la pour <connectionStrings></connectionStrings> et placez le code entre les deux.

Pour faciliter la mise en ligne

Lors de la mise en ligne, la chaîne de connexion devra être modifiée pour que IIS puisse retrouver la BD sur le serveur de production. Vous devez donc modifier votre fichier Web.config comme suit.

Notez que dans cet exemple, trois chaînes de connexion sont présentes : une pour votre machine locale, une pour le serveur de développement et une pour le serveur de production. Une seule sera effectivement utilisée. Les autres seront en commentaires. La chaîne effectivement utilisée dépendra de l'endroit où les données doivent être lues.

Fichier Web.config

<connectionStrings>

 

    <!-- ******** Machine locale ******** -->

    <add name="ConnectionStringVotreSite"

        connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\VotreBD.mdf; Integrated Security=True" 

        providerName="System.Data.SqlClient" />

 

    <!-- ******** Serveur de développement******** -->

    <!--

    <add name="ConnectionStringVotreSite"

        connectionString="Data Source=NOM_SERVEUR_DEVELOPPEMENT;Initial Catalog=VotreBD;User Id=connexion;Password=motpasse

        providerName="System.Data.SqlClient" />

    -->

 

    <!-- ******** Serveur de production ******** -->

    <!--

    <add name="ConnectionStringVotreSite"

        connectionString="Data Source=NOM_SERVEUR_PRODUCTION;Initial Catalog=VotreBD;User Id=connexion;Password=motpasse

        providerName="System.Data.SqlClient" />

    -->

 

</connectionStrings>

Ajustement à apporter aux chaînes de connexion :

  • Pour les trois chaînes de connexion, vous devez changer ConnectionStringVotreSite pour ConnectionString suivi du nom de votre site Web. C'est ce nom qui sera utilisé partout dans votre code pour accéder à votre base de données. Vos trois chaînes de connexion utiliseront ce même nom.
  • Pour la machine locale, vous devez changer VotreBD.mdf pour le nom de votre base de données. 
  • Pour le serveur de développement et le serveur de production, vous devez changer VotreBD par le nom logique donné lorsque la BD a été attachée au serveur (voir l'article « SQL Server Management Studio (SSMS) »). Attention : lorsque vous faites affaire avec un serveur partagé, vous n'avez généralement pas de contrôle sur le nom logique de votre BD. Il est donc possible que le nom de la BD soit différent pour les chaînes de connexion.
  • Pour le serveur de développement et le serveur de production, vous trouverez chez votre hébergeur les valeurs à utiliser pour NOM_SERVEUR_DEVELOPPEMENT ou NOM_SERVEUR_PRODUCTION, connexion et mot passe. Notez que connexion et mot passe ne correspondent nullement aux informations de l'usager qui sera logué sur le site Web. C’est plutôt un nom de connexion utilisé à l’interne, que IIS enverra au serveur de base de données pour se brancher.

    Si vous avez accès aux configurations du serveur MS SQL, vous pouvez obtenir le nom du serveur à l'aide de la requête SQL suivante :

    MS SQL

    select @@servername;

  • Quand vous serez prêt à mettre votre site en ligne sur l'un ou l'autre des serveurs, vous déplacerez les commentaires afin de n'avoir toujours qu'une chaîne de connexion à utiliser. 

AttachDbFilename vs Initial Catalog

La chaîne de connexion générée par Visual Studio peut travailler avec l'attribut Initial Catalog ou avec AttachDbFileName.

Si vous travaillez avec Initial Catalog, ceci signifie que pour que la base de données soit disponible pour votre site Web, elle doit être attachée au serveur. Le nom qui est précisé pour l'attribut Initial Catalog n'est pas le nom physique de la base de données. C'est le nom logique qui a été précisé lors de l'attachement.

Si vous souhaitez, lorsque vous travaillez localement, vous pouvez modifier la chaîne de connexion pour travailler directement avec la base de données, sans devoir l'attacher. Pour cela, changez l'attribut Initial Catalog pour AttachDbFilename. Vous devrez préciser le chemin complet de la BD. Par chance, ce chemin est représenté par la variable d'environnement |DataDirectory|. 

Fichier Web.config

<!-- ******** Machine locale ******** -->

<add name="ConnectionStringVotreSite

    connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\VotreBD.mdf; Integrated Security=True" 

    providerName="System.Data.SqlClient" />

Chaîne de connexion pour SQL Server Express

Si vous désirez travailler localement avec SQL Server Express plutôt que SQL Server Express LocalDB, vous devez adapter votre chaîne de connexion pour le serveur de développement comme suit :

Fichier Web.config

<!-- ******** Machine locale (avec SQL Server Express) ******** -->

<add name="ConnectionStringVotreSite

    connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\VotreBD.mdf;Integrated Security=True;User Instance=True

    providerName="System.Data.SqlClient" />

Pour plus d'information

« The Connection String Reference ». connectionstrings.com. http://www.connectionstrings.com/

« Connection strings for SQL Server 2000 ». ConnectionStrings.com. http://www.connectionstrings.com/sql-server

Merci de partager ! Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestShare on StumbleUponEmail this to someone
Catégories