Unterschied zwischen Datenbank und Schema

166

Was ist der Unterschied zwischen einer Datenbank und einem Schema in SQL Server? Beides sind die Container mit Tabellen und Daten.

Wenn ein Schema gelöscht wird, werden dann auch alle in diesem Schema enthaltenen Tabellen automatisch gelöscht oder werden sie gelöscht, wenn die Datenbank gelöscht wird?

sqlchild
quelle

Antworten:

171

Eine Datenbank ist der Hauptcontainer, sie enthält die Daten- und Protokolldateien sowie alle darin enthaltenen Schemata. Sie sichern immer eine Datenbank, es ist eine eigenständige Einheit.

Schemas sind wie Ordner in einer Datenbank und werden hauptsächlich zum Gruppieren logischer Objekte verwendet, was das Festlegen von Berechtigungen nach Schema erleichtert.

EDIT für zusätzliche Frage

drop schema test1

Meldung 3729, Ebene 16,
Status 1, Zeile 1 Das Schema 'test1' kann nicht gelöscht werden, da es vom Objekt 'copyme' referenziert wird.

Sie können ein Schema nicht löschen, wenn es verwendet wird. Sie müssen zuerst alle Objekte aus dem Schema entfernen.

Verwandte Lektüre:

  1. Was nützen SQL Server-Schemas?
  2. MSDN: Benutzer-Schema-Trennung
RichardTheKiwi
quelle
5
In SQL Server 2005 und höheren Versionen wird standardmäßig alles in das DBO-Schema eingefügt, wenn beim Erstellen von Datenbankobjekten kein Schemaname angegeben wird.
sqlchild
@sqlchild ja das stimmt. Ein Schema ist erforderlich, jedes Objekt wird in einem Schema gehalten, daher ist der Standard dbo
RichardTheKiwi
Würden Sie in Betracht ziehen, Tabellen in derselben Datenbank zu replizieren und sie in Schemata nach verschiedenen Clients zu gruppieren, anstatt für jeden Client eine separate Datenbank zu erstellen?
Jewgraf Andrejewitsch Schiwago
Ist die Logik für AWS Redshift dieselbe? Jemand? Ich bin in Bezug auf AWS zwischen den beiden verwirrt.
Aakash Basu
19

Schema ist eine Möglichkeit, die Objekte in einer Datenbank zu kategorisieren. Dies kann hilfreich sein, wenn mehrere Anwendungen eine einzige Datenbank gemeinsam nutzen und es einen gemeinsamen Datensatz gibt, auf den alle Anwendungen zugreifen.

demas
quelle
12

Die Datenbank ist wie ein Datencontainer mit Schema, und das Schema ist das Layout der Tabellen, in denen Datentypen, Beziehungen und ähnliches vorhanden sind

Saghir A. Khatri
quelle
1
Dies ist nicht speziell für SQL Server korrekt. Tabellen haben Schemas in allgemeinen Datenbanken, ja, aber Schemas (aus welchem ​​Grund) in SQL Server sind auch effektiv Namespaces, die Tabellen enthalten (und diese Tabellen haben auch Schemas im herkömmlichen Sinne). Der unglückliche Name, den Microsoft für sie gewählt hat, namespaceist weitaus angemessener.
SacredSkull
7

Das Schema gibt an, welche Tabellen sich in der Datenbank befinden, welche Spalten sie haben und wie sie zusammenhängen. Jede Datenbank hat ein eigenes Schema.

Robert
quelle
aber wenn ich kein Schema explizit erstelle und Tabellen erstelle, ohne einen Schemanamen zu erwähnen, wo werden dann die Tabellen erstellt? Standardmäßig müssen sie in das dbo-Schema gehen. ist es nicht?
sqlchild
Ja, aber normalerweise behandeln Sie das Schema nicht manuell. Sie erstellen Tabellen entweder mit einem Verwaltungstool oder mit der Code-First-Funktion eines ORM-Tools
Robert
Ich benutze SQL Server Management Studio und ich erwähne keinen Schemanamen
SQLchild
4

Das Schema in SQL Server ist ein Objekt, das konzeptionell Definitionen für andere Datenbankobjekte wie Tabellen, Ansichten, gespeicherte Prozeduren usw. enthält.

Hardik Mishra
quelle