Auswählen einer Datenbank

Die meisten Objekte einer Instanz von SQL 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 AdventureWorks2008R2-Datenbank explizit benannt:

SELECT BusinessEntityID, LoginID, NationalIDNumber
FROM AdventureWorks2008R2.HumanResources.Employee;

Implizite Datenbankverweise treten auf, wenn eine Transact-SQL-Anweisung wie im folgenden Beispiel die Datenbank nicht angibt:

SELECT BusinessEntityID, LoginID, NationalIDNumber
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 AdventureWorks2008R2 als aktuelle Datenbank festgelegt wurde, wird jede Anweisung, die auf ein Objekt mit dem Namen Product verweist, als Verweis auf die Product-Tabelle in AdventureWorks2008R2 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 Hilfsprogramm 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.

    HinweisHinweis

    In zahlreichen Beispielen der Transact-SQL-Referenz in der SQL Server-Onlinedokumentation ist USE AdventureWorks2008R2 die erste Codezeile im Beispiel. Damit wird sichergestellt, dass das Beispiel die explizit angegebene Datenbank anstelle der aktuellen Datenbank verwendet.