Auswählen einer Datenbank
Die meisten Objekte einer Instanz von MicrosoftSQL Server werden in Datenbanken gespeichert. Alle Verweise auf Datenbankobjekte müssen daher entweder explizit oder implizit für die spezielle Datenbank aufgelöst werden, in der sich die Objekte befinden.
Datenbankverweise
Explizite Datenbankverweise kommen vor, wenn eine Transact-SQL-Anweisung die Datenbank benennt, die die Daten enthält. Im folgenden Beispiel wird die AdventureWorks-Datenbank explizit benannt:
SELECT EmployeeID, LoginID, ManagerID
FROM AdventureWorks.HumanResources.Employee
Implizite Datenbankverweise treten auf, wenn eine Transact-SQL-Anweisung wie im folgenden Beispiel die Datenbank nicht angibt:
SELECT EmployeeID, LoginID, ManagerID
FROM HumanResources.Employee
Zum Auflösen von impliziten Datenbankverweisen verwendet SQL Server das Konzept einer aktuellen Datenbank. Für jede Verbindung mit SQL Server gibt es immer eine Datenbank, die als aktuelle Datenbank festgelegt ist. Bei allen Objektverweisen, die keinen Datenbanknamen angeben, wird davon ausgegangen, dass sie auf die aktuelle Datenbank verweisen. Wenn z. B. für eine Verbindung AdventureWorks als aktuelle Datenbank festgelegt wurde, wird jede Anweisung, die auf ein Objekt namens Product verweist, als Verweis auf die Product-Tabelle in AdventureWorks aufgelöst.
Standarddatenbank
Jeder SQL Server-Benutzername verfügt über eine Standarddatenbank. Zu dem Zeitpunkt, zu dem der Benutzername von einem Mitglied der festen Serverrolle sysadmin definiert wird, kann die Standarddatenbank für den Benutzernamen angegeben werden. Falls keine Standarddatenbank angegeben wird, wird master als Standarddatenbank für den Benutzernamen festgelegt. Die Standarddatenbank für einen Benutzernamen kann zu einem späteren Zeitpunkt mithilfe der gespeicherten Prozedur sp_defaultdb geändert werden.
Wenn Sie eine Verbindung mit SQL Server herstellen, wird in der Regel die Standarddatenbank für den Benutzernamen anfangs als aktuelle Datenbank festgelegt. Sie können jedoch auch zur Verbindungszeit eine bestimmte Datenbank als aktuelle Datenbank angeben. Diese Anforderung setzt die für den Benutzernamen festgelegte Standarddatenbank außer Kraft. Zur Angabe einer Datenbank bei einer Verbindungsanforderung bestehen folgende Möglichkeiten:
Geben Sie im Dienstprogramm sqlcmd den Datenbanknamen mithilfe der Option /d an.
Legen Sie in ADO den Datenbanknamen in der Initial Catalog-Eigenschaft eines ADO-Verbindungsobjekts fest.
Geben Sie im SQL Server Native Client OLE DB-Anbieter den Datenbanknamen in der DBPROP_INIT_CATALOG-Eigenschaft an.
Im SQL Server Native Client ODBC-Treiber können Sie einen Datenbanknamen in einer ODBC-Datenquelle festlegen, indem Sie im Microsoft SQL Server DSN-Konfigurations-Assistenten das Feld Datenbank oder den DATABASE = parameter bei einem Aufruf von SQLConfigDataSource verwenden. Außerdem können Sie DATABASE = bei einem Aufruf von SQLDriverConnect oder SQLBrowseConnect angeben.
Auswählen einer Datenbank
Die Einstellung für die aktuelle Datenbank kann jederzeit geändert werden, während eine Verbindung mit SQL Server besteht. Dies wird als Verwenden oder Auswählen einer Datenbank bezeichnet. Zum Wechseln der aktuellen Datenbank gibt es folgende Möglichkeiten:
Führen Sie unabhängig von den von einer Anwendung verwendeten Datenbank-APIs die Transact-SQL-Anweisung USE database_name aus.
Klicken Sie in SQL Server Management Studio auf Neue Abfrage. Wählen Sie auf der Abfragesymbolleiste aus der Liste der verfügbaren Datenbanken eine Datenbank aus.
Rufen Sie im SQL Server Native Client ODBC-Treiber SQLSetConnectAttr auf, um das Verbindungsattribut SQL_ATTR_CURRENT_CATALOG festzulegen.
Hinweis In zahlreichen Beispielen der Transact-SQL-Referenz in der SQL Server-Onlinedokumentation ist USE AdventureWorks die erste Codezeile im Beispiel. Damit wird sichergestellt, dass das Beispiel die explizit angegebene Datenbank anstelle der aktuellen Datenbank verwendet.