Delen via


DATABASE MAKEN

Hiermee maakt u een nieuwe database.

Selecteer een van de volgende tabbladen voor de syntaxis, argumenten, opmerkingen, machtigingen en voorbeelden voor een bepaalde SQL-versie waarmee u werkt.

Een product selecteren

Selecteer in de volgende rij de productnaam waarin u geïnteresseerd bent en alleen de informatie van dat product wordt weergegeven.

* SQL Server *  

 

SQL Server

Overzicht

In SQL Server maakt deze instructie een nieuwe database en de bestanden die worden gebruikt en de bijbehorende bestandsgroepen. Het kan ook worden gebruikt om een momentopname van een database te maken of databasebestanden bij te voegen om een database te maken op basis van de losgekoppelde bestanden van een andere database.

Syntaxis

Maak een database.

Zie Transact-SQL syntaxisconventiesvoor meer informatie over de syntaxisconventies.

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

Een database koppelen

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
}

Een momentopname van een database maken

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

Argumenten

database_name

Dit is de naam van de nieuwe database. Databasenamen moeten uniek zijn binnen een exemplaar van SQL Server en moeten voldoen aan de regels voor id's.

database_name mag maximaal 128 tekens lang zijn, tenzij er geen logische naam is opgegeven voor het logboekbestand. Als er geen logische logboekbestandsnaam is opgegeven, genereert SQL Server de logical_file_name en de os_file_name voor het logboek door een achtervoegsel toe te voegen aan database_name. Dit beperkt database_name tot 123 tekens, zodat de gegenereerde logische bestandsnaam niet langer is dan 128 tekens.

Als de bestandsnaam niet is opgegeven, gebruikt SQL Server database_name als zowel de logical_file_name als als de os_file_name. Het standaardpad wordt verkregen uit het register. Het standaardpad kan worden gewijzigd in de Servereigenschappen (pagina Database-instellingen) in Management Studio. Als u het standaardpad wijzigt, moet SQL Server opnieuw worden opgestart.

CONTAINMENT = { NONE | PARTIAL }

van toepassing op: SQL Server 2012 (11.x) en hoger

Hiermee geeft u de insluitingsstatus van de database op. NONE = niet-ingesloten database. PARTIAL = gedeeltelijk ingesloten database.

OP

Hiermee geeft u op dat de schijfbestanden die worden gebruikt voor het opslaan van de gegevenssecties van de database, gegevensbestanden, expliciet zijn gedefinieerd. AAN is vereist wanneer deze wordt gevolgd door een door komma's gescheiden lijst met <bestandsspec> items die de gegevensbestanden voor de primaire bestandsgroep definiëren. De lijst met bestanden in de primaire bestandsgroep kan worden gevolgd door een optionele, door komma's gescheiden lijst met <bestandsgroep> items die gebruikersbestandsgroepen en hun bestanden definiëren.

PRIMAIR

Hiermee geeft u op dat de bijbehorende <filespec> lijst definieert het primaire bestand. Het eerste bestand dat is opgegeven in de <filespec> vermelding in de primaire bestandsgroep wordt het primaire bestand. Een database kan slechts één primair bestand hebben. Zie databasebestanden en bestandsgroepenvoor meer informatie.

Als PRIMARY niet is opgegeven, wordt het eerste bestand dat wordt vermeld in de instructie CREATE DATABASE het primaire bestand.

AANMELDEN

Hiermee geeft u op dat de schijfbestanden die worden gebruikt voor het opslaan van het databaselogboek, logboekbestanden, expliciet zijn gedefinieerd. LOG ON wordt gevolgd door een door komma's gescheiden lijst met <filespec> items die de logboekbestanden definiëren. Als LOG ON niet is opgegeven, wordt er automatisch één logboekbestand gemaakt, dat een grootte heeft van 25 procent van de som van de grootten van alle gegevensbestanden voor de database, of 512 kB, afhankelijk van wat groter is. Dit bestand wordt op de standaardlocatie van het logboekbestand geplaatst. Zie De standaardlocaties voor gegevens en logboekbestanden in SSMS weergeven of wijzigenvoor informatie over deze locatie.

AANMELDEN kan niet worden opgegeven op een momentopname van een database.

COLLATION_NAME

Hiermee geeft u de standaardsortering voor de database. De sorteringsnaam kan een Windows-sorteringsnaam of een SQL-sorteringsnaam zijn. Als dit niet is opgegeven, wordt aan de database de standaardsortering van het exemplaar van SQL Server toegewezen. Een sorteringsnaam kan niet worden opgegeven voor een momentopname van een database.

Een sorteringsnaam kan niet worden opgegeven met de COMPONENT FOR ATTACH of FOR ATTACH_REBUILD_LOG. Ga naar deze Microsoft-websitevoor informatie over het wijzigen van de sortering van een gekoppelde database.

Zie COLLATEvoor meer informatie over de namen van Windows- en SQL-sorteringen.

Notitie

Ingesloten databases worden anders gesorteerd dan niet-ingesloten databases. Zie Ingesloten databasesorteringenvoor meer informatie.

MET <optie>

<filestream_option>

NON_TRANSACTED_ACCESS = { UIT | READ_ONLY | VOLLEDIG }

Van toepassing op: SQL Server 2012 (11.x) en hoger.

Hiermee geeft u het niveau van niet-transactionele FILESTREAM-toegang tot de database.

Waarde Beschrijving
OFF Niet-transactionele toegang is uitgeschakeld.
READONLY FILESTREAM-gegevens in deze database kunnen worden gelezen door niet-transactionele processen.
FULL Volledige niet-transactionele toegang tot FILESTREAM FileTables is ingeschakeld.

DIRECTORY_NAME = <directory_name>

van toepassing op: SQL Server 2012 (11.x) en hoger

Een windows-compatibele mapnaam. Deze naam moet uniek zijn onder alle Database_Directory namen in het SQL Server-exemplaar. De vergelijking van uniekheid is niet hoofdlettergevoelig, ongeacht de sorteringsinstellingen van SQL Server. Deze optie moet worden ingesteld voordat u een FileTable in deze database maakt.



De volgende opties zijn alleen toegestaan wanneer CONTAINMENT is ingesteld op PARTIAL. Als CONTAINMENT is ingesteld op NONE, treden er fouten op.

DEFAULT_FULLTEXT_LANGUAGE = <lcid-> | <taalnaam> | <taalalias>

van toepassing op: SQL Server 2012 (11.x) en hoger

Zie De standaardconfiguratieoptie voor de volledige tekst van de server configureren voor een volledige beschrijving van deze optie.

DEFAULT_LANGUAGE = <lcid-> | <taalnaam> | <taalalias>

van toepassing op: SQL Server 2012 (11.x) en hoger

Zie De standaardtaalserverconfiguratieoptie configureren voor een volledige beschrijving van deze optie.

NESTED_TRIGGERS = { UIT | ON }

van toepassing op: SQL Server 2012 (11.x) en hoger

Zie De configuratieoptie serverconfiguratie van geneste triggers configureren voor een volledige beschrijving van deze optie.

TRANSFORM_NOISE_WORDS = { UIT | ON }

van toepassing op: SQL Server 2012 (11.x) en hoger

Zie ruiswoorden serverconfiguratieoptie transformeren voor een volledige beschrijving van deze optie.

TWO_DIGIT_YEAR_CUTOFF = { 2049 | <elk jaar tussen 1753 en 9999> }

Vier cijfers die een jaar vertegenwoordigen. 2049 is de standaardwaarde. Zie De optie serverconfiguratie voor twee cijfers configureren voor een volledige beschrijving van deze optie.

DB_CHAINING { UIT | ON }

Wanneer AAN is opgegeven, kan de database de bron of het doel zijn van een eigendomsketen voor meerdere databases.

Wanneer uit, kan de database niet deelnemen aan het koppelen van eigendom van meerdere databases. De standaardwaarde is UITGESCHAKELD.

Belangrijk

Het exemplaar van SQL Server herkent deze instelling wanneer de optie voor het koppelen van meerdere databases 0 (UIT) is. Wanneer eigendomsketens voor meerdere databases 1 (ON) zijn, kunnen alle gebruikersdatabases deelnemen aan eigendomsketens voor meerdere databases, ongeacht de waarde van deze optie. Deze optie wordt ingesteld met behulp van sp_configure.

Als u deze optie wilt instellen, moet u lid zijn van de vaste serverfunctie sysadmin. De optie DB_CHAINING kan niet worden ingesteld op deze systeemdatabases: master, model, tempdb.

BETROUWBAAR { UIT | ON }

Wanneer ON is opgegeven, hebben databasemodules (bijvoorbeeld weergaven, door de gebruiker gedefinieerde functies of opgeslagen procedures) die gebruikmaken van een imitatiecontext toegang tot resources buiten de database.

Wanneer uit, hebben databasemodules in een imitatiecontext geen toegang tot resources buiten de database. De standaardwaarde is UITGESCHAKELD.

TRUSTWORTHY is ingesteld op UIT wanneer de database is gekoppeld.

Standaard zijn alle systeemdatabases, met uitzondering van de msdb database, BETROUWBAAR ingesteld op UIT. De waarde kan niet worden gewijzigd voor de model- en tempdb-databases. U wordt aangeraden de optie BETROUWBAAR nooit in te stellen op AAN voor de master-database.

PERSISTENT_LOG_BUFFER=AAN ( DIRECTORY_NAME='' )

van toepassing op: SQL Server 2017 (14.x) en hoger.

Wanneer deze optie is opgegeven, wordt de transactielogboekbuffer gemaakt op een volume dat zich op een schijfapparaat bevindt dat wordt ondersteund door Storage Class Memory (NVDIMM-N niet-compatibele opslag), ook wel een permanente logboekbuffer genoemd. Zie Latentieversnelling voor transactiedoorvoer met opslagklassegeheugen en permanente logboekbuffer toevoegen aan een databasevoor meer informatie.

GROOTBOEK = {ON | UIT }

Wanneer deze optie is ingesteld op ON, wordt er een grootboekdatabase gemaakt waarin de integriteit van alle gebruikersgegevens wordt beveiligd. Alleen grootboektabellen kunnen worden gemaakt in een grootboekdatabase. De standaardwaarde is OFF. De waarde van de optie LEDGER kan niet worden gewijzigd nadat de database is gemaakt. Zie Een grootboekdatabase configurerenvoor meer informatie.

DATABASE MAKEN ... FOR ATTACH [ WITH < attach_database_option > ]

Hiermee geeft u op dat de database wordt gemaakt door een bestaande set besturingssysteembestanden te koppelen. Er moet een <filespec> vermelding zijn waarmee het primaire bestand wordt opgegeven. De enige andere <filespec> vereiste vermeldingen zijn die voor alle bestanden die een ander pad hebben dan het moment waarop de database voor het eerst is gemaakt of voor het laatst is bijgevoegd. Er moet een <filespec> vermelding worden opgegeven voor deze bestanden.

VOOR ATTACH is het volgende vereist:

  • Alle gegevensbestanden (MDF en NDF) moeten beschikbaar zijn.
  • Als er meerdere logboekbestanden bestaan, moeten ze allemaal beschikbaar zijn.

Als een lees-/schrijfdatabase één logboekbestand heeft dat momenteel niet beschikbaar is en als de database is afgesloten zonder gebruikers of transacties voordat de ATTACH bewerking werd geopend, FOR ATTACH het logboekbestand automatisch opnieuw opbouwen en het primaire bestand bijwerken. In tegenstelling tot een alleen-lezen database kan het logboek niet opnieuw worden opgebouwd omdat het primaire bestand niet kan worden bijgewerkt. Als u daarom een alleen-lezen database bijvoegt met een logboek dat niet beschikbaar is, moet u de logboekbestanden of de bestanden in de FOR ATTACH-component opgeven.

Notitie

Een database die is gemaakt met een recentere versie van SQL Server, kan niet worden gekoppeld in eerdere versies.

In SQL Server worden alle bestanden in volledige tekst die deel uitmaken van de database die wordt bijgevoegd, gekoppeld aan de database. Als u een nieuw pad van de catalogus met volledige tekst wilt opgeven, geeft u de nieuwe locatie op zonder de bestandsnaam van het besturingssysteem in volledige tekst. Zie de sectie Voorbeelden voor meer informatie.

Als u een database met een FILESTREAM-optie 'Mapnaam' bijvoegt in een SQL Server-exemplaar, wordt SQL Server gevraagd om te controleren of de Database_Directory naam uniek is. Als dat niet het is, mislukt de ATTACH-bewerking met de fout, FILESTREAM Database_Directory name is not unique in this SQL Server instance. Om deze fout te voorkomen, moet de optionele parameter, directory_name, worden doorgegeven aan deze bewerking.

VOOR ATTACH kan niet worden opgegeven op een momentopname van de database.

VOOR ATTACH kan de optie RESTRICTED_USER opgeven. RESTRICTED_USER staat alleen leden van de db_owner vaste databaserol en dbcreator- en sysadmin vaste serverrollen toe om verbinding te maken met de database, maar beperkt hun aantal niet. Pogingen van niet-gekwalificeerde gebruikers worden geweigerd.

<service_broker_option>

Als de database Service Broker gebruikt, gebruikt u de WITH-<service_broker_option> in uw FOR ATTACH-component:

Hiermee bepaalt u de bezorging van Service Broker-berichten en de Service Broker-id voor de database. Service Broker-opties kunnen alleen worden opgegeven wanneer de FOR ATTACH-component wordt gebruikt.

ENABLE_BROKER

Hiermee geeft u op dat Service Broker is ingeschakeld voor de opgegeven database. Dat wil gezegd dat de bezorging van berichten wordt gestart en is_broker_enabled is ingesteld op waar in de sys.databases catalogusweergave. De database behoudt de bestaande Service Broker-id.

NEW_BROKER

Hiermee maakt u een nieuwe service_broker_guid-waarde in zowel sys.databases als de herstelde database. Hiermee beëindigt u alle gesprekseindpunten met opschoning. De broker is ingeschakeld, maar er wordt geen bericht verzonden naar de externe gesprekseindpunten. Elke route die verwijst naar de oude Service Broker-id, moet opnieuw worden gemaakt met de nieuwe id.

ERROR_BROKER_CONVERSATIONS

Hiermee worden alle gesprekken beëindigd met een fout die aangeeft dat de database is gekoppeld of hersteld. De broker is uitgeschakeld totdat deze bewerking is voltooid en vervolgens is ingeschakeld. De database behoudt de bestaande Service Broker-id.

Wanneer u een gerepliceerde database koppelt die is gekopieerd in plaats van los te koppelen, kunt u het volgende overwegen:

  • Als u de database koppelt aan hetzelfde serverexemplaren en dezelfde versie als de oorspronkelijke database, zijn er geen extra stappen vereist.
  • Als u de database koppelt aan hetzelfde serverexemplaren, maar met een bijgewerkte versie, moet u sp_vupgrade_replication uitvoeren om de replicatie bij te werken nadat de bijlagebewerking is voltooid.
  • Als u de database koppelt aan een ander serverexemplaren, ongeacht de versie, moet u sp_removedbreplication uitvoeren om replicatie te verwijderen nadat de bijlagebewerking is voltooid.

Notitie

Koppelen werkt met de vardecimale opslagindeling, maar de SQL Server Database Engine moet worden bijgewerkt naar ten minste SQL Server 2005 (9.x) SP2. U kunt een database niet koppelen met een vardecimale opslagindeling aan een eerdere versie van SQL Server. Zie voor meer informatie over de vardecimale opslagindeling Gegevenscompressie.

Wanneer een database voor het eerst aan een nieuw exemplaar van SQL Server is gekoppeld of hersteld, wordt er nog geen kopie van de hoofdsleutel van de database (versleuteld door de servicehoofdsleutel) opgeslagen op de server. U moet de OPEN MASTER KEY-instructie gebruiken om de databasehoofdsleutel (DMK) te ontsleutelen. Zodra de DMK is ontsleuteld, kunt u in de toekomst automatische ontsleuteling inschakelen met behulp van de ALTER MASTER KEY REGENERATE-instructie om de server in te richten met een kopie van de DMK, versleuteld met de servicehoofdsleutel (SMK). Wanneer een database is bijgewerkt vanaf een eerdere versie, moet de DMK opnieuw worden gegenereerd om het nieuwere AES-algoritme te gebruiken. Zie ALTER MASTER KEYvoor meer informatie over het opnieuw genereren van de DMK. De tijd die nodig is om de DMK-sleutel opnieuw te genereren om een upgrade naar AES uit te voeren, is afhankelijk van het aantal objecten dat wordt beveiligd door de DMK. Het opnieuw genereren van de DMK-sleutel om een upgrade naar AES uit te voeren, is slechts eenmaal nodig en heeft geen effect op toekomstige regeneraties als onderdeel van een strategie voor sleutelrotatie. Zie Een database upgraden met behulp van koppelen en koppelenvoor informatie over het bijwerken van een database.

Belangrijk

U wordt aangeraden geen databases van onbekende of niet-vertrouwde bronnen te koppelen. Dergelijke databases kunnen schadelijke code bevatten die onbedoelde Transact-SQL code kan uitvoeren of fouten kan veroorzaken door het schema of de structuur van de fysieke database te wijzigen. Voordat u een database uit een onbekende of niet-vertrouwde bron gebruikt, voert u DBCC CHECKDB- uit op de database op een niet-productieserver en onderzoekt u ook de code, zoals opgeslagen procedures of andere door de gebruiker gedefinieerde code, in de database.

Notitie

De opties TRUSTWORTHY en DB_CHAINING hebben geen effect bij het koppelen van een database.

VOOR ATTACH_REBUILD_LOG

Hiermee geeft u op dat de database wordt gemaakt door een bestaande set besturingssysteembestanden toe te voegen. Deze optie is beperkt tot lees-/schrijfdatabases. Er moet een <filespec> vermelding zijn die het primaire bestand opgeeft. Als een of meer transactielogboekbestanden ontbreken, wordt het logboekbestand opnieuw opgebouwd. De ATTACH_REBUILD_LOG maakt automatisch een nieuw logboekbestand van 1 MB. Dit bestand wordt op de standaardlocatie van het logboekbestand geplaatst. Zie De standaardlocaties voor gegevens en logboekbestanden in SSMS weergeven of wijzigenvoor informatie over deze locatie.

Notitie

Als de logboekbestanden beschikbaar zijn, gebruikt de database-engine deze bestanden in plaats van de logboekbestanden opnieuw te bouwen.

VOOR ATTACH_REBUILD_LOG zijn de volgende voorwaarden vereist:

  • Een schone afsluiting van de database.
  • Alle gegevensbestanden (MDF en NDF) moeten beschikbaar zijn.

Belangrijk

Met deze bewerking wordt de back-upketen van het logboek verbroken. U wordt aangeraden een volledige databaseback-up uit te voeren nadat de bewerking is voltooid. Zie BACKUP-voor meer informatie.

Normaal gesproken wordt FOR ATTACH_REBUILD_LOG gebruikt wanneer u een lees-/schrijfdatabase kopieert met een groot logboek naar een andere server waar de kopie voornamelijk of alleen wordt gebruikt voor leesbewerkingen en daarom minder logboekruimte nodig heeft dan de oorspronkelijke database.

VOOR ATTACH_REBUILD_LOG kan niet worden opgegeven op een momentopname van de database.

Zie Database loskoppelen en koppelenvoor meer informatie over het koppelen en loskoppelen van databases.

<filespec>

Hiermee bepaalt u de bestandseigenschappen.

NAAM logical_file_name

Hiermee geeft u de logische naam voor het bestand. NAME is vereist wanneer BESTANDSNAAM is opgegeven, behalve wanneer u een van de FOR ATTACH-componenten opgeeft. Een FILESTREAM-bestandsgroep kan de naam PRIMARY niet hebben.

logical_file_name

Is de logische naam die in SQL Server wordt gebruikt bij het verwijzen naar het bestand. Logical_file_name moet uniek zijn in de database en voldoen aan de regels voor id's. De naam kan een teken of Unicode-constante zijn, of een gewone of gescheiden id.

BESTANDSNAAM { 'os_file_name' | 'filestream_path' }

Hiermee geeft u de naam van het besturingssysteem (fysiek) bestand.

'os_file_name'

Is het pad en de bestandsnaam die door het besturingssysteem worden gebruikt wanneer u het bestand maakt. Het bestand moet zich op een van de volgende apparaten bevinden: de lokale server waarop SQL Server is geïnstalleerd, een Storage Area Network [SAN] of een iSCSI-netwerk. Het opgegeven pad moet bestaan voordat de instructie CREATE DATABASE wordt uitgevoerd. Zie Databasebestanden en Bestandsgroepen verderop in dit artikel voor meer informatie.

DE PARAMETERS SIZE, MAXSIZE en FILEGROWTH kunnen worden ingesteld wanneer een UNC-pad voor het bestand is opgegeven.

Als het bestand zich op een onbewerkte partitie bevindt, moet os_file_name alleen de stationsletter van een bestaande onbewerkte partitie opgeven. Er kan slechts één gegevensbestand worden gemaakt op elke onbewerkte partitie.

Notitie

Onbewerkte partities worden niet ondersteund in SQL Server 2014 en latere versies.

Gegevensbestanden mogen niet op gecomprimeerde bestandssystemen worden geplaatst, tenzij de bestanden alleen-lezen secundaire bestanden zijn of de database alleen-lezen is. Logboekbestanden mogen nooit op gecomprimeerde bestandssystemen worden geplaatst.

'filestream_path'

Voor een FILESTREAM-bestandsgroep verwijst BESTANDSNAAM naar een pad waarin FILESTREAM-gegevens worden opgeslagen. Het pad naar de laatste map moet bestaan en de laatste map mag niet bestaan. Als u bijvoorbeeld het pad C:\MyFiles\MyFilestreamDataopgeeft, moet C:\MyFiles bestaan voordat u ALTER DATABASE uitvoert, maar de map MyFilestreamData mag niet bestaan.

De bestandsgroep en het bestand (<filespec>) moeten in dezelfde instructie worden gemaakt.

De eigenschappen SIZE en FILEGROWTH zijn niet van toepassing op een FILESTREAM-bestandsgroep.

GROOTTE grootte

Hiermee geeft u de grootte van het bestand.

GROOTTE kan niet worden opgegeven wanneer de os_file_name is opgegeven als unc-pad. SIZE is niet van toepassing op een FILESTREAM-bestandsgroep.

grootte

Is de oorspronkelijke grootte van het bestand.

Wanneer grootte niet wordt opgegeven voor het primaire bestand, gebruikt de database-engine de grootte van het primaire bestand in de model-database. De standaardgrootte van de model-database is 8 MB (vanaf SQL Server 2016 (13.x)) of 1 MB (voor eerdere versies). Wanneer een secundair gegevensbestand of logboekbestand is opgegeven, maar grootte niet is opgegeven voor het bestand, maakt de database-engine het bestand 8 MB (beginnend met SQL Server 2016 (13.x)) of 1 MB (voor eerdere versies). De opgegeven grootte voor het primaire bestand moet minstens zo groot zijn als het primaire bestand van de model-database.

De kilobyte (KB), megabyte (MB), gigabyte (GB) of terabyte (TB) achtervoegsels kunnen worden gebruikt. De standaardwaarde is MB. Geef een geheel getal op. Neem geen decimaal op. Grootte een geheel getal is. Gebruik grotere eenheden voor waarden die groter zijn dan 2147483647.

MAXSIZE-max_size

Hiermee geeft u de maximale grootte waarop het bestand kan groeien. MAXSIZE kan niet worden opgegeven wanneer de os_file_name is opgegeven als unc-pad.

max_size

Is de maximale bestandsgrootte. De achtervoegsels KB, MB, GB en TB kunnen worden gebruikt. De standaardwaarde is MB. Geef een geheel getal op. Neem geen decimaal op. Als max_size niet is opgegeven, wordt het bestand uitgebreid totdat de schijf vol is. Max_size is een geheel getal. Gebruik grotere eenheden voor waarden die groter zijn dan 2147483647.

ONBEGRENSD

Hiermee geeft u op dat het bestand groeit totdat de schijf vol is. In SQL Server heeft een logboekbestand dat is opgegeven met onbeperkte groei een maximale grootte van 2 TB en een gegevensbestand een maximale grootte van 16 TB heeft.

Notitie

Er is geen maximale grootte wanneer deze optie is opgegeven voor een FILESTREAM-container. Het blijft groeien totdat de schijf vol is.

FILEGROWTH-growth_increment

Hiermee geeft u de automatische groei incrementeel van het bestand. De instelling FILEGROWTH voor een bestand mag de MAXSIZE-instelling niet overschrijden. FILEGROWTH kan niet worden opgegeven wanneer de os_file_name is opgegeven als unc-pad. FILEGROWTH is niet van toepassing op een FILESTREAM-bestandsgroep.

growth_increment

Is de hoeveelheid ruimte die aan het bestand wordt toegevoegd telkens wanneer er nieuwe ruimte nodig is.

De waarde kan worden opgegeven in MB, KB, GB, TB of percentage (%). Als een getal wordt opgegeven zonder een MB-, KB- of % achtervoegsel, is de standaardwaarde MB. Wanneer % is opgegeven, is de toenamegrootte van de groei het opgegeven percentage van de grootte van het bestand op het moment dat de verhoging plaatsvindt. De opgegeven grootte wordt afgerond op de dichtstbijzijnde 64 kB en de minimumwaarde is 64 kB.

Een waarde van 0 geeft aan dat automatische groei is uitgeschakeld en dat er geen extra ruimte is toegestaan.

Als FILEGROWTH niet is opgegeven, zijn de standaardwaarden:

Versie Standaardwaarden
Vanaf SQL Server 2016 (13.x) Gegevens 64 MB. Logboekbestanden van 64 MB.
Vanaf SQL Server 2005 (9.x) Gegevens 1 MB. Logboekbestanden 10%.
Vóór SQL Server 2005 (9.x) Data 10%. Logboekbestanden 10%.

<bestandsgroep>

Hiermee bepaalt u de eigenschappen van de bestandsgroep. Bestandsgroep kan niet worden opgegeven op een momentopname van de database.

FILEGROUP-filegroup_name

Is de logische naam van de bestandsgroep.

filegroup_name

filegroup_name moet uniek zijn in de database en mag niet de door het systeem geleverde namen PRIMARY en PRIMARY_LOG zijn. De naam kan een teken of Unicode-constante zijn, of een gewone of gescheiden id. De naam moet voldoen aan de regels voor id's.

BEVAT FILESTREAM

Hiermee geeft u op dat de bestandsgroep FILESTREAM binaire grote objecten (BLOBs) opslaat in het bestandssysteem.

VERSTEK

Hiermee geeft u de benoemde bestandsgroep is de standaardbestandsgroep in de database.

BEVAT MEMORY_OPTIMIZED_DATA

van toepassing op: SQL Server 2014 (12.x) en hoger

Hiermee geeft u op dat de bestandsgroep memory_optimized gegevens opslaat in het bestandssysteem. Zie In-Memory Optimalisatieoverzicht en Gebruiksscenario'svoor meer informatie. Er is slechts één MEMORY_OPTIMIZED_DATA bestandsgroep per database toegestaan. Zie Een Memory-Optimized-tabel en een systeemeigen gecompileerde opgeslagen procedure makenvoor codevoorbeelden waarmee een bestandsgroep wordt gemaakt voor het opslaan van gegevens die zijn geoptimaliseerd voor geheugen.

database_snapshot_name

Is de naam van de nieuwe momentopname van de database. Namen van databasemomentopnamen moeten uniek zijn binnen een exemplaar van SQL Server en moeten voldoen aan de regels voor id's. database_snapshot_name mag maximaal 128 tekens bevatten.

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

Voor het maken van een momentopname van een database geeft u een lijst met bestanden in de brondatabase op. De momentopname werkt alleen als alle gegevensbestanden afzonderlijk worden opgegeven. Logboekbestanden zijn echter niet toegestaan voor momentopnamen van databases. FILESTREAM-bestandsgroepen worden niet ondersteund door momentopnamen van databases. Als een FILESTREAM-gegevensbestand is opgenomen in een CREATE DATABASE ON-component, mislukt de instructie en wordt er een fout gegenereerd.

Zie de beschrijvingen van de equivalente <filespec> waarden voor beschrijvingen van NAAM en BESTANDSNAAM en de bijbehorende waarden.

Notitie

Wanneer u een momentopname van een database maakt, zijn de andere <filespec> opties en het trefwoord PRIMARY niet toegestaan.

ALS MOMENTOPNAME VAN source_database_name

Hiermee geeft u op dat de database die wordt gemaakt een momentopname is van de database die is opgegeven door source_database_name. De momentopname en de brondatabase moeten zich op hetzelfde exemplaar bevinden.

Vóór SQL Server 2019 kon de brondatabase voor een momentopname van een database geen MEMORY_OPTIMIZED_DATA bestandsgroep bevatten. Ondersteuning voor momentopnamen van databases in het geheugen is toegevoegd in SQL Server 2019.

Zie Database Snapshotsvoor meer informatie.

Opmerkingen

Er moet een back-up worden gemaakt van de hoofddatabase wanneer een gebruikersdatabase wordt gemaakt, gewijzigd of verwijderd.

De CREATE DATABASE-instructie moet worden uitgevoerd in de modus Voor automatisch samenvoegen (de standaardmodus voor transactiebeheer) en is niet toegestaan in een expliciete of impliciete transactie.

U kunt één CREATE DATABASE instructie gebruiken om een database en de bestanden te maken die de database opslaan. SQL Server implementeert de INSTRUCTIE CREATE DATABASE met behulp van de volgende stappen:

  1. De SQL Server maakt gebruik van een kopie van de modeldatabase om de database en de bijbehorende metagegevens te initialiseren.
  2. Er wordt een SERVICE Broker-GUID toegewezen aan de database.
  3. De database-engine vult vervolgens de rest van de database met lege pagina's, met uitzondering van pagina's met interne gegevens die bepalen hoe de ruimte in de database wordt gebruikt.

Er kunnen maximaal 32.767 databases worden opgegeven op een exemplaar van SQL Server.

Elke database heeft een eigenaar die speciale activiteiten in de database kan uitvoeren. De eigenaar is de gebruiker die de database maakt. De eigenaar van de database kan worden gewijzigd met behulp van ALTER AUTHORIZATION-.

Sommige databasefuncties zijn afhankelijk van functies of mogelijkheden die aanwezig zijn in het bestandssysteem voor volledige functionaliteit van een database. Enkele voorbeelden van functies die afhankelijk zijn van de functieset van het bestandssysteem zijn onder andere:

  • DBCC CHECKDB
  • FileStream
  • Online back-ups met behulp van VSS en bestandsmomentopnamen
  • Databasemomentopname maken
  • Voor geheugen geoptimaliseerde gegevensbestandsgroep

Databasebestanden en bestandsgroepen

Elke database heeft ten minste twee bestanden, een primair bestand en een transactielogboekbestanden ten minste één bestandsgroep. Voor elke database kunnen maximaal 32.767 bestanden en 32.767 bestandsgroepen worden opgegeven.

Wanneer u een database maakt, maakt u de gegevensbestanden zo groot mogelijk op basis van de maximale hoeveelheid gegevens die u in de database verwacht.

U wordt aangeraden een SAN (Storage Area Network), iSCSI-netwerk of lokaal gekoppelde schijf te gebruiken voor de opslag van uw SQL Server-databasebestanden, omdat deze configuratie de prestaties en betrouwbaarheid van SQL Server optimaliseert.

Momentopnamen van databases

U kunt de CREATE DATABASE-instructie gebruiken om een alleen-lezen, statische weergave, een momentopname van een database te maken van de brondatabase. Een momentopname van een database is transactioneel consistent met de brondatabase, omdat deze bestond op het moment dat de momentopname werd gemaakt. Een brondatabase kan meerdere momentopnamen hebben.

Notitie

Wanneer u een momentopname van een database maakt, kan de instructie CREATE DATABASE niet verwijzen naar logboekbestanden, offlinebestanden, het herstellen van bestanden en defunctbestanden.

Als het maken van een momentopname van een database mislukt, wordt de momentopname verdacht en moet deze worden verwijderd. Zie DROP DATABASEvoor meer informatie.

Elke momentopname blijft behouden totdat deze wordt verwijderd met behulp van DROP DATABASE.

Zie databasemomentopnamen en Een momentopname van een database maken (Transact-SQL)voor meer informatie.

Databaseopties

Verschillende databaseopties worden automatisch ingesteld wanneer u een database maakt. Zie ALTER DATABASE SET Optionsvoor een lijst met deze opties.

De modeldatabase en het maken van nieuwe databases

Alle door de gebruiker gedefinieerde objecten in de modeldatabase worden gekopieerd naar alle zojuist gemaakte databases. U kunt objecten, zoals tabellen, weergaven, opgeslagen procedures, gegevenstypen, enzovoort, toevoegen aan de model database die moet worden opgenomen in alle zojuist gemaakte databases.

Wanneer een CREATE DATABASE <database_name>-instructie wordt opgegeven zonder extra grootteparameters, wordt het primaire gegevensbestand dezelfde grootte als het primaire bestand in de model-database gemaakt.

Tenzij FOR ATTACH is opgegeven, neemt elke nieuwe database de instellingen van de databaseoptie over van de model-database. De databaseoptie automatisch verkleinen is bijvoorbeeld ingesteld op waar in model en in nieuwe databases die u maakt. Als u de opties in de model-database wijzigt, worden deze nieuwe optie-instellingen gebruikt in nieuwe databases die u maakt. Het wijzigen van bewerkingen in de model database heeft geen invloed op bestaande databases. Als FOR ATTACH is opgegeven in de instructie CREATE DATABASE, neemt de nieuwe database de instellingen van de databaseoptie van de oorspronkelijke database over.

Databasegegevens weergeven

U kunt catalogusweergaven, systeemfuncties en door het systeem opgeslagen procedures gebruiken om informatie te retourneren over databases, bestanden en bestandsgroepen. Zie Systeemweergavenvoor meer informatie.

Machtigingen

Hiervoor is CREATE DATABASE, CREATE ANY DATABASEof ALTER ANY DATABASE machtiging vereist.

Als u controle wilt houden over schijfgebruik op een exemplaar van SQL Server, is de machtiging voor het maken van databases doorgaans beperkt tot enkele aanmeldingen.

In het volgende voorbeeld ziet u de machtiging om een database te maken voor de databasegebruiker Fay.

USE master;
GO
GRANT CREATE DATABASE TO [Fay];
GO

Machtigingen voor gegevens- en logboekbestanden

In SQL Server worden bepaalde machtigingen ingesteld voor de gegevens en logboekbestanden van elke database. De volgende machtigingen worden ingesteld wanneer de volgende bewerkingen worden toegepast op een database:

  • Gehecht
  • Ondersteund
  • Geschapen
  • Afstandelijk
  • Gewijzigd om een nieuw bestand toe te voegen
  • Gerestaureerd

Met de machtigingen voorkomt u dat de bestanden per ongeluk worden gemanipuleerd als ze zich in een map bevinden met geopende machtigingen.

Notitie

Microsoft SQL Server 2005 Express Edition stelt geen machtigingen voor gegevens- en logboekbestanden in.

Voorbeelden

Een. Een database maken zonder bestanden op te geven

In het volgende voorbeeld wordt de database gemaakt mytest en wordt een bijbehorend primair en transactielogboekbestand gemaakt. Omdat de instructie geen <filespec> items bevat, is het primaire databasebestand de grootte van het primaire model databasebestand. Het transactielogboek is ingesteld op de grotere van deze waarden: 512 kB of 25% de grootte van het primaire gegevensbestand. Omdat MAXSIZE niet is opgegeven, kunnen de bestanden groeien om alle beschikbare schijfruimte te vullen. In dit voorbeeld ziet u ook hoe u de database met de naam mytest kunt verwijderen als deze bestaat, voordat u de mytest-database maakt.

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. Een database maken waarmee de gegevens- en transactielogboekbestanden worden opgegeven

In het volgende voorbeeld wordt de database Salesgemaakt. Omdat het trefwoord PRIMARY niet wordt gebruikt, wordt het eerste bestand (Sales_dat) het primaire bestand. Omdat noch MB noch KB is opgegeven in de parameter SIZE voor het Sales_dat-bestand, wordt MB gebruikt en toegewezen in megabytes. Het Sales_log-bestand wordt toegewezen in megabytes omdat het MB achtervoegsel expliciet wordt vermeld in de parameter SIZE.

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 = 5MB,
    MAXSIZE = 25MB,
    FILEGROWTH = 5MB ) ;
GO

C. Een database maken door meerdere gegevens- en transactielogboekbestanden op te geven

In het volgende voorbeeld wordt de database gemaakt Archive met drie 100-MB gegevensbestanden en twee 100-MB transactielogboekbestanden. Het primaire bestand is het eerste bestand in de lijst en wordt expliciet opgegeven met het trefwoord PRIMARY. De transactielogboekbestanden worden opgegeven na de LOG ON trefwoorden. Let op de extensies die worden gebruikt voor de bestanden in de optie FILENAME: .mdf wordt gebruikt voor primaire gegevensbestanden, .ndf wordt gebruikt voor de secundaire gegevensbestanden en .ldf wordt gebruikt voor transactielogboekbestanden. In dit voorbeeld wordt de database op het D: station in plaats van met de master-database.

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. Een database met bestandsgroepen maken

In het volgende voorbeeld wordt de database gemaakt Sales met de volgende bestandsgroepen:

  • De primaire bestandsgroep met de bestanden Spri1_dat en Spri2_dat. De FILEGROWTH-stappen voor deze bestanden worden opgegeven als 15%.
  • Een bestandsgroep met de naam SalesGroup1 met de bestanden SGrp1Fi1 en SGrp1Fi2.
  • Een bestandsgroep met de naam SalesGroup2 met de bestanden SGrp2Fi1 en SGrp2Fi2.

In dit voorbeeld worden de gegevens en logboekbestanden op verschillende schijven opgeslagen om de prestaties te verbeteren.

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. Een database koppelen

In het volgende voorbeeld wordt de database losgekoppeld Archive gemaakt in voorbeeld D en wordt deze vervolgens gekoppeld met behulp van de FOR ATTACH-component. Archive is gedefinieerd om meerdere gegevens en logboekbestanden te hebben. Omdat de locatie van de bestanden echter niet is gewijzigd sinds ze zijn gemaakt, hoeft alleen het primaire bestand in de FOR ATTACH-component te worden opgegeven. Vanaf SQL Server 2005 (9.x) worden alle volledige tekstbestanden die deel uitmaken van de gekoppelde database, gekoppeld aan de database.

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

F. Een momentopname van een database maken

In het volgende voorbeeld wordt de momentopname van de database gemaakt sales_snapshot0600. Omdat een momentopname van een database het kenmerk Alleen-lezen heeft, kan er geen logboekbestand worden opgegeven. In overeenstemming met de syntaxis wordt elk bestand in de brondatabase opgegeven en worden bestandsgroepen niet opgegeven.

De brondatabase voor dit voorbeeld is de Sales database die in voorbeeld D is gemaakt.

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. Een database maken en een sorteringsnaam en opties opgeven

In het volgende voorbeeld wordt de database MyOptionsTestgemaakt. Er wordt een sorteringsnaam opgegeven en de TRUSTYWORTHY- en DB_CHAINING-opties zijn ingesteld op ON.

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. Een catalogus met volledige tekst bijvoegen die is verplaatst

In het volgende voorbeeld wordt de catalogus met volledige tekst gekoppeld AdvWksFtCat, samen met de AdventureWorks2022 gegevens- en logboekbestanden. In dit voorbeeld wordt de catalogus met volledige tekst verplaatst van de standaardlocatie naar een nieuwe locatie c:\myFTCatalogs. De gegevens en logboekbestanden blijven op hun standaardlocaties staan.

USE master;
GO
--Detach the AdventureWorks2022 database
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

Ik. Een database maken waarmee een rijbestandsgroep en twee FILESTREAM-bestandsgroepen worden opgegeven

In het volgende voorbeeld wordt de FileStreamDB-database gemaakt. De database wordt gemaakt met één rijbestandsgroep en twee FILESTREAM-bestandsgroepen. Elke bestandsgroep bevat één bestand:

  • FileStreamDB_data rijgegevens bevat. Het bevat één bestand, FileStreamDB_data.mdf met het standaardpad.
  • FileStreamPhotos bevat FILESTREAM-gegevens. Het bevat twee FILESTREAM-gegevenscontainers, FSPhotos, die zich op C:\MyFSfolder\Photos en FSPhotos2bevinden, zich op D:\MyFSfolder\Photos. Deze is gemarkeerd als de standaard FILESTREAM-bestandsgroep.
  • FileStreamResumes bevat FILESTREAM-gegevens. Het bevat één FILESTREAM-gegevenscontainer, FSResumes, die zich op C:\MyFSfolder\Resumesbevindt.
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. Een database maken met een FILESTREAM-bestandsgroep met meerdere bestanden

In het volgende voorbeeld wordt de BlobStore1-database gemaakt. De database wordt gemaakt met één rijbestandsgroep en één FILESTREAM-bestandsgroep, FS. De FILESTREAM-bestandsgroep bevat twee bestanden, FS1 en FS2. Vervolgens wordt de database gewijzigd door een derde bestand, FS3, toe te voegen aan de FILESTREAM-bestandsgroep.

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

* SQL Database *

 

SQL Database

Overzicht

In Azure SQL Database kan deze instructie worden gebruikt met een Azure SQL-server om één database of een database in een elastische pool te maken. Met deze instructie geeft u de databasenaam, sortering, maximale grootte, editie, servicedoelstelling en, indien van toepassing, de elastische pool voor de nieuwe database op. Het kan ook worden gebruikt om de database te maken in een elastische pool. Daarnaast kan deze worden gebruikt om een kopie van de database te maken op een andere SQL Database-server.

Syntaxis

Een database maken

Zie Transact-SQL syntaxisconventiesvoor meer informatie over de syntaxisconventies.

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

Een database kopiëren

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' } ) ]
[;]

Argumenten

database_name

De naam van de nieuwe database. Deze naam moet uniek zijn op de SQL Server en moet voldoen aan de SQL Server-regels voor id's. Zie id'svoor meer informatie.

Collation_name

Hiermee geeft u de standaardsortering voor de databasegegevens op. Geef CATALOG_COLLATION op voor systeemmetagegevens, zoals object-id's.

De sorteringsnaam kan een Windows-sorteringsnaam of een SQL-sorteringsnaam zijn. Als dit niet is opgegeven, wordt aan de database de standaardsortering toegewezen. Dit is SQL_Latin1_General_CP1_CI_AS.

COLLATE (Transact-SQL)voor meer informatie over de namen van Windows- en SQL-sorteringen.

CATALOG_COLLATION

Hiermee geeft u de standaardsortering voor de metagegevenscatalogus. Het argument CATALOG_COLLATION is alleen beschikbaar tijdens het maken van de database en kan niet worden gewijzigd na het maken.

De metagegevenscatalogus voor systeemobjectnamen wordt standaard gesorteerd op SQL_Latin1_General_CP1_CI_AS sortering. Dit is de standaardinstelling in Azure SQL Database als CATALOG_COLLATION niet is opgegeven.

DATABASE_DEFAULT geeft aan dat de metagegevenscatalogus die wordt gebruikt voor systeemweergaven en systeemtabellen, worden gesorteerd zodat deze overeenkomt met de sortering voor de database. Als u wilt dat object-id's in systeemmetagegevens dezelfde sortering volgen als gegevens, moet u de database maken WITH CATALOG_COLLATION = DATABASE_DEFAULT.

  • Mogelijk wilt u verschillende sorteringen voor gegevens en object-id's. In het volgende voorbeeld wordt de database gemaakt met een hoofdlettergevoelige sortering voor rijgegevens, maar wordt de standaard-SQL_Latin1_General_CP1_CI_AS hoofdlettergevoelige sortering voor object-id's gebruikt.

    CREATE DATABASE [different-collations] COLLATE SQL_Latin1_General_CP1_CS_AS
    
  • Als u wilt dat zowel gegevens als systeemmetagegevens dezelfde sortering gebruiken, geeft u WITH CATALOG_COLLATION = DATABASE_DEFAULTop. In het volgende voorbeeld wordt de database gemaakt met een hoofdlettergevoelige sortering, die wordt gebruikt voor object-id's.

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

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

Hiermee geeft u op hoe back-ups voor herstel naar een bepaald tijdstip en langetermijnretentie voor een database worden gerepliceerd. Geo-herstel of mogelijkheid om te herstellen van regionale storingen is alleen beschikbaar wanneer de database wordt gemaakt met GEO redundantie van back-upopslag. Tenzij expliciet opgegeven, maken databases die zijn gemaakt met T-SQL gebruik van geografisch redundante back-upopslag.

Als u gegevenslocatie wilt afdwingen wanneer u een database maakt met behulp van T-SQL, gebruikt u LOCAL of ZONE als invoer voor de parameter BACKUP_STORAGE_REDUNDANCY.

Wanneer u een database maakt als een kopie van een andere database met AS COPY OF, wordt het opgeven van opties ondersteund en moet deze tussen haakjes worden verpakt. Bijvoorbeeld WITH (BACKUP_STORAGE_REDUNDANCY = 'LOCAL');.

GROOTBOEK = {ON | UIT }

Wanneer deze optie is ingesteld op ON, wordt er een grootboekdatabase gemaakt waarin de integriteit van alle gebruikersgegevens wordt beveiligd. Alleen grootboektabellen kunnen worden gemaakt in een grootboekdatabase. De standaardwaarde is OFF. De waarde van de optie LEDGER kan niet worden gewijzigd nadat de database is gemaakt. Zie Een grootboekdatabase configurerenvoor meer informatie.

MAXSIZE

Hiermee geeft u de maximale grootte van de database. MAXSIZE moet geldig zijn voor de opgegeven EDITIE (servicelaag).

Hieronder ziet u de ondersteunde MAXSIZE-waarden en -standaardwaarden (D) voor de servicelagen.

Notitie

Het argument MAXSIZE is niet van toepassing op individuele databases in de Hyperscale-servicelaag. Databases met één Hyperscale-laag groeien naar behoefte, tot 128 TB. De SQL Database-service voegt automatisch opslag toe. U hoeft geen maximale grootte in te stellen.

DTU-model voor individuele en pooldatabases op een SQL Database-server

MAXSIZE- Basic- S0-S2- S3-S12- P1-P6- P11-P15-
100 MB
500 MB
1 GB
2 GB √ (D)
5 GB N.V.T
10 GB N.V.T
20 GB N.V.T
30 GB N.V.T
40 GB N.V.T
50 GB N.V.T
100 GB N.V.T
150 GB N.V.T
200 GB N.V.T
250 GB N.V.T √ (D) √ (D)
300 GB N.V.T N.V.T
400 GB N.V.T N.V.T
500 GB N.V.T N.V.T √ (D)
750 GB N.V.T N.V.T
1024 GB N.V.T N.V.T √ (D)
Van 1024 GB tot 4.096 GB in stappen van 256 GB* N.V.T N.V.T N.V.T N.V.T

* P11 en P15 staan MAXSIZE toe tot 4 TB, waarbij 1024 GB de standaardgrootte is. P11 en P15 kunnen zonder extra kosten maximaal 4 TB aan inbegrepen opslagruimte gebruiken. In de Premium-laag is MAXSIZE groter dan 1 TB momenteel beschikbaar in de volgende regio's: US - oost2, VS - west, US Gov Virginia, Europa - west, Duitsland - centraal, Azië - zuidoost, Japan - oost, Australië - oost, Canada - centraal en Canada - oost. Zie DTU-resourcelimietenvoor meer informatie over resourcebeperkingen voor het DTU-model.

De MAXSIZE-waarde voor het DTU-model, indien opgegeven, moet een geldige waarde zijn die wordt weergegeven in de vorige tabel voor de opgegeven servicelaag.

Raadpleeg de artikelen voor tempdb of resourcelimieten voor elastische poolsvoor limieten voor individuele databases, zoals maximale gegevensgrootte en grootte in het vCore-aankoopmodel.

Als er geen MAXSIZE waarde is ingesteld bij het gebruik van het vCore-model, is de standaardwaarde 32 GB. Zie vCore-resourcelimietenvoor meer informatie over resourcebeperkingen voor vCore-modellen.

UITGAVE

Hiermee geeft u de servicelaag van de database.

Individuele en pooldatabases. De beschikbare waarden zijn: Basic, Standard, Premium, GeneralPurpose, BusinessCritical en Hyperscale.

De volgende regels zijn van toepassing op de argumenten MAXSIZE en EDITION:

  • Als EDITION is opgegeven, maar MAXSIZE niet is opgegeven, wordt de standaardwaarde voor de editie gebruikt. Als de EDITIE bijvoorbeeld is ingesteld op Standard en de MAXSIZE niet is opgegeven, wordt de MAXSIZE automatisch ingesteld op 250 MB.
  • Als MAXSIZE of EDITION niet is opgegeven, wordt de EDITIE ingesteld op GeneralPurposeen is MAXSIZE ingesteld op 32 GB.

SERVICE_OBJECTIVE

Hiermee geeft u de rekengrootte en servicedoelstelling op.

  • Voor DTU-aankoopmodel: S0, S1, S2, S3, S4, S6, S7, S9, S12, P1, P2, P4, P6, P11, P15
  • Voor het meest recente aankoopmodel voor vCore kiest u de laag en geeft u het aantal vCores op uit een vooraf ingestelde lijst met waarden, waarbij het aantal vCores n. Raadpleeg de resourcelimieten voor individuele databases of resourcelimieten voor elastische pools.
    • Bijvoorbeeld:
    • GP_Gen5_8 voor algemeen gebruik, ingericht rekenproces, Standard-serie (Gen5), 8 vCores.
    • GP_S_Gen5_8 voor algemeen gebruik, serverloze berekening, Standard-serie (Gen5), 8 vCores.
    • HS_Gen5_8 voor Hyperscale, ingericht rekenproces, Standard-serie (Gen5), 8 vCores.
    • HS_S_Gen5_8 voor Hyperscale, serverloze compute, Standard-series (Gen5), 8 vCores.

Zie Azure SQL Database Service Tiersvoor beschrijvingen van servicedoelstellingen en meer informatie over de grootte, edities en de combinaties van servicedoelstellingen. Als de opgegeven SERVICE_OBJECTIVE niet wordt ondersteund door de EDITIE, wordt er een fout weergegeven. Als u de SERVICE_OBJECTIVE waarde van de ene laag naar de andere wilt wijzigen (bijvoorbeeld van S1 naar P1), moet u ook de EDITION-waarde wijzigen. Ondersteuning voor PRS-servicedoelstellingen is verwijderd.

ELASTIC_POOL (naam = <elastic_pool_name>)

is alleen van toepassing op: individuele en pooldatabases. Is niet van toepassing op databases in de Hyperscale-servicelaag. Als u een nieuwe database wilt maken in een pool voor elastische databases, stelt u de SERVICE_OBJECTIVE van de database in op ELASTIC_POOL en geeft u de naam van de pool op. Zie Een elastische SQL Database-pool maken en beherenvoor meer informatie.

AS COPY OF [source_server_name.]source_database_name

is alleen van toepassing op: individuele en pooldatabases.

Gebruik AS COPY OF om een database naar dezelfde of een andere SQL Database-server te kopiëren.

Wanneer u een database maakt als een kopie van een andere database met AS COPY OF, wordt het opgeven van opties ondersteund en moet deze tussen haakjes worden verpakt. Bijvoorbeeld WITH (BACKUP_STORAGE_REDUNDANCY = 'LOCAL');.

source_server_name De naam van de SQL Database-server waar de brondatabase zich bevindt. Deze parameter is optioneel wanneer de brondatabase en de doeldatabase zich op dezelfde SQL Database-server bevinden.

Notitie

Het argument AS COPY OF biedt geen ondersteuning voor de volledig gekwalificeerde unieke domeinnamen. Met andere woorden, als de volledig gekwalificeerde domeinnaam van uw server is serverName.database.windows.net, gebruikt u alleen serverName tijdens het kopiëren van de database.

source_database_name

De naam van de database die moet worden gekopieerd.

Opmerkingen

Databases in Azure SQL Database hebben verschillende standaardinstellingen die worden ingesteld wanneer de database wordt gemaakt. Zie de lijst met waarden in DATABASEPROPERTYEX-voor meer informatie over deze standaardinstellingen.

MAXSIZE biedt de mogelijkheid om de grootte van de database te beperken. Als de grootte van de database de MAXSIZEbereikt, ontvangt u foutcode 40544. Wanneer dit gebeurt, kunt u geen gegevens invoegen of bijwerken of nieuwe objecten maken (zoals tabellen, opgeslagen procedures, weergaven en functies). U kunt echter nog steeds gegevens lezen en verwijderen, tabellen afkappen, tabellen en indexen verwijderen en indexen opnieuw opbouwen. Vervolgens kunt u MAXSIZE bijwerken naar een waarde die groter is dan de huidige databasegrootte of bepaalde gegevens verwijderen om opslagruimte vrij te maken. Het kan even lang duren voordat u nieuwe gegevens kunt invoegen.

Als u de grootte, editie of servicedoelstelling later wilt wijzigen, gebruikt u ALTER DATABASE (Azure SQL Database).

Databasekopieën

is alleen van toepassing op: individuele en pooldatabases.

Het kopiëren van een database met behulp van de instructie CREATE DATABASE is een asynchrone bewerking. Daarom is een verbinding met de SQL Database-server niet nodig voor de volledige duur van het kopieerproces. De instructie CREATE DATABASE retourneert het besturingselement voor de gebruiker nadat de vermelding in sys.databases is gemaakt, maar voordat de databasekopiebewerking is voltooid. Met andere woorden, de CREATE DATABASE instructie retourneert correct wanneer de databasekopie nog bezig is.

  • Het kopieerproces op een SQL Database-server bewaken: voer een query uit op de kolommen percentage_complete of replication_state_desc in de dm_database_copies of de kolom state in de sys.databases weergave. De sys.dm_operation_status weergave kan worden gebruikt en retourneert de status van databasebewerkingen, inclusief databasekopie.

Op het moment dat het kopieerproces is voltooid, is de doeldatabase transactioneel consistent met de brondatabase.

De volgende syntaxis en semantische regels zijn van toepassing op uw gebruik van het argument AS COPY OF:

  • De naam van de bronserver en de servernaam voor het kopieerdoel kunnen hetzelfde of anders zijn. Wanneer ze hetzelfde zijn, is deze parameter optioneel en wordt de servercontext van de huidige sessie standaard gebruikt.
  • De namen van de bron- en doeldatabase moeten worden opgegeven, uniek en moeten voldoen aan de SQL Server-regels voor id's. Zie id'svoor meer informatie.
  • De CREATE DATABASE-instructie moet worden uitgevoerd in de context van de master-database van de SQL Database-server waarop de nieuwe database wordt gemaakt.
  • Nadat het kopiëren is voltooid, moet de doeldatabase worden beheerd als een onafhankelijke database. U kunt de ALTER DATABASE- en DROP DATABASE-instructies uitvoeren op de nieuwe database, onafhankelijk van de brondatabase. U kunt de nieuwe database ook kopiëren naar een andere nieuwe database.
  • De brondatabase kan nog steeds worden geopend terwijl de databasekopie wordt uitgevoerd.

Zie Een kopie van een Azure SQL-database maken met behulp van Transact-SQLvoor meer informatie.

Belangrijk

Standaard wordt de databasekopie gemaakt met dezelfde redundantie voor back-upopslag als die van de brondatabase.

Machtigingen

Als u een database wilt maken, moet de aanmelding een van de volgende principals zijn:

  • De principalaanmelding op serverniveau
  • De Microsoft Entra-beheerder voor de logische server in Azure
  • Een aanmelding die lid is van de dbmanager-databaserol

Aanvullende vereisten voor het gebruik van CREATE DATABASE ... AS COPY OF syntaxis: De aanmelding die de instructie op de lokale server uitvoert, moet ook ten minste de db_owner op de bronserver zijn. Als de aanmelding is gebaseerd op SQL Server-verificatie, moet de aanmelding die de instructie uitvoert op de lokale server een overeenkomende aanmelding hebben op de bron-SQL Database-server, met een identieke naam en een identiek wachtwoord.

Voorbeelden

Eenvoudig voorbeeld

Een eenvoudig voorbeeld voor het maken van een database.

CREATE DATABASE TestDB1;

Eenvoudig voorbeeld met editie

Een eenvoudig voorbeeld voor het maken van een database voor algemeen gebruik.

CREATE DATABASE TestDB2
( EDITION = 'GeneralPurpose' );

Voorbeeld met extra opties

Een voorbeeld van het gebruik van meerdere opties.

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

Een databasekopie maken

Een voorbeeld van het maken van een kopie van een database.

is alleen van toepassing op: individuele en pooldatabases.

CREATE DATABASE escuela
AS COPY OF school;

Een database maken in een elastische pool

Hiermee maakt u een nieuwe database in de pool met de naam S3M100:

is alleen van toepassing op: individuele en pooldatabases.

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

Een kopie van een database maken op een andere logische server

In het volgende voorbeeld wordt een kopie gemaakt van de db_original database met de naam db_copy in de servicedoelstelling Algemeen gebruik voor één database. Dit geldt ongeacht of db_original zich in een elastische pool bevindt of een rekenkracht (servicedoelstelling) voor één database.

is alleen van toepassing op: individuele en pooldatabases.

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

In het volgende voorbeeld wordt een kopie gemaakt van de db_original-database met de naam db_copy in een elastische pool met de naam ep1. Dit geldt ongeacht of db_original zich in een elastische pool bevindt of een rekenkracht (servicedoelstelling) voor één database. Als db_original zich in een elastische pool bevindt met een andere naam, wordt db_copy nog steeds gemaakt in ep1.

is alleen van toepassing op: individuele en pooldatabases.

CREATE DATABASE db_copy
  AS COPY OF ozabzw7545.db_original
  (SERVICE_OBJECTIVE = ELASTIC_POOL( name = ep1 ) ) ;

Database maken met opgegeven catalogussorteringswaarde

In het volgende voorbeeld wordt de catalogussortering ingesteld op DATABASE_DEFAULT tijdens het maken van de database, waardoor de catalogussortering hetzelfde is als de databasesortering.

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

Database maken met zoneredundantie voor back-ups

In het volgende voorbeeld wordt zoneredundantie ingesteld voor databaseback-ups. Back-ups voor herstel naar een bepaald tijdstip en langetermijnretentieback-ups (indien geconfigureerd) gebruiken dezelfde redundantie voor back-upopslag.

CREATE DATABASE test_zone_redundancy 
  WITH BACKUP_STORAGE_REDUNDANCY = 'ZONE';

Een grootboekdatabase maken

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

Maken als kopie van een database tijdens het wijzigen van opties

In het volgende voorbeeld worden verschillende opties ingesteld voor de nieuwe kopie van een database, waaronder een andere servicelaag en redundantie-instellingen voor back-upopslag. Standaard wordt de databasekopie gemaakt met dezelfde instellingen als de brondatabase.

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

* SQL Managed Instance *

 

Azure SQL Managed Instance

Overzicht

In Azure SQL Managed Instance wordt deze instructie gebruikt om een database te maken. Wanneer u een database maakt op een beheerd exemplaar, geeft u de naam en sortering van de database op.

Syntaxis

Zie Transact-SQL syntaxisconventiesvoor meer informatie over de syntaxisconventies.

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

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

Belangrijk

Als u bestanden wilt toevoegen of insluiting wilt instellen voor een database in een beheerd exemplaar, gebruikt u de instructie ALTER DATABASE.

Voor met SQL beheerde exemplaren wordt de initiële MAXSIZE impliciet ingesteld op de huidige schijfgrootte en wordt deze niet automatisch gewijzigd wanneer u de schijfgrootte uitbreidt vanuit Azure Portal. Nadat u de schijf hebt uitgebreid, moet u MAXSIZE ook uitbreiden met ALTER DATABASE om volledige fouten in het databasebestand te voorkomen.

Argumenten

database_name

De naam van de nieuwe database. Deze naam moet uniek zijn op de SQL-server en moet voldoen aan de SQL Server-regels voor id's. Zie id'svoor meer informatie.

Collation_name

Hiermee geeft u de standaardsortering voor de database. De sorteringsnaam kan een Windows-sorteringsnaam of een SQL-sorteringsnaam zijn. Als dit niet is opgegeven, wordt aan de database de standaardsortering toegewezen. Dit is SQL_Latin1_General_CP1_CI_AS.

COLLATE (Transact-SQL)voor meer informatie over de namen van Windows- en SQL-sorteringen.

GROOTBOEK = {ON | UIT }

Wanneer deze optie is ingesteld op ON, wordt er een grootboekdatabase gemaakt waarin de integriteit van alle gebruikersgegevens wordt beveiligd. Alleen grootboektabellen kunnen worden gemaakt in een grootboekdatabase. De standaardwaarde is OFF. De waarde van de optie LEDGER kan niet worden gewijzigd nadat de database is gemaakt. Zie Een grootboekdatabase configurerenvoor meer informatie.

Opmerkingen

Databases in Azure SQL Database hebben verschillende standaardinstellingen die worden ingesteld wanneer de database wordt gemaakt. Zie de lijst met waarden in DATABASEPROPERTYEX-voor meer informatie over deze standaardinstellingen.

Belangrijk

De CREATE DATABASE-instructie moet de enige instructie in een Transact-SQL batch zijn.

Hier volgen CREATE DATABASE beperkingen:

  • Bestanden en bestandsgroepen kunnen niet worden gedefinieerd.

  • WITHopties worden niet ondersteund, met uitzondering van WITH LEDGER.

    Fooi

    Als tijdelijke oplossing gebruikt u ALTER DATABASE. na CREATE DATABASE het instellen van databaseopties en het toevoegen van bestanden.

Machtigingen

Als u een database wilt maken, moet een aanmelding een van de volgende zijn:

  • De principalaanmelding op serverniveau
  • De Microsoft Entra-beheerder voor de logische server in Azure
  • Een aanmelding die lid is van de dbcreator-databaserol

Voorbeelden

Eenvoudig voorbeeld

Een eenvoudig voorbeeld voor het maken van een database.

CREATE DATABASE TestDB1;

Een grootboekdatabase maken

CREATE DATABASE MyLedgerDB WITH LEDGER = ON;

* Azure Synapse
Analyse *

 

Azure Synapse Analytics

Overzicht

In Azure Synapse kan deze instructie worden gebruikt met een Azure SQL Database-server om een toegewezen SQL-pool te maken. Met deze instructie geeft u de databasenaam, sortering, maximale grootte, editie en servicedoelstelling op.

  • CREATE DATABASE wordt ondersteund voor zelfstandige toegewezen SQL-pools (voorheen SQL DW) met behulp van Gen2-serviceniveaus.
  • CREATE DATABASE wordt niet ondersteund voor toegewezen SQL-pools in een Azure Synapse Analytics-werkruimte. In plaats daarvan gebruikt Azure Portal.
  • CREATE DATABASE wordt ondersteund voor serverloze SQL-pools in Azure Synapse Analytics.

Syntaxis

Zie Transact-SQL syntaxisconventiesvoor meer informatie over de syntaxisconventies.

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'
    }
)
[;]

Argumenten

database_name

De naam van de nieuwe database. Deze naam moet uniek zijn op de SQL-server, die zowel databases in Azure SQL Database- als Azure Synapse Analytics-databases kan hosten en moet voldoen aan de SQL Server-regels voor id's. Zie id'svoor meer informatie.

collation_name

Hiermee geeft u de standaardsortering voor de database. De sorteringsnaam kan een Windows-sorteringsnaam of een SQL-sorteringsnaam zijn. Als dit niet is opgegeven, wordt aan de database de standaardsortering toegewezen. Dit is SQL_Latin1_General_CP1_CI_AS.

Zie COLLATE (Transact-SQL)voor meer informatie over de namen van Windows- en SQL-sorteringen.

MAXSIZE-

De standaardwaarde is 245.760 GB (240 TB).

van toepassing op: geoptimaliseerd voor Compute Gen1

De maximaal toegestane grootte voor de database. De database kan niet groter worden dan MAXSIZE.

van toepassing op: geoptimaliseerd voor Compute Gen2

De maximale toegestane grootte voor rijopslaggegevens in de database. Gegevens die zijn opgeslagen in rijopslagtabellen, de deltastore van een columnstore-index of een niet-geclusterde index in een geclusterde columnstore-index kunnen niet groter worden dan MAXSIZE. Gegevens die zijn gecomprimeerd in columnstore-indeling, hebben geen groottelimiet en worden niet beperkt door MAXSIZE.

EDITION-

Hiermee geeft u de servicelaag van de database. Gebruik voor Azure Synapse Analytics datawarehouse.

SERVICE_OBJECTIVE

Hiermee geeft u de rekengrootte (servicedoelstelling) op. De serviceniveaus voor Gen2 worden gemeten in rekendatawarehouse-eenheden (cDWU), bijvoorbeeld DW2000c. Gen1-serviceniveaus worden gemeten in DWU's, bijvoorbeeld DW2000. Zie DWU's (Data Warehouse Units)voor meer informatie over servicedoelstellingen voor Azure Synapse. Gen1-servicedoelstellingen (niet meer vermeld) worden niet meer ondersteund. U kunt een foutbericht ontvangen: Azure SQL Data Warehouse Gen1 has been deprecated in this region. Please use SQL Analytics in Azure Synapse.

Opmerkingen

Gebruik DATABASEPROPERTYEX- om de database-eigenschappen te bekijken.

Gebruik ALTER DATABASE - Azure Synapse Analytics- om de maximale grootte of servicedoelstellingwaarden later te wijzigen.

Azure Synapse is ingesteld op COMPATIBILITY_LEVEL 130 en kan niet worden gewijzigd. Zie Verbeterde queryprestaties met compatibiliteitsniveau 130 in Azure SQL Databasevoor meer informatie.

Machtigingen

Vereiste machtigingen:

  • Principal-aanmelding op serverniveau, gemaakt door het inrichtingsproces, of
  • Lid van de dbmanager-databaserol.

Foutafhandeling

Als de grootte van de database MAXSIZE bereikt, ontvangt u foutcode 40544. Wanneer dit gebeurt, kunt u geen gegevens invoegen en bijwerken of nieuwe objecten maken (zoals tabellen, opgeslagen procedures, weergaven en functies). U kunt nog steeds gegevens lezen en verwijderen, tabellen afkappen, tabellen en indexen verwijderen en indexen opnieuw opbouwen. Vervolgens kunt u MAXSIZE bijwerken naar een waarde die groter is dan de huidige databasegrootte of bepaalde gegevens verwijderen om opslagruimte vrij te maken. Het kan even lang duren voordat u nieuwe gegevens kunt invoegen.

Beperkingen

U moet zijn verbonden met de master-database om een nieuwe database te maken.

De CREATE DATABASE-instructie moet de enige instructie in een Transact-SQL batch zijn.

U kunt de sortering van de database niet wijzigen nadat de database is gemaakt.

Voorbeelden: Azure Synapse Analytics

Een. Eenvoudig voorbeeld

Een eenvoudig voorbeeld voor het maken van een zelfstandige toegewezen SQL-pool (voorheen SQL DW). Hiermee maakt u de database met de kleinste maximale grootte (10.240 GB), de standaardsortering (SQL_Latin1_General_CP1_CI_AS) en de kleinste Gen2-servicedoelstelling (DW100c).

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

B. Een datawarehouse-database maken met alle opties

Een voorbeeld van het maken van een zelfstandige toegewezen SQL-pool van 10 terabyte (voorheen SQL DW).

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

C. Eenvoudig voorbeeld in een serverloze SQL-pool in Synapse Analytics

Hiermee maakt u de database in de serverloze pool, waarbij een sortering (Latin1_General_100_CI_AS_KS_WS) wordt opgegeven.

CREATE DATABASE TestDW COLLATE Latin1_General_100_CI_AS_KS_WS

* Analytics Platform
Systeem (PDW) *

 

Analyseplatformsysteem

Overzicht

In Analytics Platform System wordt deze instructie gebruikt om een nieuwe database te maken op een Analytics Platform System-apparaat. Gebruik deze instructie om alle bestanden te maken die zijn gekoppeld aan een apparaatdatabase en om de maximale grootte en opties voor automatische groei in te stellen voor de databasetabellen en het transactielogboek.

Syntaxis

Zie Transact-SQL syntaxisconventiesvoor meer informatie over de syntaxisconventies.

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

Argumenten

database_name

De naam van de nieuwe database. Zie 'Object Naming Rules' en 'Reserved Database Names' (Gereserveerde databasenamen) in de productdocumentatievan het Analytics Platform System (PDW) voor meer informatie over toegestane databasenamen.

AUTOGROW = AAN | AF

Hiermee geeft u op of de parameters replicated_size, distributed_sizeen log_size parameters voor deze database automatisch groter worden dan de opgegeven grootten. De standaardwaarde is UIT.

Als AUTOGROW is ingeschakeld, replicated_size, distributed_sizeen log_size naar behoefte groeit (niet in blokken van de oorspronkelijke opgegeven grootte) met elke invoeg-, update- of andere actie waarvoor meer opslagruimte is vereist dan al is toegewezen.

Als AUTOGROW uit is, worden de grootten niet automatisch groter. PdW (Analytics Platform System) retourneert een fout bij het uitvoeren van een actie waarvoor replicated_size, distributed_sizeof log_size moeten groeien buiten de opgegeven waarde.

AUTOGROW is ingeschakeld voor alle maten of UIT voor alle maten. Het is bijvoorbeeld niet mogelijk om AUTOGROW ON in te stellen voor log_size, maar niet in te stellen voor replicated_size.

replicated_size [ GB ]

Een positief getal. Hiermee stelt u de grootte (in gehele of decimale gigabytes) in voor de totale ruimte die is toegewezen aan gerepliceerde tabellen en bijbehorende gegevens op elk rekenknooppunt. Zie 'Minimum- en Maximumwaarden' in de productdocumentatie van Analytics Platform System (PDW)voor minimale en maximale replicated_size vereisten.

Als AUTOGROW is INGESCHAKELD, kunnen gerepliceerde tabellen groter worden dan deze limiet.

Als AUTOGROW uit is, wordt een fout geretourneerd als een gebruiker probeert een nieuwe gerepliceerde tabel te maken, gegevens in te voegen in een bestaande gerepliceerde tabel of een bestaande gerepliceerde tabel bij te werken op een manier die de grootte groter maakt dan replicated_size.

distributed_size [ GB ]

Een positief getal. De grootte, in gehele of decimale gigabytes, voor de totale ruimte die is toegewezen aan gedistribueerde tabellen (en bijbehorende gegevens) op het apparaat. Zie 'Minimum- en Maximumwaarden' in de productdocumentatie Analytics Platform System (PDW)voor minimale en maximale distributed_size vereisten.

Als AUTOGROW is ingeschakeld, kunnen gedistribueerde tabellen groter worden dan deze limiet.

Als AUTOGROW uit is, wordt een fout geretourneerd als een gebruiker probeert een nieuwe gedistribueerde tabel te maken, gegevens in te voegen in een bestaande gedistribueerde tabel of een bestaande gedistribueerde tabel bij te werken op een manier die de grootte groter maakt dan distributed_size.

log_size [ GB ]

Een positief getal. De grootte (in gehele of decimale gigabytes) voor het transactielogboek op het apparaat.

Zie 'Minimum- en Maximumwaarden' in de productdocumentatie van Analytics Platform System (PDW)voor minimale en maximale log_size vereisten.

Als AUTOGROW is ingeschakeld, mag het logboekbestand groter worden dan deze limiet. Gebruik de DBCC SHRINKLOG -instructie (Azure Synapse Analytics) om de grootte van de logboekbestanden te verkleinen tot de oorspronkelijke grootte.

Als AUTOGROW is UITGESCHAKELD, wordt er een fout geretourneerd aan de gebruiker voor een actie waarmee de logboekgrootte op een afzonderlijk rekenknooppunt buiten log_sizewordt verhoogd.

Machtigingen

Vereist de CREATE ANY DATABASE machtiging in de master-database of lidmaatschap van de sysadmin vaste serverfunctie.

In het volgende voorbeeld ziet u de machtiging om een database te maken voor de databasegebruiker Fay.

USE master;
GO
GRANT CREATE ANY DATABASE TO [Fay];
GO

Opmerkingen

Databases worden gemaakt met databasecompatibiliteitsniveau 120, het compatibiliteitsniveau voor SQL Server 2014 (12.x). Dit zorgt ervoor dat de database alle SQL Server 2014-functionaliteit (12.x) kan gebruiken die PDW gebruikt.

Beperkingen en beperkingen

De INSTRUCTIE CREATE DATABASE is niet toegestaan in een expliciete transactie. Zie instructiesvoor meer informatie.

Zie 'Minimum- en Maximumwaarden' in de productdocumentatie van Analytics Platform System (PDW)voor meer informatie over minimum- en maximumbeperkingen voor databases.

Op het moment dat een database wordt gemaakt, moet er voldoende vrije ruimte beschikbaar zijn op elk rekenknooppunt om het gecombineerde totaal van de volgende grootten toe te wijzen:

  • SQL Server-database met tabellen met de grootte van replicated_table_size.
  • SQL Server-database met tabellen met de grootte van (distributed_table_size/aantal rekenknooppunten).
  • SQL Server registreert de grootte van (log_size / aantal rekenknooppunten).

Vergrendeling

Neemt een gedeelde vergrendeling op het DATABASE-object.

Metagegevens

Nadat deze bewerking is voltooid, wordt een vermelding voor deze database weergegeven in de sys.databases en sys.objects metagegevensweergaven.

Voorbeelden: Analytics Platform System (PDW)

Een. Voorbeelden van het maken van basisdatabases

In het volgende voorbeeld wordt de database gemaakt mytest met een opslagtoewijzing van 100 GB per rekenknooppunt voor gerepliceerde tabellen, 500 GB per apparaat voor gedistribueerde tabellen en 100 GB per apparaat voor het transactielogboek. In dit voorbeeld is AUTOGROW standaard uitgeschakeld.

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

In het volgende voorbeeld wordt de database gemaakt mytest met dezelfde parameters als hierboven, behalve dat AUTOGROW is ingeschakeld. Hierdoor kan de database buiten de opgegeven grootteparameters groeien.

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

B. Een database maken met gedeeltelijke gigabytegrootten

In het volgende voorbeeld wordt de database gemaakt mytest, met AUTOGROW uitgeschakeld, een opslagtoewijzing van 1,5 GB per rekenknooppunt voor gerepliceerde tabellen, 5,25 GB per apparaat voor gedistribueerde tabellen en 10 GB per apparaat voor het transactielogboek.

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