CREATE DATABASE (Transact-SQL)

Erstellt eine neue Datenbank und die zum Speichern der Datenbank verwendeten Dateien, erstellt eine Datenbank-Momentaufnahme oder hängt eine Datenbank aus den getrennten Dateien einer zuvor erstellten Datenbank an.

Themenlink (Symbol) Transact-SQL-Syntaxkonventionen

Syntax

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 }
}

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

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

<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 ]
    <filespec> [ ,...n ]
}

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

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

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

Argumente

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

    database_name darf maximal 128 Zeichen lang sein, wenn kein logischer Name für die Protokolldatei angegeben wurde. Wenn kein logischer Name angegeben ist, generiert SQL Server die Werte logical_file_name und os_file_name für das Protokoll durch Anfügen eines Suffixes an database_name. 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 wird, verwendet SQL Server den Wert database_name als logical_file_name und 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.

  • CONTAINMENT
    Gibt den Kapselungsstatus der Datenbank an. NONE = nicht eigenständige Datenbank. PARTIAL = teilweise eigenständige Datenbank.

  • ON
    Gibt an, dass die zum Speichern der Datenabschnitte der Datenbank (Datendateien) verwendeten Datenträgerdateien explizit definiert sind. ON ist erforderlich, wenn darauf eine Liste von durch Trennzeichen voneinander getrennter <filespec>-Elemente folgt, die die Datendateien für die primäre Dateigruppe definieren. Auf die Liste der Dateien in der primären Dateigruppe kann eine optionale Liste durch Trennzeichen voneinander getrennter <filegroup>-Elemente folgen, die Benutzerdateigruppen und deren Dateien definieren.

  • PRIMARY
    Gibt an, dass die zugeordnete <filespec>-Liste die Primärdatei definiert. Die erste Datei, die im <filespec>-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.

    Ist PRIMARY nicht angegeben, wird die erste in der CREATE DATABASE-Anweisung aufgeführte Datei die primäre Datei.

  • LOG ON
    Gibt an, dass die zum Speichern des Datenbankprotokolls verwendeten Datenträgerdateien (Protokolldateien) explizit definiert sind. Nach LOG ON folgt eine Liste durch Trennzeichen voneinander getrennter <filespec>-Elemente, die die Protokolldateien definieren. Wenn LOG ON nicht angegeben ist, wird automatisch eine Protokolldatei erstellt, deren Größe 25 Prozent der Gesamtgröße aller Datendateien für die Datenbank beträgt, oder 512 KB, 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 (SQL Server Management Studio).

    LOG ON kann nicht in einer Datenbankmomentaufnahme angegeben werden.

  • COLLATE 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. In einer Datenbankmomentaufnahme kann kein Sortierungsname angegeben werden.

    Mit den Klauseln FOR ATTACH und FOR ATTACH_REBUILD_LOG kann kein Sortierungsname angegeben werden. Informationen zum Ändern der Sortierung einer angefügten Datenbank finden Sie auf dieser Microsoft-Website.

    Weitere Informationen zu den Namen der Windows-Sortierreihenfolgen und zu den SQL-Sortierungsnamen finden Sie unter COLLATE (Transact-SQL).

    HinweisHinweis

    Eigenständige Datenbanken werden anders sortiert als nicht eigenständige Datenbanken. Unter Enthaltene Datenbanksortierungenfinden Sie weitere Informationen.

  • WITH <Option>

    • <filestream_options>

      • NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL }
        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.

    Die folgenden Optionen sind nur zulässig, wenn CONTAINMENT auf PARTIAL festgelegt wurde. Wenn CONTAINMENT auf NONE festgelegt wird, treten Fehler auf.

    • DEFAULT_FULLTEXT_LANGUAGE = <lcid> | <Sprachenname> | <Sprachenalias>

      Eine vollständige Beschreibung dieser Option finden Sie unter Konfigurieren der Serverkonfigurationsoption Volltext-Standardsprache.

    • DEFAULT_LANGUAGE = <lcid> | <Sprachenname> | <Sprachenalias>

      Eine vollständige Beschreibung dieser Option finden Sie unter Konfigurieren der Serverkonfigurationsoption Standardsprache.

    • NESTED_TRIGGERS = { OFF | ON}

      Eine vollständige Beschreibung dieser Option finden Sie unter Konfigurieren der Serverkonfigurationsoption Geschachtelte Trigger.

    • TRANSFORM_NOISE_WORDS = { OFF | ON}

      Eine vollständige Beschreibung dieser Option finden Sie unter Füllwörtertransformation (Serverkonfigurationsoption).

    • 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 Konfigurieren der Serverkonfigurationsoption Umstellungsjahr für Angaben mit zwei Ziffern.

    • DB_CHAINING { OFF | ON }

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

      Wenn OFF festgelegt ist, darf die Datenbank nicht Teil einer datenbankübergreifenden Besitzverkettung sein. Die Standardeinstellung ist OFF.

      Wichtiger HinweisWichtig

      Die Instanz von SQL Server erkennt diese Einstellung, wenn die cross db ownership chaining-Serveroption deaktiviert (0 bzw. OFF) ist. Wenn für cross db ownership chaining der Wert 1 (ON) festgelegt ist, können alle Benutzerdatenbanken unabhängig vom Wert dieser Option Teile von datenbankübergreifenden Besitzketten sein. 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 folgende Systemdatenbanken nicht festgelegt werden: master, model, tempdb.

    • TRUSTWORTHY { OFF | ON }

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

      Wenn OFF angegeben wird, können Datenbankmodule in einem Identitätswechselkontext nicht auf Ressourcen außerhalb der Datenbank zugreifen. Die Standardeinstellung ist OFF.

      TRUSTWORTHY wird auf OFF festgelegt, wenn die Datenbank angefügt wird.

      Standardmäßig ist TRUSTWORTHY für alle Systemdatenbanken mit Ausnahme der msdb-Datenbank auf OFF festgelegt. Für die model-Datenbank und für die tempdb-Datenbank kann der Wert nicht geändert werden. Für die master-Datenbank sollten Sie die Option TRUSTWORTHY niemals auf ON festlegen.

      Zum Festlegen dieser Option ist die Mitgliedschaft in der festen Serverrolle sysadmin erforderlich.

  • FOR ATTACH [ WITH < attach_database_option > ]
    Gibt an, dass die Datenbank durch Anfügen eines vorhandenen Satzes von Betriebssystemdateien erstellt wird. Ein <filespec>-Eintrag muss vorhanden sein, der die erste primäre Datei angibt. Darüber hinaus werden nur <filespec>-Einträge für die Dateien benötigt, deren Pfad sich seit dem erstmaligen Erstellen oder letzten Anhängen der Datenbank geändert hat. Für diese Dateien muss ein <filespec>-Eintrag angegeben werden.

    Für FOR ATTACH ist Folgendes erforderlich:

    • Alle Datendateien (MDF und NDF) müssen verfügbar sein.

    • Wenn mehrere Protokolldateien vorhanden sind, müssen alle verfügbar sein.

    Wenn eine Datenbank im Lese-/Schreibmodus eine einzige Protokolldatei hat, die derzeit nicht verfügbar ist, und wenn die Datenbank vor dem Anfügen heruntergefahren wurde und keine Benutzer oder offene Transaktionen vorhanden sind, dann wird mit FOR ATTACH automatisch die Protokolldatei neu erstellt und die primäre Datei aktualisiert. Im Gegensatz dazu kann für eine schreibgeschützte Datenbank das Protokoll nicht neu erstellt werden, da das Hochladen der primären Datei nicht möglich ist. Deshalb müssen Sie beim Anfügen einer schreibgeschützten Datenbank, deren Protokoll nicht verfügbar ist, die Protokolldateien oder Dateien in der FOR ATTACH-Klausel angeben.

    HinweisHinweis

    Eine Datenbank, die in einer neueren Version von SQL Server erstellt wurde, kann in früheren Versionen nicht angefügt werden. Die Quelldatenbank muss mindestens Version 90 (SQL Server 2005) sein, um an SQL Server 2012 angefügt werden zu können. SQL Server 2005-Datenbanken mit einem Kompatibilitätsgrad kleiner 90 werden bei der Anfügung auf den Kompatibilitätsgrad 90 festgelegt.

    In SQL Server werden alle Volltextdateien, die zur angefügten Datenbank gehören, mit der Datenbank angefügt. Geben Sie den neuen Speicherort ohne Betriebssystem-Dateinamen der Volltextdatei an, um einen neuen Pfad für den Volltextkatalog anzugeben. Weitere Informationen finden Sie im Abschnitt mit Beispielen.

    Wenn Sie einer SQL Server-Instanz eine Datenbank anfügen, deren FILESTREAM-Option den Verzeichnisnamen enthält, überprüft SQL Server, ob der Database_Directory-Name eindeutig ist. Ist dies nicht der Fall, schlägt der Anfügevorgang mit folgendem Fehler fehl: "FILESTREAM Database_Directory-Name <Name> ist auf dieser SQL Server-Instanz nicht eindeutig". Um diesen Fehler zu vermeiden, sollte der optionale Parameter directory_name in diesem Vorgang übergeben werden.

    FOR ATTACH kann nicht in einer Datenbank-Momentaufnahme angegeben werden.

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

    Wenn die Datenbank Service Broker verwendet, fügen Sie den Parameter WITH <service_broker_option> in die FOR ATTACH-Klausel ein:

    • <service_broker_option>
      Steuert die Service Broker-Nachrichtenübermittlung und den Service Broker-Bezeichner für die Datenbank. Service Broker-Optionen können nur bei Verwendung der FOR ATTACH-Klausel angegeben werden.

      • ENABLE_BROKER
        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 Wert für service_broker_guid in sys.databases und in der wiederhergestellten Datenbank und beendet alle Konversationsendpunkte mit einem Cleanup. 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.

    Berücksichtigen Sie Folgendes, wenn Sie eine replizierte Datenbank anfügen, die kopiert statt getrennt wurde:

    • 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.

    HinweisHinweis

    Für das Anfügen wird das vardecimal-Speicherformat verwendet, SQL Server-Datenbankmodul muss jedoch mindestens auf SQL Server 2005 Service Pack 2 aktualisiert werden. Sie können keine Datenbank mit "vardecimal"-Speicherformat an eine frühere Version von SQL Server anfügen. Weitere Informationen zum vardecimal-Speicherformat finden Sie unter Datenkomprimierung.

    Wird eine Datenbank zum ersten Mal an eine neue Instanz von SQL Server angefügt oder wiederhergestellt, ist noch keine Kopie des Datenbank-Hauptschlüssels (verschlüsselt vom Diensthauptschlüssel) 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 (Transact-SQL). 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. Der DMK muss nur einmal auf AES aktualisiert und neu generiert werden. Dies hat keine Auswirkungen auf zukünftige Neugenerierungen im Rahmen einer Schlüsselrotationsstrategie. Weitere Informationen zum Aktualisieren einer Datenbank durch Anfügen finden Sie unter Aktualisieren einer Datenbank durch Trennen und Anfügen (Transact-SQL).

    Sicherheitshinweis   Das Anfügen von Datenbanken aus unbekannten oder nicht vertrauenswürdigen Quellen wird nicht empfohlen. Solche Datenbanken können bösartigen 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. Untersuchen Sie außerdem den Code in der Datenbank, z. B. gespeicherte Prozeduren oder anderen benutzerdefinierten Code.

    HinweisHinweis

    Beim Anfügen einer Datenbank haben die Optionen TRUSTWORTHY und DB_CHAINING keine Auswirkung.

  • FOR 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. Ein <filespec>-Eintrag muss 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 (SQL Server Management Studio).

    HinweisHinweis

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

    Für FOR ATTACH_REBUILD_LOG ist Folgendes erforderlich:

    • Ein fehlerfreies Herunterfahren der Datenbank.

    • Alle Datendateien (MDF und NDF) müssen verfügbar sein.

    Wichtiger HinweisWichtig

    Mit diesem Vorgang wird die Protokollsicherungskette unterbrochen. Wir empfehlen, nach Abschluss dieses Vorgangs eine vollständige Datenbanksicherung auszuführen. Weitere Informationen finden Sie unter BACKUP (Transact-SQL).

    In der Regel wird FOR ATTACH_REBUILD_LOG verwendet, wenn Sie eine Datenbank mit Lese-/Schreibzugriff mit einem großen Protokoll auf einen anderen Server kopieren, auf dem die Kopie hauptsächlich oder ausschließlich für Lesevorgänge verwendet wird und deshalb weniger Speicherplatz für das Protokoll benötigt wird, als bei der ursprünglichen Datenbank.

    FOR ATTACH_REBUILD_LOG kann nicht auf einer Datenbank-Momentaufnahme angegeben werden.

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

  • <filespec>
    Steuert die Dateieigenschaften.

  • NAME logical_file_name
    Gibt den logischen Namen für die Datei an. NAME ist erforderlich, wenn FILENAME angegeben wird, dies gilt jedoch nicht, wenn eine der FOR ATTACH-Klauseln angegeben wird. Einer FILESTREAM-Dateigruppe kann der Name PRIMARY nicht zugewiesen werden.

    • logical_file_name
      Der logische Name, der in SQL Server zum Verweisen auf die Datei verwendet wird. Logical_file_name muss innerhalb 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.
  • FILENAME { 'os_file_name' | 'filestream_path' }
    Gibt einen Betriebssystem-Dateinamen (physischer Dateiname) an.

    • ' os_file_name '
      Der Pfad und der Dateiname, die vom Betriebssystem beim Erstellen der Datei verwendet werden. Die Datei muss sich auf einem der folgenden Geräte befinden: auf dem lokalen Server, auf dem SQL Server installiert ist, in einem Storage Area Network, SAN] oder in einem iSCSI-basierten Netzwerk. Der angegebene Pfad muss bereits vorhanden sein, bevor die CREATE DATABASE-Anweisung ausgeführt wird. Weitere Informationen finden Sie im Abschnitt mit Hinweisen unter "Datenbankdateien und Dateigruppen".

      Die Parameter SIZE, MAXSIZE und FILEGROWTH können festgelegt werden, wenn ein UNC-Pfad für die Datei angegeben wird.

      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.

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

    • ' filestream_path '
      Für eine FILESTREAM-Dateigruppe verweist FILENAME auf einen Pfad, wo 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\MyFilestreamData angeben, muss C:\MyFiles vor der Ausführung von ALTER DATABASE vorhanden sein, der Ordner MyFilestreamData muss jedoch noch nicht existieren.

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

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

  • SIZE size
    Gibt die Größe der Datei an.

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

    • size
      Die Anfangsgröße der Datei.

      Wenn size für die primäre Datei nicht angegeben wird, verwendet Datenbankmodul die Größe der primären Datei in der model-Datenbank. Wenn eine sekundäre oder Protokolldatei angegeben wird, size jedoch nicht für die Datei angegeben wird, legt Datenbankmodul die Größe der Datei auf 1 MB fest. 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. Der Standardwert ist MB. Geben Sie eine ganze Zahl (also ohne Dezimalstellen) an. Size ist ein ganzzahliger Wert. Verwenden Sie für Werte größer als 2.147.483.647 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 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. Der Standardwert ist MB. Geben Sie eine ganze Zahl (also ohne Dezimalstellen) an. Wenn max_size nicht angegeben ist, kann die Dateigröße so lange zunehmen, bis der Speicherplatz auf dem Datenträger erschöpft ist. Max_size ist ein ganzzahliger Wert. Verwenden Sie für Werte größer als 2.147.483.647 größere Einheiten.
  • UNLIMITED
    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.

    HinweisHinweis

    Wenn diese Option für einen FILESTREAM-Container angegeben wird, gilt keine Maximalgröße. 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 darf die MAXSIZE-Einstellung nicht überschreiten. FILEGROWTH kann nicht angegeben werden, wenn os_file_name als UNC-Pfad angegeben wird. FILEGROWTH gilt nicht für eine FILESTREAM-Dateigruppe.

    • growth_increment
      Die Menge an Speicherplatz, die der Datei hinzugefügt wird, wenn neuer Speicherplatz erforderlich wird.

      Der Wert kann in MB, KB, GB, TB oder Prozent (%) angegeben werden. Bei Zahlen ohne Angabe von MB, KB oder % wird standardmäßig MB verwendet. Wenn der Wert in Prozent angegeben wird, ist die growth_increment-Größe der angegebene Prozentsatz der Dateigröße zum Zeitpunkt der Vergrößerung. Die angegebene Größe wird auf den nächsten durch 64 KB teilbaren Wert gerundet.

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

      Ist FILEGROWTH nicht angegeben, ist der Standardwert gleich 1 MB für Datendateien und 10 Prozent für Protokolldateien, der Minimalwert beträgt 64 KB.

      HinweisHinweis

      In SQL Server wurde der Standardwert für das Vergrößerungsinkrement von 10 Prozent in 1 MB geändert. Der Standardwert für die Protokolldatei bleibt mit 10 Prozent unverändert.

  • <Dateigruppe>
    Steuert die Dateigruppeneigenschaften. Kann nicht in einer Datenbankmomentaufnahme angegeben werden.

  • FILEGROUP filegroup_name
    Der logische Name der Dateigruppe.

    • filegroup_name
      filegroup_name muss innerhalb der Datenbank eindeutig sein und darf nicht den vom System bereitgestellten Namen PRIMARY bzw. PRIMARY_LOG besitzen. Der Name kann eine Zeichen- oder Unicode-Konstante oder ein regulärer oder Begrenzungsbezeichner sein. Der Name muss den Regeln für Bezeichner entsprechen.

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

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

  • database_snapshot_name
    Der Name der neuen Datenbank-Momentaufnahme. Die Namen von Datenbankmomentaufnahmen müssen innerhalb einer Instanz von SQL Server eindeutig sein und den Regeln für Bezeichner entsprechen. database_snapshot_name kann maximal 128 Zeichen umfassen.

  • ON ( NAME =logical_file_name, FILENAME ='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 eine CREATE DATABASE ON-Klausel eingeschlossen wird, schlägt die Anweisung fehl, und ein Fehler wird ausgelöst.

    Beschreibungen von NAME und FILENAME sowie deren Werte finden Sie in den Beschreibungen der entsprechenden Werte für <filespec>.

    HinweisHinweis

    Wenn Sie eine Datenbankmomentaufnahme erstellen, sind die anderen Optionen für <filespec> sowie das PRIMARY-Schlüsselwort nicht zulässig.

  • AS SNAPSHOT OF source_database_name
    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.

    Weitere Informationen finden Sie im Abschnitt mit Hinweisen unter "Datenbankmomentaufnahmen".

Hinweise

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

Die CREATE DATABASE-Anweisung muss im Autocommitmodus (dem Standardmodus für die Transaktionsverwaltung) 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 implimiert die CREATE DATABASE-Anweisung, indem die folgenden Schritte ausgeführt werden:

  1. SQL Server verwendet eine Kopie der model-Datenbank, um die Datenbank und ihre Metadaten zu initialisieren.

  2. Der Datenbank wird eine Service Broker-GUID zugewiesen.

  3. Dann füllt das Datenbankmodul 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 Server angegeben 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 sp_changedbowner geändert werden.

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 Datenbank-Momentaufnahme) 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. Eine Quelldatenbank kann mehrere Momentaufnahemn aufweisen.

HinweisHinweis

Wenn Sie eine Datenbankmomentaufnahme erstellen, kann die CREATE DATABASE-Anweisung nicht auf Protokolldateien, Offlinedateien, Wiederherstellungsdateien und außer Kraft gesetzte 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 (Transact-SQL).

Jede Momentaufnahme wird so lange persistent gespeichert, bis sie mit DROP DATABASE gelöscht wird.

Weitere Informationen finden Sie unter Datenbank-Momentaufnahmen (SQL Server).

Datenbankoptionen

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

Die model-Datenbank und das Erstellen neuer Datenbanken

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

Wenn eine database_name-CREATE DATABASE-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 model-Datenbank, es sei denn, FOR ATTACH ist angegeben. Die Datenbankoption auto shrink beispielsweise ist in der model-Datenbank und in allen neuen, von Ihnen erstellten Datenbanken auf true festgelegt. Wenn Sie die Optionen in der model-Datenbank ändern, werden diese neuen Einstellungen in jeder neu erstellten Datenbank verwendet. Änderungen in der model-Datenbank haben jedoch keine Auswirkungen auf vorhandene Datenbanken. Wenn FOR ATTACH in der CREATE DATABASE-Anweisung angegeben ist, erbt die neue Datenbank die Einstellungen der Datenbankoptionen 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 Systemsichten (Transact-SQL).

Berechtigungen

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

Zur Steuerung der Datenträgernutzung einer Instanz von SQL Server wird die Berechtigung zum Erstellen von Datenbanken in der Regel auf einige wenige Anmeldekonten beschränkt.

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:

Erstellt

Ändern, um eine neue Datei hinzuzufügen

Anfügen

Sichern

Trennen

Wiederherstellen

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

HinweisHinweis

Microsoft SQL Server 2005 Express Edition legt keine Berechtigungen für Daten und Protokolldateien fest.

Beispiele

A.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 primären model-Datenbankdatei. Das Transaktionsprotokoll wird auf den größeren Wert festgelegt: 512 KB oder 25 % der Größe der primären Datendatei. Da MAXSIZE nicht angegeben ist, können die Dateien so lange vergrößert werden, bis der gesamte verfügbare Speicherplatz auf dem Datenträger gefüllt ist. 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
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 PRIMARY-Schlüsselwort nicht verwendet wird, wird die erste Datei (Sales_dat) zur primären Datei. Da im SIZE-Parameter für die Datei Sales_dat weder MB noch KB angegeben ist, wird die Einheit MB verwendet und in Megabyte zugeordnet. Die Datei 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\MSSQL11.MSSQLSERVER\MSSQL\DATA\saledat.mdf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5 )
LOG ON
( NAME = Sales_log,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\salelog.ldf',
    SIZE = 5MB,
    MAXSIZE = 25MB,
    FILEGROWTH = 5MB ) ;
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 FILENAME-Option 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 = 100MB,
    MAXSIZE = 200,
    FILEGROWTH = 20),
    ( NAME = Arch2,
    FILENAME = 'D:\SalesData\archdat2.ndf',
    SIZE = 100MB,
    MAXSIZE = 200,
    FILEGROWTH = 20),
    ( NAME = Arch3,
    FILENAME = 'D:\SalesData\archdat3.ndf',
    SIZE = 100MB,
    MAXSIZE = 200,
    FILEGROWTH = 20)
LOG ON 
   (NAME = Archlog1,
    FILENAME = 'D:\SalesData\archlog1.ldf',
    SIZE = 100MB,
    MAXSIZE = 200,
    FILEGROWTH = 20),
   (NAME = Archlog2,
    FILENAME = 'D:\SalesData\archlog2.ldf',
    SIZE = 100MB,
    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 mit 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 = 5MB,
    MAXSIZE = 25MB,
    FILEGROWTH = 5MB ) ;
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 jedoch der Speicherort der Dateien seit ihrem Erstellen nicht geändert hat, muss nur die primäre Datei in der FOR ATTACH-Klausel angegeben werden. Ab Version SQL Server 2005 werden alle Volltextdateien, die zur angefügten Datenbank gehören, mit der Datenbank angefügt.

USE master;
GO
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 mit dem Namen 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, 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 AdventureWorks2012 angehängt. 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 AdventureWorks2012 database
sp_detach_db AdventureWorks2012;
GO
-- Physically move the full text catalog to the new location.
--Attach the AdventureWorks2012 database and specify the new location of the full-text catalog.
CREATE DATABASE AdventureWorks2012 ON 
    (FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\AdventureWorks2012_data.mdf'), 
    (FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\AdventureWorks2012_log.ldf'),
    (FILENAME = 'c:\myFTCatalogs\AdvWksFtCat')
FOR ATTACH;
GO

I.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. Er ist als FILESTREAM-Standarddateigruppe gekennzeichnet.

  • 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 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 = 10MB
    ,MAXSIZE = 50MB
    ,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 will be 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 = 5MB
    ,MAXSIZE = 25MB
    ,FILEGROWTH = 5MB
    )'
);
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 = 100MB,
    MAXSIZE = UNLIMITED,
    FILEGROWTH = 1MB
), 
FILEGROUP [FS] CONTAINS FILESTREAM DEFAULT 
(
    NAME = N'FS1',
    FILENAME = N'C:\BlobStore\FS1',
    MAXSIZE = UNLIMITED
), 
(
    NAME = N'FS2',
    FILENAME = N'C:\BlobStore\FS2',
    MAXSIZE = 100MB
)
LOG ON 
(
    NAME = N'BlobStore1_log',
    FILENAME = N'C:\BlobStore\BlobStore1_log.ldf',
    SIZE = 100MB,
    MAXSIZE = 1GB,
    FILEGROWTH = 1MB
)
GO

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

Siehe auch

Verweis

ALTER DATABASE (Transact-SQL)

DROP DATABASE (Transact-SQL)

EVENTDATA (Transact-SQL)

sp_changedbowner (Transact-SQL)

sp_detach_db (Transact-SQL)

sp_removedbreplication (Transact-SQL)

Konzepte

Anfügen und Trennen von Datenbanken (SQL Server)

Datenbank-Momentaufnahmen (SQL Server)

Datenbanken

Binary Large Object (BLOB)-Daten (SQL Server)

Andere Ressourcen

Verschieben von Datenbankdateien