Schemas in AdventureWorks

In der AdventureWorks-OLTP-Beispieldatenbank sind Objekte, wie Tabellen, Sichten und Prozeduren, in Schemas enthalten. Über Schemas wird die Zugriffsweise auf diese Objekte geändert. Dieses Thema enthält eine kurze Übersicht über Schemas, beschreibt die Verwendung von Schemas in der AdventureWorks-Datenbank und stellt Methoden sowie Alternativen für den Zugriff auf Objekte bereit, die sich in Schemas befinden.

Schemas in AdventureWorks

In Microsoft SQL Server 2005 sind Schemas und Benutzer getrennt: Als Datenbankprinzipale besitzen Benutzer Schemas. Außerdem sind Objekte in den Schemas enthalten. Weitere Informationen finden Sie unter Trennung von Benutzer und Schema.

In der folgenden Tabelle werden die in AdventureWorks verwendeten Schemas beschrieben und repräsentative Tabellen in den einzelnen Schemas aufgelistet.

Schema Enthält Objekte zu Beispiele

HumanResources

Mitarbeiter von Adventure Works Cycles.

Employee-Tabelle

Department-Tabelle

Person

Namen und Adressen einzelner Kunden, Hersteller und Mitarbeiter.

Contact-Tabelle

Address-Tabelle

StateProvince-Tabelle

Production

Von Adventure Works Cycles gefertigte und verkaufte Produkte.

BillOfMaterials-Tabelle

Product-Tabelle

WorkOrder-Tabelle

Purchasing

Hersteller, von denen Teile und Produkte bezogen werden.

PurchaseOrderDetail-Tabelle

PurchaseOrderHeader-Tabelle

Vendor-Tabelle

Sales

Kunden- und vertriebsbasierte Daten.

Customer-Tabelle

SalesOrderDetail-Tabelle

SalesOrderHeader-Tabelle

Zugreifen auf in Schemas enthaltene Objekte

Benutzer folgen immer einem Standardschema. Das Standardschema ist das Schema, das vom Server beim Auflösen von Namen nicht qualifizierter Objekte in einer DML- oder DDL-Anweisung durchsucht wird. Deshalb muss der Schemaname beim Verweisen auf Objekte, die sich im Standardschema befinden, nicht angegeben werden. So wird beispielsweise die SELECT * FROM table_name-Anweisung erfolgreich ausgeführt, wenn table_name im Standardschema enthalten ist.

ms124894.note(de-de,SQL.90).gifHinweis:
Wird beim Erstellen des Benutzers kein Standardschema angegeben, ist dbo das Standardschema. Weitere Informationen finden Sie unter CREATE USER (Transact-SQL).

Zum Zugreifen auf Objekte, die sich nicht im Standardschema befinden, muss mindestens ein zweiteiliger Bezeichner (schema_name**.**object_name) angegeben werden. Dies trifft für alle DDL- und DML-Anweisungen zu, die auf Objekte verweisen, die Schemas als Bereiche besitzen.

Im folgenden Beispiel werden zwei SELECT-Anweisungen dargestellt, die veranschaulichen, wie auf Objekte außerhalb des Standardschemas verwiesen wird. Vorausgesetzt, dass es sich beim Standardschema nicht um HumanResources handelt, erzeugt die erste Anweisung einen Fehler, da die Department-Tabelle nicht im Standardschema enthalten ist. Die zweite Anweisung wird erfolgreich ausgeführt, da sie das Schema angibt, in dem sich das Objekt befindet.

USE AdventureWorks;
GO
--This statement fails.
SELECT Name, GroupName
FROM Department;
GO
--This statement succeeds.
SELECT Name, GroupName
FROM HumanResources.Department;
GO

Alternativen zu Schemas in AdventureWorks

In den Codebeispielen der SQL Server-Onlinedokumentation und den zusätzlichen Beispielen, die mit SQL Server 2005 installiert werden können, wird zumindest der zweiteilige Bezeichner für alle Objekte, die Schemas als Bereiche besitzen, angegeben. Diese Beispiele können unabhängig vom Benutzerstandardschema erfolgreich ausgeführt werden.

Benutzer, die AdventureWorks für ihre eigenen Beispiele und Tests verwenden möchten, sind an einer Alternative zu dem zweiteiligen Bezeichner interessiert. SQL Server 2005 stellt Skripts in der Datei SQLServerEngineSamples.msi mit zwei Alternativen zu den Schemas in AdventureWorks bereit.

Übertragen von Objekten in das DBO-Schema

Das Skript AlterSchemaToDbo.sql überträgt jedes Objekt in AdventureWorks, das Schemas als Bereiche besitzt, in das dbo-Schema. Nach dem Ausführen dieses Skripts ist es nicht notwendig, dass Benutzer mit einem dbo-Standardschema beim Verweisen auf AdventureWorks-Objekte in DDL- und DML-Anweisungen den zweiteiligen Bezeichner verwenden.

ms124894.note(de-de,SQL.90).gifWichtig:
Die Codebeispiele und Beispiele in SQL Server 2005 können nach dem Ausführen von AlterSchemaToDbo.sql nur ausgeführt werden, wenn die im Code angegebenen Schemanamen entweder durch dbo ersetzt oder vollständig entfernt werden.

Das Skript AlterSchemaFromDbo.sql überträgt die Objekte aus dem dbo-Schema in die Schemas, in denen sich die Objekte vor dem Ausführen des Skripts AlterSchemaToDbo.sql befanden bzw. gibt diese an sie zurück.

Verwenden von Synonymen

Ein Synonym ist ein anderer Name für ein Objekt, das Schemas als Objekte besitzt. Das Synonym wird anstelle des Basisobjekts in DDL- und DML-Anweisungen angegeben.

Das Skript CreateSynonymsDbo.sql erstellt ein Synonym für jedes Objekt in AdventureWorks, das Schemas als Bereiche besitzt. Der Name des Synonyms ist gleich mit dem Namen des Basisobjekts, verwendet jedoch das dbo-Schema. So ist dbo.Department beispielsweise das Synonym für HumanResources.Department. Dies bringt folgende Vorteile mit sich:

  • Ist dbo das Standardschema, wird kein zweiteiliger Bezeichner zur Angabe dieser Objekte in DDL- und DML-Anweisungen benötigt.
  • Die Codebeispiele und Beispiele in SQL Server 2005 können ohne Änderung übernommen werden.

Mithilfe des Skripts DropSynonymsDbo.sql werden die vom Skript CreateSynonymsDbo.sql erstellten Synonyme gelöscht. Weitere Informationen zu Synonymen finden Sie unter Using Synonyms.

Siehe auch

Andere Ressourcen

AdventureWorks (Datenwörterbuch)
Installieren der Beispieldatenbanken und Beispiele für AdventureWorks

Hilfe und Informationen

Informationsquellen für SQL Server 2005