Freigeben über


DATENBANK ERSTELLEN

Erstellt eine neue Datenbank.

Wählen Sie eine der folgenden Registerkarten für die Syntax, Argumente, Anmerkungen, Berechtigungen und Beispiele für eine bestimmte SQL-Version aus, mit der Sie arbeiten.

Auswählen eines Produkts

Wählen Sie in der folgenden Zeile den Namen des Produkts aus, an dem Sie interessiert sind. Dann werden nur Informationen zu diesem Produkt angezeigt.

* SQL Server *

SQL Server

Übersicht

In SQL Server erstellt diese Anweisung eine neue Datenbank sowie die verwendeten Dateien und deren Dateigruppen. Mit ihr lassen sich auch Datenbankmomentaufnahmen erstellen oder Datenbankdateien anfügen, um eine Datenbank aus den getrennten Dateien einer anderen Datenbank zu erstellen.

Syntax

Erstellen einer Datenbank

Weitere Informationen zu Syntaxkonventionen finden Sie unter Transact-SQL-Syntaxkonventionen.

CREATE DATABASE database_name
[ CONTAINMENT = { NONE | PARTIAL } ]
[ ON
      [ PRIMARY ] <filespec> [ , ...n ]
      [ , <filegroup> [ , ...n ] ]
      [ LOG ON <filespec> [ , ...n ] ]
]
[ COLLATE collation_name ]
[ WITH <option> [ , ...n ] ]
[ ; ]

<option> ::=
{
      FILESTREAM ( <filestream_option> [ , ...n ] )
    | DEFAULT_FULLTEXT_LANGUAGE = { lcid | language_name | language_alias }
    | DEFAULT_LANGUAGE = { lcid | language_name | language_alias }
    | NESTED_TRIGGERS = { OFF | ON }
    | TRANSFORM_NOISE_WORDS = { OFF | ON }
    | TWO_DIGIT_YEAR_CUTOFF = <two_digit_year_cutoff>
    | DB_CHAINING { OFF | ON }
    | TRUSTWORTHY { OFF | ON }
    | PERSISTENT_LOG_BUFFER = ON ( DIRECTORY_NAME = 'path-to-directory-on-a-DAX-volume' )
    | LEDGER = { ON | OFF }
}

<filestream_option> ::=
{
      NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL }
    | DIRECTORY_NAME = 'directory_name'
}

<filespec> ::=
{
(
    NAME = logical_file_name ,
    FILENAME = { 'os_file_name' | 'filestream_path' }
    [ , SIZE = size [ KB | MB | GB | TB ] ]
    [ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ]
    [ , FILEGROWTH = growth_increment [ KB | MB | GB | TB | % ] ]
)
}

<filegroup> ::=
{
FILEGROUP filegroup name [ [ CONTAINS FILESTREAM ] [ DEFAULT ] | CONTAINS MEMORY_OPTIMIZED_DATA ]
    <filespec> [ , ...n ]
}

Anfügen einer Datenbank:

CREATE DATABASE database_name
    ON <filespec> [ , ...n ]
    FOR { { ATTACH [ WITH <attach_database_option> [ , ...n ] ] }
        | ATTACH_REBUILD_LOG }
[ ; ]

<attach_database_option> ::=
{
      <service_broker_option>
    | RESTRICTED_USER
    | FILESTREAM ( DIRECTORY_NAME = { 'directory_name' | NULL } )
}

<service_broker_option> ::=
{
    ENABLE_BROKER
  | NEW_BROKER
  | ERROR_BROKER_CONVERSATIONS
}

Erstellen einer Datenbankmomentaufnahme:

CREATE DATABASE database_snapshot_name
    ON
    (
        NAME = logical_file_name ,
        FILENAME = 'os_file_name'
    ) [ , ...n ]
    AS SNAPSHOT OF
[ ; ]

Argumente

database_name

Der Name der neuen Datenbank. Datenbanknamen müssen innerhalb einer Instanz von SQL Server eindeutig sein und den Regeln für Bezeichnern entsprechen.

database_name kann maximal 128 Zeichen lang sein, es sei denn, für die Protokolldatei ist kein logischer Name angegeben. Wenn kein logischer Protokolldateiname angegeben ist, generiert SQL Server die logical_file_name und die os_file_name für das Protokoll, indem sie ein Suffix an database_name anfügen. Dadurch wird database_name auf 123 Zeichen beschränkt, sodass der generierte logische Protokolldateiname nicht länger als 128 Zeichen ist.

Wenn kein Datendateiname angegeben ist, verwendet SQL Server database_name sowohl als logical_file_name als auch als os_file_name. Der Standardpfad wird aus der Registrierung abgerufen. Der Standardpfad kann über die Servereigenschaften (Seite Datenbankeinstellungen) in Management Studio geändert werden. Zum Ändern des Standardpfads muss SQL Server neu gestartet werden.

EINDÄMMUNG = { KEINE | TEILWEISE }

Gilt für: SQL Server 2012 (11.x) und höhere Versionen

Gibt den Kapselungsstatus der Datenbank an.

  • NONE = nicht enthaltene Datenbank.
  • PARTIAL = teilweise enthaltene Datenbank.

EIN

Gibt an, dass die zum Speichern der Datenabschnitte der Datenbank (Datendateien) verwendeten Datenträgerdateien explizit definiert sind. ON ist erforderlich, wenn gefolgt von einer durch Trennzeichen getrennten Liste von <filespec> Elementen, die die Datendateien für die primäre Dateigruppe definieren. Auf die Liste der Dateien in der primären Dateigruppe kann eine optionale, durch Trennzeichen getrennte Liste von <filegroup> Elementen folgen, die Benutzerdateigruppen und ihre Dateien definieren.

Primär

Gibt an, dass die zugeordnete <filespec> Liste die primäre Datei definiert. Die erste Datei, die <filespec> im Eintrag in der primären Dateigruppe angegeben ist, wird zur primären Datei. Eine Datenbank kann nur eine primäre Datei haben. Weitere Informationen finden Sie unter Datenbankdateien und Dateigruppen.

Wenn PRIMARY nicht angegeben, wird die erste in der CREATE DATABASE Anweisung aufgeführte Datei zur primären Datei.

EINLOGGEN

Gibt an, dass die zum Speichern des Datenbankprotokolls verwendeten Datenträgerdateien (Protokolldateien) explizit definiert sind. LOG ON gefolgt von einer durch Trennzeichen getrennten Liste von <filespec> Elementen, die die Protokolldateien definieren. Wenn LOG ON nicht angegeben, wird automatisch eine Protokolldatei erstellt, die eine Größe von 25 Prozent der Summe aller Datendateien für die Datenbank oder 512 KB aufweist, je nachdem, welcher Wert größer ist. Diese Datei wird am Standard-Protokolldateispeicherort eingefügt. Informationen zu diesem Speicherort finden Sie unter Anzeigen oder Ändern der Standardspeicherorte für Daten- und Protokolldateien.

LOG ON kann in einer Datenbankmomentaufnahme nicht angegeben werden.

SORTIEREN collation_name

Gibt die Standardsortierung für die Datenbank an. Als Sortierungsname kann entweder der Name einer Windows-Sortierreihenfolge oder ein SQL-Sortierungsname verwendet werden. Wenn keine Sortierung angegeben ist, wird der Datenbank die Standardsortierung der Instanz von SQL Server zugewiesen. Für eine Datenbankmomentaufnahme kann kein Sortierungsname angegeben werden.

Ein Sortierungsname kann nicht mit den FOR ATTACH Oder-Klauseln FOR ATTACH_REBUILD_LOG angegeben werden. Informationen zum Ändern der Sortierung einer angefügten Datenbank finden Sie unter Festlegen oder Ändern der Datenbanksortierung.

Weitere Informationen zu den Namen der Windows- und SQL-Sortierung finden Sie unter COLLATE.

Hinweis

Eigenständige Datenbanken werden anders sortiert als nicht eigenständige Datenbanken. Weitere Informationen finden Sie unter "Enthaltene Datenbanksortierungen".

WITH-<Option>

<filestream_option>

  • NON_TRANSACTED_ACCESS = { AUS | READ_ONLY | VOLLSTÄNDIG }

    Gilt für: SQL Server 2012 (11.x) und höhere Versionen

    Gibt die Ebene des nicht transaktionalen FILESTREAM-Zugriffs auf die Datenbank an.

    Wert Beschreibung
    OFF Nicht transaktionaler Zugriff ist deaktiviert.
    READONLY FILESTREAM-Daten in dieser Datenbank können von nicht transaktionalen Prozessen gelesen werden.
    FULL Der vollständige nicht transaktionale Zugriff auf FILESTREAM-FileTables ist aktiviert.
  • DIRECTORY_NAME = <directory_name>

    Gilt für: SQL Server 2012 (11.x) und höhere Versionen

    Ein Windows-kompatibler Verzeichnisname. Dieser Name sollte für alle Database_Directory-Namen in der SQL Server-Instanz eindeutig sein. Bei Eindeutigkeitsvergleichen wird die Groß-/Kleinschreibung nicht beachtet, unabhängig von den SQL Server-Sortiereinstellungen. Diese Option sollte vor dem Erstellen einer Dateitabelle in dieser Datenbank festgelegt werden.

    Die folgenden Optionen können nur zulässig sein, wenn CONTAINMENT sie auf .PARTIAL Wenn CONTAINMENT dieser Aufsatz festgelegt NONEist, treten Fehler auf.

DEFAULT_FULLTEXT_LANGUAGE = <lcid> | <Sprachname> | <Sprachalias>

Gilt für: SQL Server 2012 (11.x) und höhere Versionen

Eine vollständige Beschreibung dieser Option finden Sie unter Serverkonfiguration: Standardmäßige Volltextsprache .

DEFAULT_LANGUAGE = <lcid> | <Sprachname> | <Sprachalias>

Gilt für: SQL Server 2012 (11.x) und höhere Versionen

Eine vollständige Beschreibung dieser Option finden Sie unter Serverkonfiguration: Standardsprache .

NESTED_TRIGGERS = { OFF | ON}

Gilt für: SQL Server 2012 (11.x) und höhere Versionen

Eine vollständige Beschreibung dieser Option finden Sie unter Serverkonfiguration: geschachtelte Trigger .

TRANSFORM_NOISE_WORDS = { AUS | EIN }

Gilt für: SQL Server 2012 (11.x) und höhere Versionen

Siehe Serverkonfiguration: Transformieren von Füllwörtern für eine vollständige Beschreibung dieser Option.

TWO_DIGIT_YEAR_CUTOFF = { 2049 | <beliebiges Jahr zwischen 1753 und 9999> }

Vier Ziffern, die ein Jahr darstellen. Der Standardwert lautet 2049. Eine vollständige Beschreibung dieser Option finden Sie unter Serverkonfiguration: zweistellige Jahresabkürzung .

DB_CHAINING { AUS | EIN }

Wenn ON angegeben, kann die Datenbank die Quelle oder das Ziel einer datenbankübergreifenden Besitzerkette sein.

Wenn OFFdie Datenbank nicht an datenbankübergreifender Besitzverkettung teilnehmen kann. Der Standardwert ist OFF.

Wichtig

Die Sql Server-Instanz erkennt diese Einstellung, wenn die Serveroption für die datenbankübergreifende Besitzerverkettung 0 (OFF) ist. Wenn die datenbankübergreifende Besitzverkettung 1 (ON) ist, können alle Benutzerdatenbanken unabhängig vom Wert dieser Option an datenbankübergreifenden Besitzerketten teilnehmen. Diese Option wird mit sp_configure festgelegt.

Zum Festlegen dieser Option ist die Mitgliedschaft in der festen Serverrolle "sysadmin " erforderlich. Die DB_CHAINING Option kann für diese Systemdatenbanken nicht festgelegt werden: master, model, . tempdb

VERTRAUENSWÜRDIG { AUS | EIN }

Wenn ON angegeben, können Datenbankmodule (z. B. Ansichten, benutzerdefinierte Funktionen oder gespeicherte Prozeduren), die einen Identitätswechselkontext verwenden, auf Ressourcen außerhalb der Datenbank zugreifen.

Wenn OFF, Datenbankmodule in einem Identitätswechselkontext nicht auf Ressourcen außerhalb der Datenbank zugreifen können. Der Standardwert ist OFF.

TRUSTWORTHY wird immer dann OFF festgelegt, wenn die Datenbank angefügt ist.

Standardmäßig sind msdb alle Systemdatenbanken außer der TRUSTWORTHY Datenbank auf "OFF. Der Wert kann für die model Datenbanken tempdb nicht geändert werden. Es wird empfohlen, die Option TRUSTWORTHY für die ON Datenbank nie festzulegenmaster.

PERSISTENT_LOG_BUFFER = EIN ( DIRECTORY_NAME = 'directory_name' )

Gilt für: SQL Server 2017 (14.x) und höhere Versionen

Durch Festlegen dieser Option wird der Transaktionsprotokollpuffer auf einem Volume erstellt, das sich auf einem Laufwerk befindet, welches durch Speicherklassenspeicher (NVDIMM-N permanenter Speicher) gesichert ist – auch bekannt als persistenter Protokollpuffer. Weitere Informationen finden Sie unter Transaktions-Commit-Latenzbeschleunigung mit Speicherklassenspeicher und Hinzufügen eines beständigen Protokollpuffers zu einer Datenbank.

LEDGER = { ON | FALSCH }

Wenn diese Einstellung auf ON festgelegt ist, wird eine Ledgerdatenbank erstellt, in der die Integrität aller Benutzerdaten geschützt ist. In einer Ledgerdatenbank können nur Ledgertabellen erstellt werden. Der Standardwert ist OFF. Der Wert der LEDGER Option kann nicht geändert werden, nachdem die Datenbank erstellt wurde. Weitere Informationen finden Sie unter Konfigurieren einer Ledgerdatenbank.

DATENBANK ERSTELLEN ... FOR ATTACH [ WITH <attach_database_option> ]

Gibt an, dass die Datenbank durch Anfügen mehrerer Betriebssystemdateien erstellt wird. Es muss ein <filespec> Eintrag vorhanden sein, der die primäre Datei angibt. Die einzigen anderen <filespec> erforderlichen Einträge sind die für Dateien, die einen anderen Pfad als beim ersten Erstellen oder letzten Anfügen der Datenbank haben. Für diese Dateien muss ein <filespec> Eintrag angegeben werden.

FOR ATTACH erfordert:

  • Alle Datendateien (MDF und NDF) müssen verfügbar sein.
  • Wenn mehrere Protokolldateien vorhanden sind, müssen alle verfügbar sein.

Wenn eine Lese-/Schreibdatenbank über eine einzelne Protokolldatei verfügt, die zurzeit nicht verfügbar ist und die Datenbank ohne Benutzer beendet wurde oder Transaktionen vor dem ATTACH Vorgang geöffnet wurden, FOR ATTACH erstellt die Protokolldatei automatisch neu und aktualisiert die primäre Datei. Im Gegensatz dazu kann das Protokoll für eine schreibgeschützte Datenbank nicht neu erstellt werden, da die primäre Datei nicht aktualisiert werden kann. Wenn Sie daher eine schreibgeschützte Datenbank mit einem nicht verfügbaren Protokoll anfügen, müssen Sie die Protokolldateien oder die Dateien in der FOR ATTACH Klausel angeben.

Hinweis

Eine datenbank, die von einer neueren Version von SQL Server erstellt wurde, kann in früheren Versionen nicht angefügt werden.

In SQL Server werden alle Volltextdateien, die Teil der angefügten Datenbank sind, mit der Datenbank verknüpft. Geben Sie den neuen Speicherort ohne Betriebssystem-Dateinamen der Volltextdatei an, um einen neuen Pfad für den Volltextkatalog anzugeben. Weitere Informationen finden Sie unter Beispiele.

Beim Anfügen einer Datenbank, die die FILESTREAM-Option "Verzeichnisname" enthält, wird SQL Server aufgefordert, zu überprüfen, ob der Database_Directory Name eindeutig ist. Ist dies nicht der Fehler, schlägt der ATTACH Vorgang mit dem Fehler fehl. FILESTREAM Database_Directory name is not unique in this SQL Server instance Um diesen Fehler zu vermeiden, sollte der optionale Parameter directory_name in diesem Vorgang übergeben werden.

FOR ATTACH kann in einer Datenbankmomentaufnahme nicht angegeben werden.

FOR ATTACH kann die RESTRICTED_USER Option angeben. RESTRICTED_USER ermöglicht nur Mitgliedern der db_owner festen Datenbankrolle und dbcreator - und sysadmin-Festen Serverrollen, eine Verbindung mit der Datenbank herzustellen, beschränkt jedoch nicht ihre Anzahl. Versuche von nicht qualifizierten Benutzern werden abgelehnt.

<service_broker_option>

Wenn die Datenbank Service Broker verwendet, verwenden Sie die WITH <service_broker_option> in Ihrer FOR ATTACH Klausel:

Steuert die Service Broker-Nachrichtenübermittlung und den Service Broker-Bezeichner für die Datenbank. Service Broker-Optionen können nur angegeben werden, wenn die FOR ATTACH Klausel verwendet wird.

BROKER_AKTIVIEREN

Gibt an, dass Service Broker für die angegebene Datenbank aktiviert ist. Das heißt, dass die Nachrichtenübermittlung gestartet und für is_broker_enabled die Einstellung TRUE in der Katalogsicht sys.databases festgelegt wird. Die Datenbank behält den vorhandenen Service Broker-Bezeichner bei.

NEW_BROKER

Erstellt einen neuen service_broker_guid-Wert sowohl in sys.databases als auch in der wiederhergestellten Datenbank. Beendet alle Konversationsendpunkte mit Bereinigung. Der Broker ist aktiviert, es wird jedoch keine Meldung an die Remote-Konversationsendpunkte gesendet. Jede Route, die auf den alten Service Broker-Bezeichner verweist, muss mit dem neuen Bezeichner neu erstellt werden.

ERROR_BROKER_CONVERSATIONS

Beendet alle Konversationen mit einem Fehler, der angibt, dass die Datenbank angefügt oder wiederhergestellt wird. Der Broker ist deaktiviert, bis dieser Vorgang abgeschlossen ist, und wird dann aktiviert. Die Datenbank behält den vorhandenen Service Broker-Bezeichner bei.

Wenn Sie eine replizierte Datenbank anfügen, die kopiert wurde, anstatt getrennt zu werden, sollten Sie Folgendes berücksichtigen:

  • Wenn Sie die Datenbank an die gleiche Serverinstanz und -version wie die ursprüngliche Datenbank anfügen, sind keine weiteren Schritte erforderlich.
  • Wenn Sie die Datenbank an die gleiche Serverinstanz mit einer aktualisierten Version anfügen, müssen Sie sp_vupgrade_replication ausführen, um die Replikation zu aktualisieren, nachdem der Anfügevorgang abgeschlossen wurde.
  • Wenn Sie die Datenbank an eine andere Serverinstanz unabhängig von der Version anfügen, müssen Sie sp_removedbreplication ausführen, um die Replikation zu entfernen, nachdem der Anfügevorgang abgeschlossen wurde.

Hinweis

Für das Anfügen wird das vardecimal-Speicherformat verwendet, SQL Server-Datenbank-Engine muss jedoch mindestens auf SQL Server 2005 (9.x) SP2 aktualisiert werden. Sie können eine Datenbank nicht mithilfe des Vardecimal-Speicherformats an eine frühere Version von SQL Server anfügen. Weitere Informationen zum Vardecimal-Speicherformat finden Sie unter "Datenkomprimierung".

Wenn eine Datenbank zuerst an eine neue Instanz von SQL Server angefügt oder wiederhergestellt wird, wird eine Kopie des Datenbankmasterschlüssels (verschlüsselt durch den Dienstmasterschlüssel) noch nicht auf dem Server gespeichert. Der Datenbank-Hauptschlüssel (Database Master Key, DMK) muss mithilfe der OPEN MASTER KEY-Anweisung entschlüsselt werden. Nachdem der Datenbank-Hauptschlüssel entschlüsselt wurde, können Sie für die Zukunft die automatische Entschlüsselung aktivieren, indem Sie die ALTER MASTER KEY REGENERATE-Anweisung verwenden. Auf diese Weise können Sie eine Kopie des mit dem Diensthauptschlüssel (Service Master Key, SMK) verschlüsselten Datenbank-Hauptschlüssels für den Server bereitstellen. Wenn eine Datenbank von einer früheren Version aktualisiert wurde, sollte der DMK neu generiert werden, damit er den neueren AES-Algorithmus verwendet. Weitere Informationen zum Neugenerieren des DMK finden Sie unter ALTER MASTER KEY. Die zum Neugenerieren des DMK zum Upgrade auf AES erforderliche Zeit hängt von der Anzahl der Objekte ab, die durch den DMK geschützt werden. Das Regenerieren des DMK-Schlüssels für das Upgrade auf AES ist nur einmal erforderlich und hat keine Auswirkungen auf zukünftige Regenerationen im Rahmen einer Schlüsseldrehungsstrategie. Informationen zum Aktualisieren einer Datenbank mithilfe von Anfügen finden Sie unter Aktualisieren einer Datenbank mithilfe von Trennen und Anfügen.

Wichtig

Es wird empfohlen, keine Datenbanken aus unbekannten oder nicht vertrauenswürdigen Quellen anzufügen. Solche Datenbanken können schädlichen Code enthalten, der möglicherweise unbeabsichtigten Transact-SQL -Code ausführt oder Fehler verursacht, indem er das Schema oder die physische Datenbankstruktur ändert. Bevor Sie eine Datenbank aus einer unbekannten oder nicht vertrauenswürdigen Quelle verwenden, führen Sie auf einem Nichtproduktionsserver DBCC CHECKDB für die Datenbank aus. Überprüfen Sie außerdem den Code in der Datenbank, z.B. gespeicherte Prozeduren oder anderen benutzerdefinierten Code.

Hinweis

Die TRUSTWORTHY Optionen haben DB_CHAINING keine Auswirkungen beim Anfügen einer Datenbank.

ZUM ATTACH_REBUILD_LOG

Gibt an, dass die Datenbank durch Anfügen eines vorhandenen Satzes von Betriebssystemdateien erstellt wird. Diese Option ist auf Datenbanken mit Lese-/Schreibzugriff beschränkt. Es muss ein <filespec> Eintrag vorhanden sein, der die primäre Datei angibt. Wenn eines oder mehrere Transaktionsprotokolle fehlen, wird das Protokoll neu erstellt. Der ATTACH_REBUILD_LOG erstellt automatisch eine neue 1-MB-Protokolldatei. Diese Datei wird am Standard-Protokolldateispeicherort eingefügt. Informationen zu diesem Speicherort finden Sie unter Anzeigen oder Ändern der Standardspeicherorte für Daten- und Protokolldateien.

Hinweis

Wenn die Protokolldateien verfügbar sind, verwendet Datenbank-Engine diese Dateien und erstellt nicht die Protokolldateien neu.

FOR ATTACH_REBUILD_LOG erfordert die folgenden Bedingungen:

  • Ein fehlerfreies Herunterfahren der Datenbank.
  • Alle Datendateien (MDF und NDF) müssen verfügbar sein.

Wichtig

Mit diesem Vorgang wird die Protokollsicherungskette unterbrochen. Es wird empfohlen, unmittelbar nach Abschluss des Vorgangs eine vollständige Datenbanksicherung durchzuführen. Weitere Informationen finden Sie unter SICHERUNG.

Wird FOR ATTACH_REBUILD_LOG in der Regel verwendet, wenn Sie eine Datenbank mit Lese-/Schreibzugriff und einem großen Protokoll auf einen anderen Server kopieren, auf dem die Kopie hauptsächlich oder nur für Lesevorgänge verwendet wird und daher weniger Protokollspeicherplatz als die ursprüngliche Datenbank benötigt.

FOR ATTACH_REBUILD_LOG kann in einer Datenbankmomentaufnahme nicht angegeben werden.

Weitere Informationen zum Anfügen und Trennen von Datenbanken finden Sie unter "Datenbanktrennzeichen und Anfügen "(SQL Server)".

<Dateinamen>

Steuert die Dateieigenschaften.

NAME logical_file_name

Gibt den logischen Namen für die Datei an. NAME ist erforderlich, wenn FILENAME angegeben wird, es sei denn, es wird eine der FOR ATTACH Klauseln angegeben. Eine FILESTREAM Dateigruppe kann nicht benannt PRIMARYwerden.

  • logical_file_name

    Der logische Name, der in SQL Server beim Verweisen auf die Datei verwendet wird. Logical_file_name muss in der Datenbank eindeutig sein und den Regeln für Bezeichner entsprechen. Der Name kann eine Zeichen- oder Unicode-Konstante oder ein regulärer oder Begrenzungsbezeichner sein.

DATEINAME { 'os_file_name' | 'filestream_path' }

Gibt einen Betriebssystem-Dateinamen (physischer Dateiname) an.

  • os_file_name

    Der Pfad und dateiname, der vom Betriebssystem beim Erstellen der Datei verwendet wird. Die Datei muss sich auf einem der folgenden Geräten bzw. Netzwerken befinden: auf dem lokalen Server, auf dem SQL Server installiert ist, in einem SAN (Storage Area Network) oder in einem Netzwerk auf iSCSI-Basis. Der angegebene Pfad muss vorhanden sein, bevor die CREATE DATABASE Anweisung ausgeführt wird. Weitere Informationen finden Sie unter Datenbankdateien und Dateigruppen später in diesem Artikel.

    SIZE, MAXSIZEund FILEGROWTH Parameter können festgelegt werden, wenn ein UNC-Pfad für die Datei angegeben ist.

    Wenn sich die Datei auf einer Rawpartition befindet, darf os_file_name nur den Laufwerkbuchstaben einer vorhandenen Rawpartition angeben. Auf einer Rawpartition kann nur eine einzige Datendatei erstellt werden.

    Hinweis

    Unformatierte Partitionen werden in SQL Server 2014 (12.x) und höheren Versionen nicht unterstützt.

    Datendateien sollten nicht auf komprimierten Dateisystemen platziert werden, es sei denn, die Dateien sind schreibgeschützte sekundäre Dateien, oder die Datenbank ist schreibgeschützt. Protokolldateien sollten niemals in komprimierten Dateisystemen abgelegt werden.

  • filestream_path

    Bei einer FILESTREAM-Dateigruppe bezieht sich auf einen Pfad, FILENAME in dem FILESTREAM-Daten gespeichert werden. Der Pfad muss bis zum letzten Ordner vorhanden sein, und der letzte Ordner darf nicht vorhanden sein. Wenn Sie z. B. den Pfad C:\MyFiles\MyFilestreamDataangeben, C:\MyFiles muss vor der Ausführung ALTER DATABASEvorhanden sein, aber der MyFilestreamData Ordner darf nicht vorhanden sein.

    Die Dateigruppe und die Datei (<filespec>) müssen in derselben Anweisung erstellt werden.

    SIZE Die FILEGROWTH Eigenschaften gelten nicht für eine FILESTREAM-Dateigruppe.

GRÖSSE Größe

Gibt die Größe der Datei an.

SIZE kann nicht angegeben werden, wenn die os_file_name als UNC-Pfad angegeben wird. SIZE gilt nicht für eine FILESTREAM-Dateigruppe.

  • Größe

    Die Anfangsgröße der Datei.

    Wenn die Größe für die primäre Datei nicht angegeben wird, verwendet das Datenbankmodul die Größe der primären Datei in der model Datenbank. Die Standardgröße der model-Datenbank beträgt 8 MB (ab SQL Server 2016 (13.x)) oder 1 MB (bei früheren Versionen). Wenn eine sekundäre Datendatei oder Protokolldatei angegeben ist, die Größe für die Datei jedoch nicht angegeben ist, erstellt das Datenbankmodul die Datei 8 MB (beginnend mit SQL Server 2016 (13.x)) oder 1 MB (für frühere Versionen). Die für die primäre Datei angegebene Größe muss mindestens der Größe der primären Datei der model-Datenbank entsprechen.

    Es kann das Suffix Kilobyte (KB), Megabyte (MB), Gigabyte (GB) oder Terabyte (TB) verwendet werden. Die Standardeinheit ist MB. Geben Sie eine ganze Zahl an. Fügen Sie kein Dezimalzeichen ein. die Größe ist ein ganzzahliger Wert. Verwenden Sie für Werte, die größer als 2.147.483.647 sind, größere Einheiten.

MAXSIZE max_size

Gibt die maximale Größe an, auf die die Datei vergrößert werden kann. MAXSIZE kann nicht angegeben werden, wenn die os_file_name als UNC-Pfad angegeben wird.

  • max_size

    Die maximale Dateigröße. Die Suffixe KB, MB, GB und TB können verwendet werden. Die Standardeinheit ist MB. Geben Sie eine ganze Zahl an. Fügen Sie kein Dezimalzeichen ein. Wenn max_size nicht angegeben ist, wächst die Datei, bis der Datenträger voll ist. Max_size ist ein ganzzahliger Wert. Verwenden Sie für Werte größer als 2.147.483.647 größere Einheiten.

  • UNBEGRENZT

    Gibt an, dass die Größe der Datei so lange zunehmen kann, bis auf dem Datenträger kein Speicherplatz mehr verfügbar ist. In SQL Server gilt für eine Protokolldatei, für die keine Größenbeschränkung festgelegt ist, eine Maximalgröße von 2 TB und für eine Datendatei eine Maximalgröße von 16 TB.

    Hinweis

    Es gibt keine maximale Größe, wenn diese Option für einen FILESTREAM-Container angegeben wird. Die Dateigröße erhöht sich so lange, bis der Datenträger voll ist.

FILEGROWTH growth_increment

Gibt das automatische Dateivergrößerungs-Inkrement an. Die FILEGROWTH Einstellung für eine Datei kann die MAXSIZE Einstellung nicht überschreiten. FILEGROWTH kann nicht angegeben werden, wenn die os_file_name als UNC-Pfad angegeben wird. FILEGROWTH gilt nicht für eine FILESTREAM-Dateigruppe.

  • growth_increment

    Die Menge an Speicherplatz, der der Datei jedes Mal hinzugefügt wird, wenn ein neuer Speicherplatz erforderlich ist.

    Der Wert kann in KB, , MB, GB, TBoder Prozent (%) angegeben werden. Wenn eine Zahl ohne ein KB, MBoder % Suffix angegeben wird, ist MBdie Standardeinstellung . Wenn % angegeben wird, ist die Größe des Wachstums inkrementiert der angegebene Prozentsatz der Größe der Datei zum Zeitpunkt des Inkrements. Die angegebene Größe wird auf den nächsten durch 64 KB teilbaren Wert gerundet. Der Mindestwert beträgt 64 KB.

    Der Wert 0 zeigt an, dass die automatische Vergrößerung deaktiviert ist und kein zusätzlicher Platz zulässig ist.

    Wenn FILEGROWTH nicht angegeben, sind die Standardwerte:

    Version Standardwerte
    Ab SQL Server 2016 (13.x) Daten: 64 MB, Protokolldateien: 64 MB
    Ab SQL Server 2005 (9.x) Daten: 1 MB, Protokolldateien: 10 %
    Vorher SQL Server 2005 (9.x) Daten: 10 %, Protokolldateien: 10 %

<DateiGruppe>

Steuert die Dateigruppeneigenschaften. Die Dateigruppe kann in einer Datenbankmomentaufnahme nicht angegeben werden.

DATEIGRUPPE filegroup_name

Der logische Name der Dateigruppe.

  • filegroup_name

    filegroup_name müssen in der Datenbank eindeutig sein und dürfen nicht die vom System bereitgestellten Namen PRIMARY und PRIMARY_LOG. Der Name kann eine Zeichen- oder Unicode-Konstante oder ein regulärer oder Begrenzungsbezeichner sein. Der Name muss den Regeln für Bezeichner entsprechen.

  • ENTHÄLT FILESTREAM

    Gibt an, dass die Dateigruppe FILESTREAM-BLOBs (Binary Large Objects) im Dateisystem speichert.

  • VORGABE

    Gibt an, dass die benannte Dateigruppe die Standarddateigruppe in der Datenbank ist.

  • ENTHÄLT MEMORY_OPTIMIZED_DATA

    Gilt für: SQL Server 2014 (12.x) und höhere Versionen

    Gibt an, dass die Dateigruppe speicheroptimierte Daten im Dateisystem speichert. Weitere Informationen finden Sie unter In-Memory OLTP-Übersichts- und Nutzungsszenarien. Pro Datenbank ist nur eine MEMORY_OPTIMIZED_DATA Dateigruppe zulässig. Codebeispiele, die Dateigruppen erstellen, um speicheroptimierte Daten zu speichern, finden Sie unter Erstellen einer speicheroptimierten Tabelle und einer nativ kompilierten gespeicherten Prozedur.

database_snapshot_name

Der Name der neuen Datenbankmomentaufnahme. Die Namen von Datenbankmomentaufnahmen müssen innerhalb einer Instanz von SQL Server eindeutig sein und den Regeln für Bezeichner entsprechen. database_snapshot_name darf maximal 128 Zeichen lang sein.

ON ( NAME = logical_file_name, DATEINAME = 'os_file_name') [ ,... n ]

Gibt für das Erstellen einer Datenbankmomentaufnahme eine Liste von Dateien in der Quelldatenbank an. Damit die Momentaufnahme funktionsfähig ist, müssen alle Datendateien einzeln angegeben werden. Protokolldateien sind jedoch für Datenbankmomentaufnahmen nicht zulässig. FILESTREAM-Dateigruppen werden von Datenbankmomentaufnahmen nicht unterstützt. Wenn eine FILESTREAM-Datendatei in einer CREATE DATABASE ON Klausel enthalten ist, schlägt die Anweisung fehl, und ein Fehler wird ausgelöst.

Beschreibungen und NAMEFILENAME deren Werte finden Sie in den Beschreibungen der entsprechenden <filespec> Werte.

Hinweis

Wenn Sie eine Datenbankmomentaufnahme erstellen, sind die anderen <filespec> Optionen und das Schlüsselwort PRIMARY unzulässig.

ALS SNAPSHOT OF Name der Quelldatenbank

Gibt an, dass die erstellte Datenbank eine Datenbankmomentaufnahme der Quelldatenbank ist, die durch source_database_name angegeben wird. Die Momentaufnahme- und Quelldatenbank müssen sich auf derselben Instanz befinden.

In SQL Server 2017 (14.x) und früheren Versionen konnte die Quelldatenbank für eine Datenbankmomentaufnahme keine Dateigruppe enthalten MEMORY_OPTIMIZED_DATA . Unterstützung für In-Memory-Datenbankmomentaufnahmen wurde in SQL Server 2019 (15.x) hinzugefügt.

Weitere Informationen finden Sie unter Datenbankmomentaufnahmen.

Bemerkungen

Die Masterdatenbank sollte immer dann gesichert werden, wenn eine Benutzerdatenbank erstellt, geändert oder gelöscht wird.

Die CREATE DATABASE Anweisung muss im AutoCommit-Modus (standardtransaktionsverwaltungsmodus) ausgeführt werden und ist in einer expliziten oder impliziten Transaktion nicht zulässig.

Sie können mit einer CREATE DATABASE-Anweisung eine Datenbank und die Dateien erstellen, in denen die Datenbank gespeichert ist. SQL Server implementiert die Anweisung mithilfe der CREATE DATABASE folgenden Schritte:

  1. SQL Server verwendet eine Kopie der Modelldatenbank, um die Datenbank und ihre Metadaten zu initialisieren.
  2. Der Datenbank wird eine Service Broker-GUID zugewiesen.
  3. Dann füllt das Datenbank-Engine den Rest der Datenbank mit leeren Seiten auf, mit Ausnahme der Seiten mit internen Daten, in denen aufgezeichnet ist, wie der Speicherplatz in der Datenbank verwendet wird.

Maximal 32.767 Datenbanken können auf einer Instanz von SQL Serverangegeben werden.

Jede Datenbank hat einen Besitzer, der besondere Aktivitäten in der Datenbank ausführen kann. Der Besitzer ist der Benutzer, der die Datenbank erstellt. Der Datenbankbesitzer kann mit ALTER AUTHORIZATION geändert werden.

Einige Datenbankfeatures sind von Features oder im Dateisystem enthaltenen Features abhängig, damit eine Datenbank vollständig funktionieren kann. Einige Beispiele von Features, die von verschiedenen Dateisystemfeatures abhängig sind, umfassen:

  • DBCC CHECKDB
  • FileStream (Englisch)
  • Onlinesicherungen über VSS und Dateimomentaufnahmen
  • Erstellung der Datenbankmomentaufnahme
  • Arbeitsspeicheroptimierte Datendateigruppe

Datenbankdateien und Dateigruppen

Jede Datenbank verfügt über mindestens zwei Dateien, und zwar einer primären Datei und einer Transaktionsprotokolldatei sowie über mindestens eine Dateigruppe. Für jede Datenbank können maximal 32.767 Dateien und 32.767 Dateigruppen angegeben werden.

Wenn Sie eine Datenbank erstellen, sollten die Datendateien möglichst groß sein. Orientieren Sie sich dabei an den maximal zu erwartenden Datenmengen, die in der Datenbank gespeichert werden sollen.

Wir empfehlen, dass Sie ein Storage Area Network (SAN), ein Netzwerk auf iSCSI-Basis oder einen lokal zugeordneten Datenträger für die Speicherung Ihrer SQL Server-Datenbankdateien verwenden, da bei dieser Konfiguration die Leistung und Zuverlässigkeit von SQL Server optimiert werden.

Datenbank-Momentaufnahmen

Sie können die CREATE DATABASE-Anweisung verwenden, um eine schreibgeschützte statische Sicht (eine Datenbankmomentaufnahme) der Quelldatenbank zu erstellen. Ein Datenbank-Momentaufnahme ist im Hinblick auf Transaktionen konsistent mit der Quelldatenbank zu dem Zeitpunkt, an dem die Momentaufnahme erstellt wurde. Für eine Quelldatenbank kann es mehrere Momentaufnahmen geben.

Hinweis

Wenn Sie eine Datenbankmomentaufnahme erstellen, kann die CREATE DATABASE Anweisung nicht auf Protokolldateien, Offlinedateien, das Wiederherstellen von Dateien und die zurückstehenden Dateien verweisen.

Wenn das Erstellen einer Datenbankmomentaufnahme fehlschlägt, wird der Snapshot fehlerverdächtig und muss gelöscht werden. Weitere Informationen finden Sie unter DROP DATABASE.

Jede Momentaufnahme wird beibehalten, bis sie mithilfe DROP DATABASEvon .

Weitere Informationen finden Sie unter Datenbankmomentaufnahmen (SQL Server) und Erstellen einer Datenbankmomentaufnahme.

Datenbankoptionen

Mehrere Datenbankoptionen werden automatisch festgelegt, wenn Sie eine Datenbank erstellen. Eine Liste dieser Optionen finden Sie unter ALTER DATABASE SET-Optionen.

Die Modelldatenbank und das Erstellen neuer Datenbanken

Alle benutzerdefinierten Objekte in der Modelldatenbank werden in alle neu erstellten Datenbanken kopiert. Sie können der model-Datenbank beliebige Objekte (z. B. Tabellen, Sichten, gespeicherte Prozeduren oder Datentypen) hinzufügen, die in allen neu erstellten Datenbanken enthalten sein sollen.

Wenn eine CREATE DATABASE <database_name>-Anweisung ohne zusätzliche Größenparameter angegeben wird, erhält die primäre Datendatei die gleiche Größe wie die primäre Datei in der model-Datenbank.

Jede neue Datenbank erbt die Einstellungen der Datenbankoptionen von der FOR ATTACH-Datenbank, es sei denn, model ist angegeben. Die Datenbankoption auto shrink ist beispielsweise in und in allen neuen, von Ihnen erstellten Datenbanken auf model festgelegt. Wenn Sie die Optionen in der model-Datenbank ändern, werden diese neuen Einstellungen in jeder neu erstellten Datenbank verwendet. Das Ändern von Vorgängen in der model Datenbank wirkt sich nicht auf vorhandene Datenbanken aus. Wenn FOR ATTACH für die CREATE DATABASE Anweisung angegeben ist, erbt die neue Datenbank die Datenbankoptionseinstellungen der ursprünglichen Datenbank.

Anzeigen von Datenbankinformationen

Sie können Katalogsichten, Systemfunktionen und gespeicherte Systemprozeduren verwenden, um Informationen zu Datenbanken, Dateien und Dateigruppen zurückzugeben. Weitere Informationen finden Sie unter Systemansichten.

Berechtigungen

Erfordert die Berechtigung CREATE DATABASE, CREATE ANY DATABASE oder ALTER ANY DATABASE.

Um die Kontrolle über die Datenträgerverwendung in einer SQL Server-Instanz zu behalten, ist die Berechtigung zum Erstellen von Datenbanken in der Regel auf einige Anmeldungen beschränkt.

Im folgenden Beispiel wird die Berechtigung zum Erstellen einer Datenbank für den Datenbankbenutzer Faybereitgestellt.

USE master;
GO

GRANT CREATE DATABASE TO [Fay];
GO

Berechtigungen für Daten- und Protokolldateien

In SQL Server werden Berechtigungen für die Daten und Protokolldateien der einzelnen Datenbanken festgelegt. Die folgenden Berechtigungen werden stets festgelegt, wenn die folgenden Vorgänge auf eine Datenbank angewendet werden:

  • Angefügt
  • Gesichert
  • Erstellt
  • Getrennt
  • Ändern, um eine neue Datei hinzuzufügen
  • Wiederherstellen

Durch die Berechtigungen wird verhindert, dass die Dateien versehentlich manipuliert werden, wenn sie sich in einem Verzeichnis mit offenen Berechtigungen befinden.

Hinweis

Microsoft SQL Server 2005 Express Edition legt keine Daten- und Protokolldateiberechtigungen fest.

Beispiele

Ein. Erstellen einer Datenbank ohne Angabe von Dateien

Mit dem folgenden Beispiel werden die Datenbank mytest sowie eine entsprechende primäre Datei und Transaktionsprotokolldatei erstellt. Da die Anweisung keine <filespec> Elemente enthält, hat die primäre Datenbankdatei die Größe der model primären Datenbankdatei. Für das Transaktionsprotokoll wird der größere der beiden folgenden Werte festgelegt: 512 KB oder 25 Prozent der Größe der primären Datendatei. Da MAXSIZE nicht angegeben ist, können die Dateien vergrößert werden, um den gesamten verfügbaren Speicherplatz auszufüllen. Dieses Beispiel zeigt auch, wie Sie die Datenbank mit dem Namen mytest, falls vorhanden, vor dem Erstellen der Datenbank mytest löschen.

USE master;
GO

IF DB_ID(N'mytest') IS NOT NULL
    DROP DATABASE mytest;
GO

CREATE DATABASE mytest;
GO

-- Verify the database files and sizes
SELECT name,
       size,
       size * 1.0 / 128 AS [Size in MBs]
FROM sys.master_files
WHERE name = N'mytest';
GO

B. Erstellen einer Datenbank mit Angabe der Datendatei und der Transaktionsprotokolldatei

Im folgenden Beispiel wird die Datenbank mit dem Namen Sales erstellt. Da das Schlüsselwort PRIMARY nicht verwendet wird, wird die erste Datei (Sales_dat) zur primären Datei. Da weder MB noch KB im SIZE Parameter für die Sales_dat Datei angegeben sind, wird MB sie in Megabyte verwendet und zugewiesen. Die Sales_log wird in Megabyte zugeordnet, weil das Suffix MB explizit im SIZE -Parameter angegeben ist.

USE master;
GO

CREATE DATABASE Sales
ON (
    NAME = Sales_dat,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\saledat.mdf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5
)
LOG ON (
    NAME = Sales_log,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\salelog.ldf',
    SIZE = 5 MB,
    MAXSIZE = 25 MB,
    FILEGROWTH = 5 MB
);
GO

C. Erstellen einer Datenbank unter Angabe mehrerer Daten- und Transaktionsprotokolldateien

Mit dem folgenden Beispiel wir die Archive-Datenbank erstellt, die über drei Datendateien mit 100-MB und zwei Transaktionsprotokolldateien mit 100-MB verfügt. Die primäre Datei ist die erste Datei in der Liste und wird explizit mit dem PRIMARY-Schlüsselwort angegeben. Die Transaktionsprotokolldateien werden nach den LOG ON-Schlüsselwörtern angegeben. Beachten Sie die Erweiterungen, die für die Dateien in der Option FILENAME verwendet werden: .mdf wird für primäre Datendateien verwendet, .ndf wird für sekundäre Datendateien verwendet, und .ldf wird für Transaktionsprotokolldateien verwendet. In diesem Beispiel wird die Datenbank auf dem Laufwerk D: abgelegt, anstatt an demselben Speicherort wie die master-Datenbank.

USE master;
GO

CREATE DATABASE Archive
ON PRIMARY
(
    NAME = Arch1,
    FILENAME = 'D:\SalesData\archdat1.mdf',
    SIZE = 100 MB,
    MAXSIZE = 200,
    FILEGROWTH = 20
), (
    NAME = Arch2,
    FILENAME = 'D:\SalesData\archdat2.ndf',
    SIZE = 100 MB,
    MAXSIZE = 200,
    FILEGROWTH = 20
), (
    NAME = Arch3,
    FILENAME = 'D:\SalesData\archdat3.ndf',
    SIZE = 100 MB, MAXSIZE = 200,
    FILEGROWTH = 20
)
LOG ON (
    NAME = Archlog1,
    FILENAME = 'D:\SalesData\archlog1.ldf',
    SIZE = 100 MB,
    MAXSIZE = 200,
    FILEGROWTH = 20
), (
    NAME = Archlog2,
    FILENAME = 'D:\SalesData\archlog2.ldf',
    SIZE = 100 MB,
    MAXSIZE = 200,
    FILEGROWTH = 20
);
GO

D: Erstellen einer Datenbank mit Dateigruppen

Im folgenden Beispiel wird die Sales-Datenbank erstellt, die über folgende Dateigruppen verfügt:

  • Die primäre Dateigruppe mit den Dateien Spri1_dat und Spri2_dat. Die FILEGROWTH Inkremente für diese Dateien werden als 15%angegeben.
  • Eine Dateigruppe mit dem Namen SalesGroup1 mit den Dateien SGrp1Fi1 und SGrp1Fi2.
  • Eine Dateigruppe mit dem Namen SalesGroup2 mit den Dateien SGrp2Fi1 und SGrp2Fi2.

In diesem Beispiel werden die Daten und Protokolldateien auf verschiedenen Datenträgern angeordnet, um die Leistung zu verbessern.

USE master;
GO

CREATE DATABASE Sales
ON PRIMARY(
    NAME = SPri1_dat,
    FILENAME = 'D:\SalesData\SPri1dat.mdf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 15 %
), (
    NAME = SPri2_dat,
    FILENAME = 'D:\SalesData\SPri2dt.ndf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 15 %
),
FILEGROUP SalesGroup1(
    NAME = SGrp1Fi1_dat,
    FILENAME = 'D:\SalesData\SG1Fi1dt.ndf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5
), (
    NAME = SGrp1Fi2_dat,
    FILENAME = 'D:\SalesData\SG1Fi2dt.ndf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5
),
FILEGROUP SalesGroup2(
    NAME = SGrp2Fi1_dat,
    FILENAME = 'D:\SalesData\SG2Fi1dt.ndf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5
), (
    NAME = SGrp2Fi2_dat,
    FILENAME = 'D:\SalesData\SG2Fi2dt.ndf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5
)
LOG ON (
    NAME = Sales_log,
    FILENAME = 'E:\SalesLog\salelog.ldf',
    SIZE = 5 MB,
    MAXSIZE = 25 MB,
    FILEGROWTH = 5 MB
);
GO

E. Anfügen einer Datenbank

Im folgenden Beispiel wird die in Beispiel D erstellte Archive-Datenbank gelöst und dann mithilfe der FOR ATTACH-Klausel angefügt. Archive wurde so definiert, dass mehrere Daten- und Protokolldateien vorhanden sind. Da sich der Speicherort der Dateien jedoch seit der Erstellung nicht geändert hat, muss nur die primäre Datei in der FOR ATTACH Klausel angegeben werden. Ab SQL Server 2005 (9.x) werden alle Volltextdateien, die Teil der Datenbank sind, die angefügt wird, an die Datenbank angefügt.

USE master;
GO

EXECUTE sp_detach_db Archive;
GO

CREATE DATABASE Archive
    ON
    (FILENAME = 'D:\SalesData\archdat1.mdf') FOR ATTACH;
GO

F. Erstellen einer Datenbankmomentaufnahme

Im folgenden Beispiel wird die Datenbankmomentaufnahme sales_snapshot0600 erstellt. Da eine Datenbankmomentaufnahme schreibgeschützt ist, kann keine Protokolldatei angegeben werden. In Übereinstimmung mit der Syntax wird jede Datei in der Quelldatenbank angegeben, und Dateigruppen werden nicht angegeben.

Die Quelldatenbank für dieses Beispiel ist die Sales-Datenbank, die in Beispiel D erstellt wurde.

USE master;
GO

CREATE DATABASE sales_snapshot0600
ON
    (NAME = SPri1_dat, FILENAME = 'D:\SalesData\SPri1dat_0600.ss'),
    (NAME = SPri2_dat, FILENAME = 'D:\SalesData\SPri2dt_0600.ss'),
    (NAME = SGrp1Fi1_dat, FILENAME = 'D:\SalesData\SG1Fi1dt_0600.ss'),
    (NAME = SGrp1Fi2_dat, FILENAME = 'D:\SalesData\SG1Fi2dt_0600.ss'),
    (NAME = SGrp2Fi1_dat, FILENAME = 'D:\SalesData\SG2Fi1dt_0600.ss'),
    (NAME = SGrp2Fi2_dat, FILENAME = 'D:\SalesData\SG2Fi2dt_0600.ss')
AS SNAPSHOT OF Sales;
GO

G. Erstellen einer Datenbank, Angeben eines Sortierungsnamens und Angeben von Optionen

Im folgenden Beispiel wird die Datenbank mit dem Namen MyOptionsTest erstellt. Ein Sortierungsname wird angegeben, und für die Optionen TRUSTYWORTHY und DB_CHAINING wird ON festgelegt.

USE master;
GO

IF DB_ID(N'MyOptionsTest') IS NOT NULL
    DROP DATABASE MyOptionsTest;
GO

CREATE DATABASE MyOptionsTest COLLATE French_CI_AI
    WITH TRUSTWORTHY ON, DB_CHAINING ON;
GO

--Verifying collation and option settings.
SELECT name,
       collation_name,
       is_trustworthy_on,
       is_db_chaining_on
FROM sys.databases
WHERE name = N'MyOptionsTest';
GO

H. Anhängen eines Volltextkatalogs, der verschoben wurde

Im folgenden Beispiel wird der Volltextkatalog AdvWksFtCat zusammen mit den Daten und Protokolldateien von AdventureWorks2025 angefügt. In diesem Beispiel wird der Volltextkatalog vom Standardspeicherort an den neuen Speicherort c:\myFTCatalogs verschoben. Die Daten- und Protokolldateien bleiben an ihrem jeweiligen Standardspeicherort.

USE master;
GO

--Detach the AdventureWorks2022 database
EXECUTE sp_detach_db AdventureWorks2022;
GO

-- Physically move the full text catalog to the new ___location.
--Attach the AdventureWorks2022 database and specify the new ___location of the full-text catalog.
CREATE DATABASE AdventureWorks2022 ON
    (FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks2022_data.mdf'),
    (FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks2022_log.ldf'),
    (FILENAME = 'c:\myFTCatalogs\AdvWksFtCat')
FOR ATTACH;
GO

Ich. Erstellen einer Datenbank, die eine Zeilendateigruppe und zwei FILESTREAM-Dateigruppen angibt

Im folgenden Beispiel wird die FileStreamDB-Datenbank erstellt. Die Datenbank wird mit einer Zeilendateigruppe und zwei FILESTREAM-Dateigruppen erstellt. Jede Dateigruppe enthält eine Datei:

  • FileStreamDB_data enthält Zeilendaten. Darin enthalten ist eine Datei FileStreamDB_data.mdf mit dem Standardpfad.

  • FileStreamPhotos enthält FILESTREAM-Daten. Darin enthalten sind zwei FILESTREAM-Datencontainer: FSPhotos unter C:\MyFSfolder\Photos und FSPhotos2 unter D:\MyFSfolder\Photos. Sie ist als Standarddateigruppe "FILESTREAM" markiert.

  • FileStreamResumes enthält FILESTREAM-Daten. Darin enthalten ist ein FILESTREAM-Datencontainer FSResumes, der sich unter C:\MyFSfolder\Resumes befindet.

USE master;
GO

-- Get the SQL Server data path.
DECLARE @data_path AS NVARCHAR (256);

SET @data_path = (SELECT SUBSTRING(physical_name, 1, CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1)
                  FROM master.sys.master_files
                  WHERE database_id = 1
                        AND file_id = 1);

-- Execute the CREATE DATABASE statement.
EXECUTE ('CREATE DATABASE FileStreamDB
ON PRIMARY (
    NAME = FileStreamDB_data,
    FILENAME = ''' + @data_path + ' FileStreamDB_data.mdf '',
    SIZE = 10 MB,
    MAXSIZE = 50 MB,
    FILEGROWTH = 15 %
),
FILEGROUP FileStreamPhotos
CONTAINS FILESTREAM DEFAULT (NAME = FSPhotos, FILENAME = ''C:\MyFSfolder\Photos'',
        -- SIZE and FILEGROWTH should not be specified here.
        -- If they are specified, an error is raised.
        MAXSIZE = 5000 MB),
    (NAME = FSPhotos2, FILENAME = ''D:\MyFSfolder\Photos'', MAXSIZE = 10000 MB),
FILEGROUP FileStreamResumes
    CONTAINS FILESTREAM (NAME = FileStreamResumes, FILENAME = ''C:\MyFSfolder\Resumes'')
LOG ON (
    NAME = FileStream_log,
    FILENAME = ''' + @data_path + ' FileStreamDB_log.ldf '',
    SIZE = 5 MB,
    MAXSIZE = 25 MB,
    FILEGROWTH = 5 MB
);');
GO

J. Erstellen einer Datenbank mit einer FILESTREAM-Dateigruppe mit mehreren Dateien

Im folgenden Beispiel wird die BlobStore1-Datenbank erstellt. Die Datenbank wird mit einer Zeilendateigruppe und einer FILESTREAM-Dateigruppe, FS, erstellt. Die FILESTREAM-Dateigruppe enthält die beiden Dateien FS1 und FS2. Dann wird die Datenbank durch das Hinzufügen der dritten Datei FS3 zur FILESTREAM-Dateigruppe geändert.

USE master;
GO

CREATE DATABASE [BlobStore1] CONTAINMENT = NONE
ON PRIMARY(
    NAME = N'BlobStore1',
    FILENAME = N'C:\BlobStore\BlobStore1.mdf',
    SIZE = 100 MB,
    MAXSIZE = UNLIMITED,
    FILEGROWTH = 1 MB
),
FILEGROUP [FS] CONTAINS FILESTREAM DEFAULT
    (NAME = N'FS1', FILENAME = N'C:\BlobStore\FS1', MAXSIZE = UNLIMITED),
    (NAME = N'FS2', FILENAME = N'C:\BlobStore\FS2', MAXSIZE = 100 MB)
LOG ON (
    NAME = N'BlobStore1_log',
    FILENAME = N'C:\BlobStore\BlobStore1_log.ldf',
    SIZE = 100 MB,
    MAXSIZE = 1 GB,
    FILEGROWTH = 1 MB
);
GO

ALTER DATABASE [BlobStore1]
ADD FILE (
    NAME = N'FS3',
    FILENAME = N'C:\BlobStore\FS3',
    MAXSIZE = 100 MB
) TO FILEGROUP [FS];
GO

* SQL-Datenbank *

SQL-Datenbank

Übersicht

Diese Anweisung kann in Azure SQL-Datenbank mit einem Azure SQL-Server verwendet werden, um ein Singleton oder einen Pool für elastische Datenbanken zu erstellen. Mit dieser Anweisung geben Sie für die neue Datenbank den Datenbanknamen, die Sortierung, die maximale Größe, die Edition, das Dienstziel und ggf. den Pool für elastische Datenbanken an. Mit ihr lässt sich auch die Datenbank in einem Pool für elastische Datenbanken erstellen. Außerdem kann sie verwendet werden, um eine Kopie der Datenbank auf einem anderen SQL-Datenbankserver zu erstellen.

Syntax

Erstellen einer Datenbank

Weitere Informationen zu Syntaxkonventionen finden Sie unter Transact-SQL-Syntaxkonventionen.

CREATE DATABASE database_name [ COLLATE collation_name ]
{
  (<edition_options> [ , ...n ] )
}
[ WITH <with_options> [ , ..n ] ]
[ ; ]

<with_options> ::=
{
    CATALOG_COLLATION = { DATABASE_DEFAULT | SQL_Latin1_General_CP1_CI_AS }
  | BACKUP_STORAGE_REDUNDANCY = { 'LOCAL' | 'ZONE' | 'GEO' | 'GEOZONE' }
  | LEDGER = { ON | OFF }
}

<edition_options> ::=
{

  MAXSIZE = { 100 MB | 500 MB | 1 ... 1024 ... 4096 GB }
  | ( EDITION = { 'Basic' | 'Standard' | 'Premium' | 'GeneralPurpose' | 'BusinessCritical' | 'Hyperscale' }
  | SERVICE_OBJECTIVE =
    { 'Basic' | 'S0' | 'S1' | 'S2' | 'S3' | 'S4' | 'S6' | 'S7' | 'S9' | 'S12'
      | 'P1' | 'P2' | 'P4' | 'P6' | 'P11' | 'P15'
      | 'BC_DC_n'
      | 'BC_Gen5_n'
      | 'BC_M_n'
      | 'GP_DC_n'
      | 'GP_Fsv2_n'
      | 'GP_Gen5_n'
      | 'GP_S_Gen5_n'
      | 'HS_DC_n'
      | 'HS_Gen5_n'
      | 'HS_S_Gen5_n'
      | 'HS_MOPRMS_n'
      | 'HS_PRMS_n'
      | { ELASTIC_POOL(name = <elastic_pool_name>) } } )
}

Kopieren einer Datenbank

CREATE DATABASE database_name
    AS COPY OF [ source_server_name. ] source_database_name
    [ ( SERVICE_OBJECTIVE =
      { 'Basic' | 'S0' | 'S1' | 'S2' | 'S3' | 'S4' | 'S6' | 'S7' | 'S9' | 'S12'
      | 'P1' | 'P2' | 'P4' | 'P6' | 'P11' | 'P15'
      | 'GP_Gen5_n'
      | 'GP_Fsv2_n'
      | 'GP_S_Gen5_n'
      | 'BC_Gen5_n'
      | 'BC_M_n'
      | 'HS_Gen5_n'
      | 'HS_S_Gen5_n'
      | 'HS_PRMS_n'
      | 'HS_MOPRMS_n'
      | { ELASTIC_POOL(name = <elastic_pool_name>) } } )
   ]
   [ WITH ( BACKUP_STORAGE_REDUNDANCY = { 'LOCAL' | 'ZONE' | 'GEO' | 'GEOZONE' } ) ]
[ ; ]

Argumente

database_name

Der Name der neuen Datenbank. Dieser Name muss auf dem SQL Server eindeutig sein und den SQL Server-Regeln für Bezeichner entsprechen. Weitere Informationen finden Sie unter Datenbankbezeichner.

collation_name

Gibt die Standardsortierung für die Datenbankdaten an. Geben Sie CATALOG_COLLATION für Systemmetadaten an, z. B. Objektbezeichner.

Als Sortierungsname kann entweder der Name einer Windows-Sortierreihenfolge oder ein SQL-Sortierungsname verwendet werden. Wenn nicht angegeben, wird der Datenbank die Standardsortierung zugewiesen. Dies ist SQL_Latin1_General_CP1_CI_AS.

Weitere Informationen zu den Namen der Windows- und SQL-Sortierreihenfolge, COLLATE.

CATALOG_COLLATION

Gibt die Standardsortierung für den Metadatenkatalog an. Das CATALOG_COLLATION Argument ist nur während der Datenbankerstellung verfügbar und kann nach der Erstellung nicht mehr geändert werden.

Standardmäßig wird der Metadatenkatalog für Systemobjektnamen zur SQL_Latin1_General_CP1_CI_AS Sortierung sortiert. Dies ist die Standardeinstellung in der Azure SQL-Datenbank, falls CATALOG_COLLATION nicht angegeben.

DATABASE_DEFAULT Gibt an, dass der Metadatenkatalog, der für Systemansichten und Systemtabellen verwendet wird, sortiert werden, um der Sortierung für die Datenbank zu entsprechen. Wenn Sie möchten, dass Objektbezeichner in Systemmetadaten dieselbe Sortierung wie Daten aufweisen, sollten Sie die Datenbank WITH CATALOG_COLLATION = DATABASE_DEFAULTerstellen.

  • Möglicherweise möchten Sie verschiedene Sortierungen für Daten- und Objektbezeichner verwenden. Im folgenden Beispiel wird die Datenbank mit einer Sortierung zwischen Groß- und Kleinschreibung für Zeilendaten erstellt, bei Objektbezeichnern wird jedoch die Sortierung der Standardsortierung SQL_Latin1_General_CP1_CI_AS ohne Groß-/Kleinschreibung verwendet.

    CREATE DATABASE [different-collations] COLLATE SQL_Latin1_General_CP1_CS_AS;
    
  • Wenn Sie möchten, dass sowohl Daten als auch Systemmetadaten dieselbe Sortierung verwenden, geben Sie WITH CATALOG_COLLATION = DATABASE_DEFAULT an. Im folgenden Beispiel wird die Datenbank mit einer Sortierung zwischen Groß- und Kleinschreibung erstellt, die für Objektbezeichner verwendet wird.

    CREATE DATABASE [same-collations] COLLATE SQL_Latin1_General_CP1_CS_AS
        WITH CATALOG_COLLATION = DATABASE_DEFAULT;
    

BACKUP_STORAGE_REDUNDANCY = {'LOCAL' | 'ZONE' | 'GEO' | 'GEOZONE' }

Diese Option gibt an, wie die Zeitpunktwiederherstellung und LTR-Sicherungen (Long-Term Retention, Langzeitaufbewahrung) für eine Datenbank repliziert werden. Die Geowiederherstellung und die Wiederherstellung nach regionalen Ausfällen sind nur verfügbar, wenn die Datenbank mit der Sicherungsspeicherredundanz GEO erstellt wird. Mit T-SQL erstellte Datenbanken verwenden georedundanten Sicherungsspeicher, sofern nichts anderes angegeben wird.

Verwenden Sie diese Option GEOZONE für redundanten Speicher in Geozonen. Geo-Zone Redundant Storage (GZRS) bietet ein Höchstmaß an Schutz vor zonalen Ausfällen sowie regionalen Ausfällen für alle Workloads.

Um die Datenhaltung beim Erstellen einer Datenbank mithilfe von T-SQL zu erzwingen, verwenden LOCAL Oder ZONE als Eingabe für den BACKUP_STORAGE_REDUNDANCY Parameter.

Wenn Sie eine Datenbank als Kopie einer anderen Datenbank mit AS COPY OFerstellen, wird die Angabe von Optionen unterstützt und sollte in Klammern eingeschlossen werden. Beispiel: WITH (BACKUP_STORAGE_REDUNDANCY = 'LOCAL');.

LEDGER = { ON | FALSCH }

Wenn diese Einstellung auf ON festgelegt ist, wird eine Ledgerdatenbank erstellt, in der die Integrität aller Benutzerdaten geschützt ist. In einer Ledgerdatenbank können nur Ledgertabellen erstellt werden. Der Standardwert ist OFF. Der Wert der LEDGER Option kann nicht geändert werden, nachdem die Datenbank erstellt wurde. Weitere Informationen finden Sie unter Konfigurieren einer Ledgerdatenbank.

MAXSIZE

Gibt die maximale Größe der Datenbank an. MAXSIZE muss für die angegebene EDITION (Dienstebene) gültig sein.

Es folgen die unterstützten MAXSIZE Werte und Standardwerte (D) für die Dienstebenen.

Hinweis

Das MAXSIZE Argument gilt nicht für einzelne Datenbanken auf der Hyperscale-Dienstebene. Einzelne Hyperscale-Tierdatenbanken werden nach Bedarf bis zu 128 TB vergrößert. Der SQL-Datenbankdienst fügt automatisch Speicher hinzu – Sie müssen keine maximale Größe festlegen.

DTU-Modell für einzelne und in einem Pool zusammengefasste Datenbanken auf einem SQL-Datenbankserver

MAXSIZE Basic S0-S2 S3-S12 P1-P6 P11-P15 1
100 MB Yes Yes Yes Yes Yes
500 MB Yes Yes Yes Yes Yes
1 GB Yes Yes Yes Yes Yes
2 GB Ja (D) Yes Yes Yes Yes
5 GB Yes Yes Yes Yes
10 GB Yes Yes Yes Yes
20 GB Yes Yes Yes Yes
30 GB Yes Yes Yes Yes
40 GB Yes Yes Yes Yes
50 GB Yes Yes Yes Yes
100 GB Yes Yes Yes Yes
150 GB Yes Yes Yes Yes
200 GB Yes Yes Yes Yes
250 GB Ja (D) Ja (D) Yes Yes
300 GB Yes Yes Yes
400 GB Yes Yes Yes
500 GB Yes Ja (D) Yes
750 GB Yes Yes Yes
1\.024 GB Yes Yes Ja (D)
Von 1.024 GB bis zu 4.096 GB in Schritten von 256 GB Yes

1 P11 und P15 ermöglichen MAXSIZE bis zu 4 TB mit 1.024 GB Standardgröße. P11 und P15 können bis zu 4 TB des enthaltenen Speichers ohne Aufpreis verwenden. In der Premium-Stufe MAXSIZE ist derzeit mehr als 1 TB in den folgenden Regionen verfügbar: USA East2, West USA, US Gov Virginia, Westeuropa, Deutschland Zentral, Südostasien, Japan Ost, Australien, Kanada Zentral und Kanada Ost. Weitere Informationen zu Ressourceneinschränkungen für das DTU-Modell finden Sie unter Ressourcengrenzwerte für einzelne Datenbanken mithilfe des DTU-Einkaufsmodells – Azure SQL-Datenbank.

Der MAXSIZE Wert für das DTU-Modell( sofern angegeben) muss ein gültiger Wert sein, der in der vorherigen Tabelle für die angegebene Dienstebene angezeigt wird.

Grenzwerte wie die maximale Datengröße und tempdb-größe im vCore-Kaufmodell finden Sie in den Artikeln zu Ressourcenlimits für Einzeldatenbanken oder Ressourcenlimits für Pools für elastische Datenbanken.

Wenn kein MAXSIZE-Wert bei Verwendung des vCore-Modells festgelegt ist, beträgt die Standardgröße 32 GB. Weitere Informationen zu Ressourcenbeschränkungen für das vCore-Modell finden Sie unter vCore-Ressourcengrenzwerte.

AUFLAGE

Gibt die Dienstebene der Datenbank an.

Einzel- und Pooldatenbanken Die verfügbaren Werte sind: „Basic“, „Standard“, „Premium“, „GeneralPurpose“, „BusinessCritical“ und „Hyperscale“.

Die folgenden Regeln gelten für MAXSIZE und EDITION Argumente:

  • Wenn EDITION angegeben, aber MAXSIZE nicht angegeben wird, wird der Standardwert für die Edition verwendet. Wenn der EDITION Wert beispielsweise auf "Standard" festgelegt ist und MAXSIZE nicht angegeben ist, wird die MAX-GRÖßE automatisch auf 250 MB festgelegt.

  • Wenn weder MAXSIZEEDITION noch angegeben, wird der EDITION Wert auf "GeneralPurpose" festgelegt und MAXSIZE auf 32 GB festgelegt.

SERVICE_OBJECTIVE

Gibt die Computegröße und das Dienstziel an.

  • Für das DTU-Kaufmodell: S0, S1, S2, S3, S4, S6, S7, S9, S12, P1, P2, P4, P6, P11, P15

  • Wählen Sie die Dienstebene für das aktuelle vCore-Kaufmodell aus, und geben Sie die Anzahl der virtuellen Kerne aus einer voreingestellten Liste von Werten an, wobei n für die Anzahl der virtuellen Kerne steht. Weitere Informationen finden Sie unter Ressourcenlimits für Einzeldatenbanken oder Ressourcenlimits für Pools für elastische Datenbanken.

    • Beispiel:
      • GP_Gen5_8 für allgemeine Zwecke, bereitgestellte Compute, Standardreihe (Gen5), 8 vCores.
      • GP_S_Gen5_8 für general purpose, serverless compute, Standard-Series (Gen5), 8 vCores.
      • HS_Gen5_8 für Hyperscale, bereitgestellte Compute- und Standardreihen (Gen5), 8 vCores.
      • HS_S_Gen5_8 für Hyperscale, serverlose Compute, Standard-Serie (Gen5), 8 vCores.

Dienstzielbeschreibungen und weitere Informationen zu Größe, Editionen und Dienstzielkombinationen finden Sie unter Dienstebenen von Azure SQL-Datenbank. Wenn das angegebene SERVICE_OBJECTIVE Element nicht von dem EDITIONunterstützt wird, wird eine Fehlermeldung angezeigt. Um den SERVICE_OBJECTIVE Wert von einer Ebene in eine andere zu ändern (z. B. von S1 zu P1), müssen Sie auch den EDITION Wert ändern. Die Unterstützung für PRS-Dienstziele wurde entfernt.

ELASTIC_POOL (Name = <elastic_pool_name>)

Anwendungsbereich: Einzelne und in einem Pool zusammengefasste Datenbanken. Gilt nicht für Datenbanken auf der Hyperscale-Dienstebene.

Wenn Sie eine neue Datenbank in einem elastischen Datenbankpool erstellen möchten, legen Sie die SERVICE_OBJECTIVE Datenbank auf ELASTIC_POOL den Namen des Pools fest und geben sie an. Weitere Informationen finden Sie unter Elastische Pools helfen Ihnen, mehrere Datenbanken in Azure SQL Database zu verwalten und zu skalieren.

ALS KOPIE VON [ source_server_name. ] source_database_name

Anwendungsbereich: Einzelne und in einem Pool zusammengefasste Datenbanken.

Wird AS COPY OF verwendet, um eine Datenbank auf denselben oder einen anderen SQL-Datenbank Server zu kopieren.

Wenn Sie eine Datenbank als Kopie einer anderen Datenbank erstellen, wird AS COPY OFdie Angabe von Optionen unterstützt und sollte in Klammern eingeschlossen werden. Beispiel: WITH (BACKUP_STORAGE_REDUNDANCY = 'LOCAL');.

  • source_server_name

    Der Name des SQL-Datenbankservers, auf dem sich die Quelldatenbank befindet. Dieser Parameter ist optional, wenn sich die Quell- und die Zieldatenbank auf demselben SQL-Datenbank-Server befinden sollen.

    Hinweis

    Das AS COPY OF Argument unterstützt nicht die vollqualifizierten eindeutigen Domänennamen. Das heißt, wenn der vollqualifizierte Domänenname des Servers serverName.database.windows.net ist, verwenden Sie serverName nur während des Datenbankkopiervorgangs.

  • source_database_name

    Der Name der zu kopierenden Datenbank.

Bemerkungen

Datenbanken in Azure SQL-Datenbank weisen einige Standardeinstellungen auf, die beim Erstellen der Datenbank festgelegt werden. Weitere Informationen zu diesen Standardeinstellungen finden Sie in der Liste der Werte unter DATABASEPROPERTYEX.

MAXSIZE bietet die Möglichkeit, die Größe der Datenbank zu beschränken. Wenn die Größe der Datenbank den Wert von MAXSIZE erreicht, erhalten Sie den Fehlercode 40544. In diesem Fall können Sie keine Daten einfügen oder aktualisieren oder neue Objekte erstellen (z. B. Tabellen, gespeicherte Prozeduren, Ansichten und Funktionen). Sie können jedoch weiterhin Daten lesen und löschen, Tabellen abschneiden, Tabellen und Indizes löschen sowie Indizes neu erstellen. Anschließend können Sie MAXSIZE auf einen Wert aktualisieren, der größer als die aktuelle Datenbankgröße ist, oder Sie löschen einige Daten, um Speicherplatz freizugeben. Es kann eine Verzögerung von bis zu 15 Minuten geben, bevor Sie neue Daten einfügen können.

Verwenden Sie ALTER DATABASE (Azure SQL Database), um die Größe, Edition oder die Dienstzielwerte im Nachhinein zu ändern.

Datenbankkopien

Anwendungsbereich: Einzelne und in einem Pool zusammengefasste Datenbanken.

Beim Kopieren einer Datenbank mit der CREATE DATABASE-Anweisung handelt es sich um einen asynchronen Vorgang. Daher ist für die vollständige Dauer des Kopiervorgangs keine Verbindung mit dem SQL-Datenbankserver erforderlich. Die CREATE DATABASE-Anweisung gibt die Steuerung an den Benutzer zurück, nachdem der Eintrag in sys.databases erstellt, aber bevor der Kopiervorgang der Datenbank abgeschlossen wurde. Das heißt, die CREATE DATABASE-Anweisung wird erfolgreich ausgeführt, während der Datenbank-Kopiervorgang noch ausgeführt wird.

  • Überwachen des Kopiervorgangs auf einem SQL-Datenbankserver: Abfragen der percentage_completereplication_state_desc oder-Spalten in der dm_database_copies oder der state Spalte in der sys.databases Ansicht. Die Ansicht sys.dm_operation_status kann ebenfalls verwendet werden, da diese den Status von Datenbankvorgängen zurückgibt, z.B. den des Kopiervorgangs der Datenbank.

Wenn der Kopiervorgang erfolgreich abgeschlossen wurde, ist die Zieldatenbank transaktionskonsistent mit der Quelldatenbank.

Die folgende Syntax und die folgenden semantischen Regeln gelten für die Verwendung des AS COPY OF-Arguments:

  • Der Quellservername und der Servername für das Kopierziel können identisch oder unterschiedlich sein. Wenn diese identisch sind, ist dieser Parameter optional, und es wird standardmäßig der Serverkontext der aktuellen Sitzung verwendet.
  • Die Namen der Quell- und der Zieldatenbank müssen angegeben werden. Diese Namen müssen eindeutig sein und den SQL Server-Regeln für Bezeichner entsprechen. Weitere Informationen finden Sie unter Datenbankbezeichner.
  • Die CREATE DATABASE-Anweisung muss im Kontext der master-Datenbank des SQL-Datenbank-Servers ausgeführt werden, auf dem die neue Datenbank erstellt wird.
  • Nachdem der Kopiervorgang abgeschlossen wurde, muss die Zieldatenbank als unabhängige Datenbank verwaltet werden. Sie können die ALTER DATABASE-Anweisung und die DROP DATABASE-Anweisung unabhängig von der Quelldatenbank für die neue Datenbank ausführen. Außerdem können Sie die neue Datenbank in eine andere neue Datenbank kopieren.
  • Der Zugriff auf die Quelldatenbank ist weiterhin möglich, solange der Datenbank-Kopiervorgang ausgeführt wird.

Weitere Informationen finden Sie unter Kopieren einer transaktionskonsensalen Kopie einer Datenbank in der Azure SQL-Datenbank.

Wichtig

Standardmäßig wird die Datenbankkopie mit der gleichen Sicherungsspeicherredundanz wie die Quelldatenbank erstellt.

Berechtigungen

Zum Erstellen einer Datenbank muss die Anmeldung eines der folgenden Prinzipale sein:

  • Dem Prinzipalkonto auf Serverebene
  • Der Microsoft Entra-Administrator für den logischen Server in Azure
  • Einem Konto, das Mitglied der dbmanager-Datenbankrolle ist

Zusätzliche Anforderungen für die Verwendung der CREATE DATABASE ... AS COPY OF-Syntax: Der Benutzer, der die Anweisung auf dem lokalen Server ausführt, muss mindestens auch der db_owner (Datenbankbesitzer) des Quellservers sein. Wenn das Konto auf der SQL Server-Authentifizierung basiert, muss der Benutzer, der die Anweisung auf dem lokalen Server ausführt, über passende Anmeldeinformationen (mit identischem Namen und Kennwort) für den Quellserver SQL-Datenbank besitzen.

Beispiele

Einfaches Beispiel

Ein einfaches Beispiel zum Erstellen einer Datenbank.

CREATE DATABASE TestDB1;

Einfaches Beispiel mit Edition

Ein einfaches Beispiel zum Erstellen einer datenbank mit allgemeinem Zweck.

CREATE DATABASE TestDB2
    (EDITION = 'GeneralPurpose');

Beispiel mit zusätzlichen Optionen

Ein Beispiel, bei dem mehrere Optionen verwendet werden.

CREATE DATABASE hito
COLLATE Japanese_Bushu_Kakusu_100_CS_AS_KS_WS
( MAXSIZE = 500 MB, EDITION = 'GeneralPurpose', SERVICE_OBJECTIVE = 'GP_Gen5_8' ) ;

Erstellen einer Datenbankkopie

Ein Beispiel, in dem die Kopie einer Datenbank erstellt wird.

Anwendungsbereich: Einzelne und in einem Pool zusammengefasste Datenbanken.

CREATE DATABASE escuela
    AS COPY OF school;

Erstellen einer Datenbank in einem Pool für elastische Datenbanken

Erstellt eine neue Datenbank in einem Pool namens „S3M100“:

Anwendungsbereich: Einzelne und in einem Pool zusammengefasste Datenbanken.

CREATE DATABASE db1
    (SERVICE_OBJECTIVE = ELASTIC_POOL (NAME = S3M100));

Erstellen einer Kopie einer Datenbank auf einem anderen logischen Server

Im folgenden Beispiel wird eine Kopie der Datenbank erstellt, die db_original im Dienstziel "Allgemeine Zwecke" für eine einzelne Datenbank benannt db_copy ist. Dies gilt unabhängig davon, ob db_original sich in einem Pool für elastische Datenbanken oder in einer Computegröße (Dienstziel) für eine einzelne Datenbank befindet.

Anwendungsbereich: Einzelne und in einem Pool zusammengefasste Datenbanken.

CREATE DATABASE db_copy
    AS COPY OF <database>.db_original
    (EDITION = 'GeneralPurpose', SERVICE_OBJECTIVE = 'GP_Gen5_8');

Im folgenden Beispiel wird eine Kopie der Datenbank db_original namens db_copy in einem Pool für elastische Datenbanken namens ep1 erstellt. Dies gilt unabhängig davon, ob db_original sich in einem Pool für elastische Datenbanken oder in einer Computegröße (Dienstziel) für eine einzelne Datenbank befindet. Wenn db_original sich in einem Pool für elastische Datenbanken mit einem anderen Namen befindet, wird db_copy weiterhin in ep1 erstellt.

Anwendungsbereich: Einzelne und in einem Pool zusammengefasste Datenbanken.

CREATE DATABASE db_copy
    AS COPY OF <database>.db_original
    (SERVICE_OBJECTIVE = ELASTIC_POOL (NAME = ep1));

Erstellen einer Datenbank mit einem angegebenen Wert für die Katalogsortierung

Im folgenden Beispiel wird die Katalogsortierung während der Datenbankerstellung auf DATABASE_DEFAULT die Sortierung des Katalogs festgelegt, wodurch die Katalogsortierung mit der Datenbanksortierung identisch ist.

CREATE DATABASE TestDB3 COLLATE Japanese_XJIS_140 (MAXSIZE = 100 MB, EDITION = 'Basic')
  WITH CATALOG_COLLATION = DATABASE_DEFAULT;

Erstellen einer Datenbank mit Zonenredundanz für Sicherungen

Im folgenden Beispiel wird die Zonenredundanz für Datenbanksicherungen festgelegt. Sowohl Point-in-Time-Wiederherstellungssicherungen als auch langfristige Aufbewahrungssicherungen (sofern konfiguriert) verwenden dieselbe Speicherredundanz.

CREATE DATABASE test_zone_redundancy
  WITH BACKUP_STORAGE_REDUNDANCY = 'ZONE';

Erstellen einer Ledgerdatenbank

CREATE DATABASE MyLedgerDB (EDITION = 'GeneralPurpose')
    WITH LEDGER = ON;

Erstellen als Kopie einer Datenbank beim Ändern von Optionen

Im folgenden Beispiel werden verschiedene Optionen für die neue Kopie einer Datenbank festgelegt, einschließlich einer anderen Dienstebene und Einstellungen für Die Redundanz des Sicherungsspeichers. Standardmäßig wird die Datenbankkopie mit den gleichen Einstellungen wie die Quelldatenbank erstellt.

CREATE DATABASE copy_testdb
AS COPY OF [test_db]
  (EDITION = 'GeneralPurpose', SERVICE_OBJECTIVE = 'GP_Gen5_8')
  WITH (BACKUP_STORAGE_REDUNDANCY = 'LOCAL');

* SQL Managed Instance *

Verwaltete Azure SQL-Instanz

Übersicht

In Verwaltete Azure SQL-Instanz wird diese Anweisung verwendet, um eine Datenbank zu erstellen. Wenn Sie eine Datenbank in einer verwalteten Instanz erstellen, geben Sie den Datenbanknamen und die Sortierung ein.

Syntax

Weitere Informationen zu Syntaxkonventionen finden Sie unter Transact-SQL-Syntaxkonventionen.

CREATE DATABASE database_name [ COLLATE collation_name ]
[ WITH <with_options> [ , ..n ] ]
[ ; ]

<with_options> ::=
{
  LEDGER = { ON | OFF }
}

Wichtig

Verwenden Sie zum Hinzufügen von Dateien oder Festlegen der Kapselung für eine Datenbank in einer verwalteten Instanz die ALTER DATABASE-Anweisung.

Bei verwalteten SQL-Instanzen wird die anfängliche MAXSIZE implizit auf die aktuelle Datenträgergröße festgelegt und ändert sich nicht automatisch, wenn Sie die Datenträgergröße aus dem Azure-Portal erweitern. Nach dem Erweitern des Datenträgers sollten Sie auch mit MAXSIZE erweitern, um vollständige Fehler in datenbankdatei zu vermeiden.

Argumente

database_name

Der Name der neuen Datenbank. Dieser Name muss in der SQL Server-Instanz eindeutig sein und den SQL Server-Regeln für Bezeichner entsprechen. Weitere Informationen finden Sie unter Datenbankbezeichner.

collation_name

Gibt die Standardsortierung für die Datenbank an. Als Sortierungsname kann entweder der Name einer Windows-Sortierreihenfolge oder ein SQL-Sortierungsname verwendet werden. Wenn nicht angegeben, wird der Datenbank die Standardsortierung zugewiesen. Dies ist SQL_Latin1_General_CP1_CI_AS.

Weitere Informationen zu den Namen der Windows- und SQL-Sortierreihenfolge, COLLATE.

LEDGER = { ON | FALSCH }

Wenn diese Einstellung auf ON festgelegt ist, wird eine Ledgerdatenbank erstellt, in der die Integrität aller Benutzerdaten geschützt ist. In einer Ledgerdatenbank können nur Ledgertabellen erstellt werden. Der Standardwert ist OFF. Der Wert der LEDGER Option kann nicht geändert werden, nachdem die Datenbank erstellt wurde. Weitere Informationen finden Sie unter Konfigurieren einer Ledgerdatenbank.

Bemerkungen

Datenbanken in Azure SQL-Datenbank weisen einige Standardeinstellungen auf, die beim Erstellen der Datenbank festgelegt werden. Weitere Informationen zu diesen Standardeinstellungen finden Sie in der Liste der Werte unter DATABASEPROPERTYEX.

Wichtig

Die CREATE DATABASE-Anweisung muss die einzige Anweisung in einem Transact-SQL-Batch sein.

Es gelten die folgenden Einschränkungen für CREATE DATABASE:

  • Dateien und Dateigruppen können nicht definiert werden.

  • WITH Optionen werden nicht unterstützt, mit Ausnahme von WITH LEDGER.

    Tipp

    Verwenden Sie zur Umgehung dieses Problems ALTER DATABASE nach CREATE DATABASE, um Datenbankoptionen festzulegen und Dateien hinzuzufügen.

Berechtigungen

Um eine Datenbank zu erstellen, muss ein Anmeldename einer der folgenden Arten von Sicherheitsprinzipalen sein:

  • Dem Prinzipalkonto auf Serverebene
  • Der Microsoft Entra-Administrator für den logischen Server in Azure
  • Eine Anmeldung, die Mitglied der Datenbankrolle "dbcreator " ist

Beispiele

Einfaches Beispiel

Ein einfaches Beispiel zum Erstellen einer Datenbank.

CREATE DATABASE TestDB1;

Erstellen einer Ledgerdatenbank

CREATE DATABASE MyLedgerDB
    WITH LEDGER = ON;

* Azure Synapse
Analytik*

Azure Synapse Analytics

Übersicht

In Azure Synapse kann diese Anweisung mit einer Azure SQL-Datenbank-Serverinstanz verwendet werden, um einen dedizierten SQL-Pool zu erstellen. Mit dieser Anweisung geben Sie den Datenbanknamen, die Sortierung, die maximale Größe, die Edition und das Dienstziel an.

  • CREATE DATABASE wird für eigenständige dedizierte SQL-Pools (früher SQL DW) mit Gen2-Dienstebenen unterstützt.
  • CREATE DATABASE wird für dedizierte SQL-Pools in einem Azure Synapse Analytics-Arbeitsbereich nicht unterstützt. Verwenden Sie stattdessen das Azure-Portal.
  • CREATE DATABASE wird für serverlose SQL-Pools in Azure Synapse Analytics unterstützt.

Syntax

Weitere Informationen zu Syntaxkonventionen finden Sie unter Transact-SQL-Syntaxkonventionen.

CREATE DATABASE database_name [ COLLATE collation_name ]
(
    [ MAXSIZE = {
          250 | 500 | 750 | 1024 | 5120 | 10240 | 20480 | 30720
        | 40960 | 51200 | 61440 | 71680 | 81920 | 92160 | 102400
        | 153600 | 204800 | 245760
      } GB ,
    ]
    EDITION = 'datawarehouse',
    SERVICE_OBJECTIVE = {
          'DW100c' | 'DW200c' | 'DW300c' | 'DW400c' | 'DW500c'
        | 'DW1000c' | 'DW1500c' | 'DW2000c' | 'DW2500c' | 'DW3000c' | 'DW5000c'
        | 'DW6000c' | 'DW7500c' | 'DW10000c' | 'DW15000c' | 'DW30000c'
    }
)
[ ; ]

Argumente

database_name

Der Name der neuen Datenbank. Dieser Name muss auf dem SQL-Server eindeutig sein, der Datenbanken in Azure SQL-Datenbank und Azure Synapse Analytics hosten kann, und den SQL Server-Regeln für Bezeichner entsprechen. Weitere Informationen finden Sie unter Datenbankbezeichner.

collation_name

Gibt die Standardsortierung für die Datenbank an. Als Sortierungsname kann entweder der Name einer Windows-Sortierreihenfolge oder ein SQL-Sortierungsname verwendet werden. Wenn nicht angegeben, wird der Datenbank die Standardsortierung zugewiesen. Dies ist SQL_Latin1_General_CP1_CI_AS.

Weitere Informationen zu den Namen der Windows- und SQL-Sortierung finden Sie unter COLLATE.

MAXSIZE

Der Standardwert ist 245.760 GB (240 TB).

Anwendungsbereich: Optimiert für Compute Gen1

Der Wert für die maximal zulässige Größe der Datenbank Die Datenbank kann nicht darüber hinaus MAXSIZEwachsen.

Anwendungsbereich: Optimiert für Compute Gen2

Die maximal zulässige Größe für Rowstore-Daten in der Datenbank Daten, die in Zeilenspeichertabellen, dem Deltastore eines Spaltenspeichers oder einem nicht gruppierten Index in einem gruppierten Columnstore-Index gespeichert sind, können nicht übersteigen MAXSIZE. Daten, die in das Spaltenspeicherformat komprimiert sind, haben keine Größenbeschränkung und sind nicht eingeschränkt durch MAXSIZE.

AUFLAGE

Gibt die Dienstebene der Datenbank an. Verwenden Sie datawarehouse für Azure Synapse Analytics.

SERVICE_OBJECTIVE

Gibt die Computegröße (Dienstziel) an. Die Servicelevel für Gen2 werden in cDWU (Compute-Data Warehouse-Einheiten) gemessen, z. B. DW2000c. Gen1-Servicelevel werden in DWUs gemessen, z. B. DW2000. Weitere Informationen zu Dienstzielen für Azure Synapse finden Sie unter Data Warehouse-Einheiten (DWUs). Gen1-Dienstziele (nicht mehr aufgeführt) werden nicht mehr unterstützt, Sie können einen Fehler erhalten: Azure SQL Data Warehouse Gen1 has been deprecated in this region. Please use SQL Analytics in Azure Synapse.

Bemerkungen

Verwenden Sie DATABASEPROPERTYEX, um die Datenbankeigenschaften anzuzeigen.

Verwenden Sie ALTER DATABASE – Azure Synapse Analytics, um die Maximalgröße oder die Dienstzielwerte später zu ändern.

Azure Synapse ist auf COMPATIBILITY_LEVEL 130 und kann nicht geändert werden. Weitere Informationen finden Sie unter ALTER DATABASE Compatibility Level.

Berechtigungen

Erforderliche Berechtigungen:

  • Im Rahmen des Bereitstellungsprozesses erstellte Prinzipalanmeldung auf Serverebene oder
  • Mitglied der Datenbankrolle "dbmanager ".

Fehlerbehandlung

Wenn die Größe der Datenbank erreicht MAXSIZEist, löst SQL Server Fehlercode 40544 aus. In diesem Fall können Sie keine Daten einfügen und aktualisieren oder neue Objekte erstellen (z. B. Tabellen, gespeicherte Prozeduren, Ansichten und Funktionen). Sie können jedoch weiterhin Daten lesen und löschen, Tabellen abschneiden, Tabellen und Indizes löschen, sowie Indizes neu erstellen. Anschließend können Sie MAXSIZE auf einen Wert aktualisieren, der größer als die aktuelle Datenbankgröße ist, oder Sie löschen einige Daten, um Speicherplatz freizugeben. Eine Verzögerung von bis zu fünfzehn Minuten ist möglich, bevor Sie neue Daten einfügen können.

Begrenzungen

Es muss eine Verbindung mit der master-Datenbank bestehen, um eine neue Datenbank zu erstellen.

Die CREATE DATABASE-Anweisung muss die einzige Anweisung in einem Transact-SQL-Batch sein.

Sie können die Datenbanksortierung nach dem Erstellen der Datenbank nicht mehr ändern.

Beispiele: Azure Synapse Analytics

Ein. Einfaches Beispiel

Ein einfaches Beispiel zum Erstellen eines eigenständigen dedizierten SQL-Pools (ehemals SQL DW). Dadurch wird die Datenbank mit der kleinsten Maximalgröße von 10,240 GB, der Standardsortierung (SQL_Latin1_General_CP1_CI_AS) und dem geringsten Dienstziel von Gen2 erstellt (DW100c).

CREATE DATABASE TestDW
    (EDITION = 'datawarehouse', SERVICE_OBJECTIVE = 'DW100c');

B. Erstellen Sie eine Data Warehouse-Datenbank mit allen Optionen.

Ein Beispiel zum Erstellen eines eigenständigen dedizierten SQL-Pools mit 10 Terabyte (früher SQL DW).

CREATE DATABASE TestDW COLLATE Latin1_General_100_CI_AS_KS_WS
(MAXSIZE = 10240 GB, EDITION = 'datawarehouse', SERVICE_OBJECTIVE = 'DW1000c');

C. Einfaches Beispiel in einem Synapse Analytics serverlosen SQL-Pool

Dadurch wird die Datenbank im serverlosen Pool erstellt, die eine Sortierung angibt (Latin1_General_100_CI_AS_KS_WS).

CREATE DATABASE TestDW COLLATE Latin1_General_100_CI_AS_KS_WS;

* Analytics-Plattform
System (PDW) *

Analyseplattformsystem

Übersicht

In Analytics Platform System wird diese Anweisung verwendet, um in einer Analytics Platform System-Appliance eine neue Datenbank zu erstellen. Verwenden Sie diese Anweisung, um alle Dateien zu erstellen, die einer Appliancedatenbank zugeordnet sind, und um die Optionen für die maximale Größe und die automatische Vergrößerung der Datenbanktabellen und des Transaktionsprotokolls festzulegen.

Syntax

Weitere Informationen zu Syntaxkonventionen finden Sie unter Transact-SQL-Syntaxkonventionen.

CREATE DATABASE database_name
WITH (
    [ AUTOGROW = ON | OFF , ]
    REPLICATED_SIZE = replicated_size [ GB ] ,
    DISTRIBUTED_SIZE = distributed_size [ GB ] ,
    LOG_SIZE = log_size [ GB ] )
[ ; ]

Argumente

database_name

Der Name der neuen Datenbank. Weitere Informationen zu zulässigen Datenbanknamen finden Sie unter „Regeln für die Objektbenennung“ und „Reservierte Datenbanknamen“ in der Produktdokumentation zu Analytics Platform System (PDW).

AUTOGROW = { ON | FALSCH }

Gibt an, ob die Parameter replicated_size, distributed_size und log_size automatisch über die angegebene Größe hinaus vergrößert werden. Der Standardwert ist OFF.

Wenn AUTOGROW , ONreplicated_size, distributed_size und log_size bei jedem Einfügen, Aktualisieren oder einer anderen Aktion, die mehr Speicherplatz erfordert, als bereits zugewiesen wurde, wachsen und log_size wachsen.

Wenn AUTOGROW ja OFF, werden die Größen nicht automatisch vergrößert. Das Analytics Platform System (PDW) gibt einen Fehler zurück, wenn eine Aktion versucht wird, die replicated_size, distributed_size oder log_size erfordert, um über ihren angegebenen Wert hinaus zu wachsen.

AUTOGROW ist entweder ON für alle Größen oder OFF für alle Größen verfügbar. Beispielsweise ist es nicht möglich, für AUTOGROW ON festzulegen, aber nicht für replicated_size.

replicated_size [ DE ]

Eine positive Zahl. Legt die Größe (eine ganze Zahl oder Dezimalzahl Gigabytes) für den gesamten Speicherplatz fest, der replizierten Tabellen und den entsprechenden Daten auf jedem Computeknoten zugewiesen wurde. Die Anforderungen an die Mindest- und Höchstwerte für replicated_size finden Sie unter „Minimal- und Maximalwerte“ in der Produktdokumentation zu Analytics Platform System (PDW).

Ist AUTOGROW dies ONder Fall, können replizierte Tabellen über diesen Grenzwert hinaus wachsen.

Wenn AUTOGROW dies der Fehler ist OFF, wird ein Fehler zurückgegeben, wenn ein Benutzer versucht, eine neue replizierte Tabelle zu erstellen, Daten in eine vorhandene replizierte Tabelle einzufügen oder eine vorhandene replizierte Tabelle auf eine Weise zu aktualisieren, die die Größe über replicated_size hinaus erhöhen würde.

distributed_size [ DE ]

Eine positive Zahl. Die Größe, als ganze Zahl oder Dezimalzahl Gigabytes, für den gesamten Speicherplatz, der verteilten Tabellen (und den entsprechenden Daten) auf der gesamten Appliance zugewiesen wurde. Die Anforderungen an die Mindest- und Höchstwerte für distributed_size finden Sie unter „Minimal- und Maximalwerte“ in der Produktdokumentation zu Analytics Platform System (PDW).

Ist AUTOGROW dies ONder Fall, dürfen verteilte Tabellen über diese Grenze hinaus wachsen.

Wenn AUTOGROW dies der Fehler ist OFF, wird ein Fehler zurückgegeben, wenn ein Benutzer versucht, eine neue verteilte Tabelle zu erstellen, Daten in eine vorhandene verteilte Tabelle einzufügen oder eine vorhandene verteilte Tabelle auf eine Weise zu aktualisieren, die die Größe über distributed_size hinaus erhöhen würde.

log_size [ DE ]

Eine positive Zahl. Die Größe (als ganze Zahl oder Dezimalzahl Gigabytes) für das Transaktionsprotokoll auf der gesamten Appliance.

Die Anforderungen an die Mindest- und Höchstwerte für log_size finden Sie unter „Minimal- und Maximalwerte“ in der Produktdokumentation zu Analytics Platform System (PDW).

Ist AUTOGROW dies ONder Fall, darf die Protokolldatei über diese Grenze hinaus wachsen. Verwenden Sie die DBCC SHRINKLOG - Analytics Platform System (PDW) -Anweisung, um die Größe der Protokolldateien auf ihre originale Größe zu reduzieren.

Wenn AUTOGROW dies der Fall ist OFF, wird ein Fehler für jede Aktion zurückgegeben, die die Protokollgröße auf einem einzelnen Computeknoten über log_size hinaus erhöhen würde.

Berechtigungen

Erfordert die CREATE ANY DATABASE-Berechtigung in der master-Datenbank oder die Mitgliedschaft in der festen Serverrolle sysadmin.

Im folgenden Beispiel wird dem Datenbankbenutzer Fay die Berechtigung zum Erstellen einer Datenbank erteilt.

USE master;
GO

GRANT CREATE ANY DATABASE TO [Fay];
GO

Bemerkungen

Datenbanken werden mit dem Datenbank-Kompatibilitätsgrad 120, also dem Kompatibilitätsgrad für SQL Server 2014 (12.x), erstellt. Dadurch wird sichergestellt, dass die Datenbank alle von PDW verwendeten SQL Server 2014-Funktionen (12.x) verwenden kann.

Begrenzungen

Die CREATE DATABASE Anweisung ist in einer expliziten Transaktion nicht zulässig. Weitere Informationen finden Sie unter Transact-SQL Anweisungen.

Informationen zu minimalen und maximalen Einschränkungen für Datenbanken finden Sie unter „Minimal- und Maximalewerte“ in der Produktdokumentation zu Analytics Platform System (PDW).

Bei der Erstellung der Datenbank muss genügend freier Speicherplatz auf jedem Computeknoten verfügbar sein, um den kombinierten Gesamtspeicherplatz der folgenden Größen zuzuweisen:

  • SQL Server-Datenbank mit Tabellen mit einer Größe von replicated_table_size.
  • SQL Server-Datenbank mit Tabellen mit einer Größe von (distributed_table_size bzw. Anzahl von Computeknoten)
  • SQL Server-Protokolle mit einer Größe von (log_size / Anzahl von Computeknoten).

Sperren

Eine gemeinsame Sperre für das DATABASE-Objekt wird zugelassen.

Metadaten

Nachdem dieser Vorgang erfolgreich ausgeführt wurde, wird ein Eintrag für diese Datenbank in den Metadatenansichten "sys.databases " und "sys.objects " angezeigt.

Beispiele: Analytics-Plattformsystem (PDW)

Ein. Beispiele für die Erstellung einer grundlegenden Datenbank

Im folgenden Beispiel wird die Datenbank mytest mit einem zugewiesenen Speicherplatz von 100 GB pro Computeknoten für replizierte Tabellen, 500 GB pro Appliance für verteilte Tabellen und 100 GB pro Appliance für das Transaktionsprotokoll erstellt. In diesem Beispiel AUTOGROW ist standardmäßig deaktiviert.

CREATE DATABASE mytest
  WITH
    (REPLICATED_SIZE = 100 GB,
    DISTRIBUTED_SIZE = 500 GB,
    LOG_SIZE = 100 GB );

Im folgenden Beispiel wird die Datenbank mytest mit den gleichen Parametern erstellt, mit der Ausnahme, dass sie AUTOGROW aktiviert ist. Dadurch kann sich die Datenbank über die angegebenen Größenparameter hinweg vergrößern.

CREATE DATABASE mytest
  WITH
    (AUTOGROW = ON,
    REPLICATED_SIZE = 100 GB,
    DISTRIBUTED_SIZE = 500 GB,
    LOG_SIZE = 100 GB);

B. Erstellen einer Datenbank mit partiellen Gigabytegrößen

Im folgenden Beispiel wird die Datenbank mytestmit AUTOGROW deaktivierter Speicherzuweisung von 1,5 GB pro Computeknoten für replizierte Tabellen, 5,25 GB pro Appliance für verteilte Tabellen und 10 GB pro Appliance für das Transaktionsprotokoll erstellt.

CREATE DATABASE mytest
  WITH
    (REPLICATED_SIZE = 1.5 GB,
    DISTRIBUTED_SIZE = 5.25 GB,
    LOG_SIZE = 10 GB);