Sélection d'une base de données
La plupart des objets d'une instance de MicrosoftSQL Server sont stockés dans des bases de données. Toutes les références aux objets de base de données doivent être résolues explicitement ou implicitement dans la base de données spécifique où ils résident.
Références de base de données
Il y a référence explicite à une base de données lorsqu'une instruction Transact-SQL nomme la base de données qui comporte les données. L'exemple ci-après nomme explicitement la base de données AdventureWorks :
SELECT EmployeeID, LoginID, ManagerID
FROM AdventureWorks.HumanResources.Employee
Il y a référence implicite à une base de données lorsqu'une instruction Transact-SQL ne précise pas le nom de la base de données, par exemple :
SELECT EmployeeID, LoginID, ManagerID
FROM HumanResources.Employee
Pour résoudre les références implicites, SQL Server utilise le concept d'une base de données active. Pour chaque connexion à une instance de SQL Server, il existe toujours une base de données définie comme base de données active Toutes les références aux objets qui ne précisent pas le nom d'une base de données sont supposées désigner des objets de la base de données active Si AdventureWorks a été définie comme base de données pour une connexion, toute instruction qui fait référence à l'objet Product désignera la table Product de la base de données AdventureWorks.
Base de données par défaut
Toutes les connexions à SQL Server possèdent une base de données par défaut. Lorsque la connexion est définie par un membre du rôle de serveur fixe sysadmin, la base de données par défaut de la connexion peut être spécifiée. Si aucune base de données par défaut n'est indiquée, la base master devient la base de données par défaut de cette connexion. La base de données par défaut d'une connexion peut toutefois être modifiée ultérieurement à l'aide de la procédure stockée sp_defaultdb.
Lorsque vous vous connectez pour la première fois à une instance de SQL Server, la base de données par défaut de la connexion devient généralement la base de données active. Vous pouvez cependant choisir, au moment de la connexion, une base de données spécifique qui deviendra la base de données en cours. La base de données que vous indiquez remplacera la base de données par défaut désignée pour la connexion. Vous pouvez indiquer une base de données lors d'une requête de connexion des manières suivantes :
Avec l'utilitaire sqlcmd, spécifiez le nom de la base de données à l'aide du commutateur /d.
Avec ADO, indiquez le nom de la base de données dans la propriété Initial Catalog d'un objet connexion ADO.
Avec le fournisseur OLE DB SQL Server Native Client, spécifiez le nom de la base de données dans la propriété DBPROP_INIT_CATALOG.
Avec le pilote ODBC SQL Server Native Client, vous pouvez définir un nom de base de données dans une source de données ODBC à l'aide de la zone Database de l'Assistant qui permet de configurer Microsoft SQL Server DSN ou de DATABASE = parameter lors d'un appel à SQLConfigDataSource. Vous pouvez également définir DATABASE = lors d'un appel à SQLDriverConnect ou à SQLBrowseConnect.
Sélection d'une base de données
Vous pouvez modifier la base de données active lorsque vous êtes connecté à une instance de SQL Server. On parle alors d'utiliser ou de sélectionner une base de données. Pour ce faire, procédez d'une des manières suivantes :
Exécutez l'instruction Transact-SQL USE database_name, quelle que soit l'API de base de données utilisée par une application.
Dans SQL Server Management Studio, cliquez sur Nouvelle requête. Dans la barre d'outils Requête, sélectionnez une base de données dans la liste des bases de données disponibles.
Avec le pilote ODBC SQL Server Native Client, appelez SQLSetConnectAttr pour définir l'attribut de connexion SQL_ATTR_CURRENT_CATALOG.
[!REMARQUE]
Dans de nombreux exemples de référence Transact-SQL de la documentation en ligne de SQL Server, la première ligne de code est USE AdventureWorks. Ceci garantit que l'exemple est exécuté en utilisant la base de données spécifiée explicitement à la place du contexte de base de données actuel.