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\MyFilestreamData
opgeeft, 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:
- De SQL Server maakt gebruik van een kopie van de modeldatabase om de database en de bijbehorende metagegevens te initialiseren.
- Er wordt een SERVICE Broker-GUID toegewezen aan de database.
- 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 DATABASE
of 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 Sales
gemaakt. 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
enSpri2_dat
. De FILEGROWTH-stappen voor deze bestanden worden opgegeven als15%
. - Een bestandsgroep met de naam
SalesGroup1
met de bestandenSGrp1Fi1
enSGrp1Fi2
. - Een bestandsgroep met de naam
SalesGroup2
met de bestandenSGrp2Fi1
enSGrp2Fi2
.
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 MyOptionsTest
gemaakt. 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 opC:\MyFSfolder\Photos
enFSPhotos2
bevinden, zich opD:\MyFSfolder\Photos
. Deze is gemarkeerd als de standaard FILESTREAM-bestandsgroep. -
FileStreamResumes
bevat FILESTREAM-gegevens. Het bevat één FILESTREAM-gegevenscontainer,FSResumes
, die zich opC:\MyFSfolder\Resumes
bevindt.
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
Verwante inhoud
* 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_DEFAULT
op. 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
GeneralPurpose
en 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 MAXSIZE
bereikt, 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
ofreplication_state_desc
in de dm_database_copies of de kolomstate
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 demaster
-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
- enDROP 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');
Verwante inhoud
* 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.
WITH
opties worden niet ondersteund, met uitzondering vanWITH 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;
Verwante inhoud
* 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
Verwante inhoud
* 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
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);