Utilisation de SQL Server Express Edition avec ASP.NET
Mise à jour : novembre 2007
L'édition Express de Microsoft SQL Server 2005 fournit une solution de base de données simple pour générer des applications. SQL Server Express Edition prend en charge le modèle de programmation SQL Server 2005 complet, et notamment Transact-SQL, les procédures stockées, les affichages, les déclencheurs, l'intégration SQLCLR (SQL Server CLR) et le type de données XML. Lorsque vous développez une application avec SQL Server Express Edition comme source de données, vous êtes assuré que l'application sera compatible avec les serveurs de production SQL Server 2005.
Connexion à une base de données SQL Server Express Edition
Vous pouvez vous connecter à une base de données SQL Server Express Edition de la même façon qu'à toute base de données SQL Server, en spécifiant le serveur de base de données comme source de données SQL Server Express Edition locale. Par exemple, la chaîne de connexion suivante permet de se connecter à une base de données nommée Customers.
Data Source=.\SQLEXPRESS;Initial Catalog=Customers;Integrated Security=True;
Vous pouvez également spécifier un fichier de base de données à attacher en utilisant l'attribut de chaîne de connexion AttachDBFilename au lieu des attributs de chaîne de connexion InitialCatalog ou Database. La connexion à la base de données à l'aide d'un nom de fichier simplifie le déploiement votre base de données avec votre application (à condition que le serveur cible exécute SQL Server Express Edition). Par exemple, la chaîne de connexion suivante se connecte à une base de données stockée dans le fichier Customers.mdf.
Data Source=.\SQLEXPRESS;AttachDbFileName=e:\data\Customers.mdf;Integrated Security=True;User Instance=True
ASP.NET fournit une option pratique de stockage des données dans le répertoire App_Data d'une application Web. Le contenu du répertoire App_Data n'est pas transmis en réponse aux demandes Web, ce qui améliore la sécurité des données de votre application. Plus pratique encore, vous pouvez fournir la variable de chaîne de connexion |DataDirectory| au lieu du chemin d'accès au répertoire App_Data de votre application. Les fonctionnalités ASP.NET, telles que le contrôle SqlDataSource ou les fournisseurs d'appartenance, de rôles, de profils utilisateur, de personnalisation WebParts, etc. substitueront automatiquement la variable de chaîne de connexion |DataDirectory| au chemin d'accès au répertoire App_Data lors de l'ouverture d'une connexion à la base de données. Vous êtes ainsi assuré que le chemin d'accès à votre base de données reste à jour si votre application Web est déplacée vers un répertoire différent. L'exemple de code suivant montre une chaîne de connexion qui inclut la variable de chaîne de connexion |DataDirectory|.
Data Source=.\SQLEXPRESS;AttachDbFileName=|DataDirectory|Customers.mdf;Integrated Security=True;User Instance=True
Remarque : |
---|
SQL Server Express Edition n'autorise qu'une seule connexion à un fichier .mdf lorsque vous vous connectez à l'aide d'une chaîne de connexion User Instance dont la valeur est true. |
Vous pouvez fermer la connexion détenue par Visual Web Developer en cliquant avec le bouton droit sur la base de données dans l'Explorateur de solutions et en sélectionnant l'option Détacher ou encore en cliquant avec le bouton droit sur la base de données dans l'Explorateur de serveurs et en sélectionnant Fermer la connexion. Visual Web Developer ferme automatiquement toutes les connexions de base de données ouvertes lorsque vous exécutez ou déboguez votre application Web.
En outre, si vous devez libérer des connexions ouvertes à une base de données SQL Server Express Edition, vous pouvez décharger votre application Web en utilisant le Gestionnaire des services IIS. Vous pouvez également décharger une application Web en ajoutant un fichier HTML nommé App_offline.htm au répertoire racine de votre application Web. Pour permettre à votre application Web de répondre à nouveau aux demandes Web, il suffit simplement de supprimer le fichier App_offline.htm. Vous devez libérer des connexions ouvertes à une base de données SQL Server Express Edition lorsque vous souhaitez copier ou déplacer la base de données vers un nouvel emplacement.
Installation d'une base de données SQL Server Express Edition
Visual Web Developer fournit des outils qui vous aident à créer une base de données SQL Server Express Edition, à gérer des éléments de base de données, tels que les tables, procédures stockées, etc. et à gérer des connexions à la base de données. Vous pouvez accéder à ces fonctions via la fenêtre Explorateur de serveurs. Pour obtenir des instructions sur la création d'une base de données SQL Server Express Edition, consultez Comment : créer des bases de données SQL Server Express Edition.
Vous pouvez également créer une base de données SQL Server Express Edition en vous connectant à un ordinateur SQL Server Express Edition et en publiant une commande CREATE DATABASE, ou encore à l'aide des outils de gestion SQL Server fournis dans SQL Server Express Edition.
Le fournisseur par défaut des fonctionnalités ASP.NET qui stockent des données dans une base de données SQL Server, et notamment l'appartenance, les rôles, les profils utilisateur, la personnalisation WebParts, etc. est configuré pour se connecter à la base de données Aspnetdb.mdf de SQL Server Express Edition dans le répertoire App_Data de votre application. Si vous activez l'une de ces fonctionnalités de stockage des données à l'aide du fournisseur par défaut et que la base de données Aspnetdb.mdf de SQL Server Express Edition n'existe pas dans le répertoire App_Data de votre application, la base de données est créée automatiquement. Le répertoire App_Data de votre application est également créé s'il n'existe pas.
Instances d'utilisateurs
SQL Server Express Edition prend en charge des instances d'utilisateurs, ce qui signifie qu'un nouveau processus démarre pour chaque utilisateur qui se connecte à une base de données SQL Server Express Edition. L'identité du processus est l'utilisateur qui a ouvert la connexion. Pour plus d'informations sur la détermination de l'identité d'une application ASP.NET, consultez Emprunt d'identité ASP.NET.
Lorsque vous vous connectez à un projet de base de données local, Visual Web Developer se connecte à la base de données SQL Server Express Edition avec les instances d'utilisateur activées par défaut. Par exemple, l'exemple de code suivant illustre une chaîne de connexion classique utilisée par Visual Web Developer pour se connecter à une base de données SQL Server Express Edition.
Data Source=.\SQLEXPRESS;AttachDbFileName=|DataDirectory|Database.mdf;Integrated Security=True;User Instance=True
Bien que l'activation des instances d'utilisateur soit adaptée au développement bureautique, le démarrage de processus de travail ne convient pas dans le cas de serveurs Web hébergeant des sites pour plusieurs clients, où les applications doivent être séparées et sécurisées. Les applications ASP.NET qui s'exécutent avec la même identité de processus peuvent se connecter à la même instance d'utilisateur. Dans la mesure où toutes les applications ASP.NET s'exécutent avec la même identité de processus sur Windows 2000 et Windows XP Professionnel (par défaut, le compte ASPNET local) et que les applications ASP.NET dans le même pool d'applications s'exécutent avec la même identité de processus sur Windows Server 2003, (par défaut, le compte SERVICE RÉSEAU), les serveurs d'hébergement partagés qui contiennent des applications sans relation d'approbation entre elles doivent désactiver explicitement les instances d'utilisateurs. Cette fonctionnalité peut être désactivée en se connectant à l'instance SQL Server Express Edition (par exemple, en tapant la commande suivante dans une invite de commandes : osql –E –S .\SQLEXPRESS) et en publiant la commande Transact-SQL suivante.
EXEC sp_configure 'show advanced option', '1'
GO
RECONFIGURE WITH OVERRIDE
GO
EXEC sp_configure 'user instances enabled', 0
GO
RECONFIGURE WITH OVERRIDE
GO
Déploiement d'une base de données SQL Server Express Edition
Une base de données SQL Server Express est composée de deux fichiers : le fichier .mdf qui contient le schéma de base de données et les données ainsi que le fichier .ldf qui contient les informations de journal de la base de données. Lorsque vous déployez un site Web à l'aide de l'outil Copier le site Web, les fichiers de base de données SQL Server Express Edition sont également copiés. Votre application continuera de s'exécuter tant que SQL Server Express Edition est installé sur le serveur cible. Pour plus d'informations, consultez Comment : copier des fichiers de site Web avec l'outil Copier le site Web.
Il existe plusieurs options de déploiement d'une base de données SQL Server Express Edition, et notamment les suivantes.
Si vous établissez une connexion basée sur des fichiers à votre base de données SQL Server Express Edition, ces fichiers peuvent être copiés avec votre application vers un serveur cible (sur lequel SQL Server Express Edition est installé) à l'aide de XCopy, de FTP ou d'un autre moyen.
Dans la mesure où SQL Server Express Edition utilise le même format de fichier que d'autres versions de SQL Server 2005, vous pouvez copier les fichiers .mdf et .ldf vers un serveur SQL Server puis joindre les fichiers en tant que base de données.
Si vous souhaitez copier une base de données SQL Server Express Edition vide qui contient le schéma de base de données, mais aucune donnée, les outils de gestion SQL Server vous permettent de générer des scripts qui peuvent être exécutés dans votre base de données cible pour dupliquer le schéma de votre base de données de développement.
Remarque : |
---|
Si vous déployez votre base de données SQL Server Express Edition sur un serveur Web qui héberge plusieurs sites sans relation d'approbation entre eux, vous ne pouvez pas utiliser de connexions basées sur des fichiers ou des instances d'utilisateurs afin d'éviter l'exposition de vos données à d'autres applications installées sur le serveur. Dans ce cas, il est recommandé de migrer le contenu de votre base de données SQL Server Express Edition vers une autre version de SQL Server 2005 à laquelle votre application ASP.NET déployée peut accéder. |
Si votre base de données SQL Server Express Edition contient des informations chiffrées, telles que les mots de passe chiffrés stockés dans une base de données d'appartenance, assurez-vous que vos clés de chiffrement sont également copiées vers le serveur cible.
Si vous souhaitez déplacer toute la base de données SQL Server Express Edition, vous devez veiller à ce qu'il n'y ait pas de connexions ouvertes à la base de données, qui entraîneraient son verrouillage.
Déverrouillage d'une base de données verrouillée
S'il existe une connexion ouverte à une base de données, la base de données est verrouillée et ne peut pas être déplacée ou supprimée. Les connexions ouvertes peuvent être détenues par une application ASP.NET, Visual Studio ou un autre programme ou client de base de données. Pour déverrouiller une base de données, toutes les connexions ouvertes à la base de données doivent être fermées. Vous pouvez fermer les connexions ouvertes de plusieurs façons :
Vous pouvez fermer la connexion détenue par Visual Web Developer en cliquant avec le bouton droit sur la base de données dans l'Explorateur de solutions et en sélectionnant l'option Détacher ou encore en cliquant avec le bouton droit sur la base de données dans l'Explorateur de serveurs et en sélectionnant Fermer la connexion. Visual Web Developer ferme automatiquement toutes les connexions de base de données ouvertes lorsque vous exécutez ou déboguez votre application Web.
Vous pouvez fermer toutes les connexions détenues par une application ASP.NET en fermant l'application. Pour ce faire, vous pouvez utiliser le Gestionnaire des services IIS ou placer un fichier nommé App_offline.htm dans le répertoire racine de l'application ASP.NET (vous devez supprimer ce fichier pour redémarrer l'application).
Vous pouvez fermer toutes les connexions détenues par d'autres sources, telles qu'une application Windows Forms, en quittant le programme.
Voir aussi
Concepts
Vue d'ensemble des propriétés du profil ASP.NET
Autres ressources
Accès aux données avec ASP.NET