Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Crée une base de données.
Sélectionnez l’un des onglets suivants pour la syntaxe, les arguments, les remarques, les autorisations et les exemples d’une version SQL particulière avec laquelle vous travaillez.
Sélectionner un produit
Sur la ligne suivante, sélectionnez le nom du produit qui vous intéresse afin d’afficher uniquement les informations qui le concernent.
* SQL Server *
Serveur SQL
Vue d’ensemble
Dans SQL Server, cette instruction crée une nouvelle base de données et les fichiers utilisés avec leurs groupes de fichiers. Elle permet également de créer une capture instantanée de base de données et de joindre des fichiers de base de données pour créer une base de données à partir des fichiers détachés d’une autre base de données.
Syntaxe
Créer une base de données.
Pour plus d’informations sur les conventions de la syntaxe, consultez Conventions de la syntaxe Transact-SQL.
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 ]
}
Attachez une base de données :
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
}
Créer un instantané de base de données :
CREATE DATABASE database_snapshot_name
ON
(
NAME = logical_file_name ,
FILENAME = 'os_file_name'
) [ , ...n ]
AS SNAPSHOT OF
[ ; ]
Les arguments
database_name
Nom de la nouvelle base de données. Les noms de base de données doivent être uniques au sein d’une instance de SQL Server et respecter les règles applicables aux identificateurs.
database_name peut comporter au maximum 128 caractères, sauf si un nom logique n’est pas spécifié pour le fichier journal. Si aucun nom de fichier journal logique n’est spécifié, SQL Server génère les logical_file_name et les os_file_name du journal en ajoutant un suffixe à database_name. Cela limite la taille de database_name à 123 caractères de sorte que le nom logique du fichier généré ne comporte pas plus de 128 caractères.
Si le nom du fichier de données n’est pas spécifié, SQL Server utilise database_name comme logical_file_name et comme os_file_name. Le chemin d'accès par défaut est obtenu à partir du Registre. Le chemin par défaut peut être modifié dans Propriétés du serveur (page Paramètres de base de données) dans Management Studio. La modification du chemin d'accès par défaut requiert le redémarrage de SQL Server.
CONFINEMENT = { AUCUN | PARTIEL }
S’applique à : SQL Server 2012 (11.x) et ultérieur
Spécifie l'état de la relation contenant-contenu de la base de données.
-
NONE= base de données non autonome. -
PARTIAL= base de données partiellement autonome.
ACTIVÉ
Spécifie que les fichiers disque servant à stocker les parties données de la base de données (fichiers des données) sont définis de manière explicite.
ON est obligatoire en cas de suivi d’une liste séparée par des virgules d’éléments qui définissent les fichiers de données pour le groupe de <filespec> fichiers principal. La liste des fichiers du groupe de fichiers principal peut être suivie d’une liste facultative, séparée par des virgules, d’éléments qui définissent les groupes de <filegroup> fichiers utilisateur et leurs fichiers.
PRIMAIRE
Spécifie que la liste associée <filespec> définit le fichier principal. Le premier fichier spécifié dans l’entrée <filespec> du groupe de fichiers principal devient le fichier principal. Une base de données ne peut avoir qu’un seul fichier primaire. Pour plus d’informations, consultez Fichiers et groupes de fichiers de base de données.
S’il PRIMARY n’est pas spécifié, le premier fichier répertorié dans l’instruction CREATE DATABASE devient le fichier principal.
SE CONNECTER
Spécifie que les fichiers disque servant à stocker le journal de la base de données (fichiers journaux) sont définis de manière explicite.
LOG ON est suivie d’une liste d’éléments séparés par des <filespec> virgules qui définissent les fichiers journaux. S’il LOG ON n’est pas spécifié, un fichier journal est créé automatiquement, dont la taille est de 25 % de la somme des tailles de tous les fichiers de données de la base de données, ou de 512 Ko, selon la taille la plus grande. Ce fichier est placé à l'emplacement de fichier journal par défaut. Pour plus d’informations sur cet emplacement, consultez Afficher ou modifier les emplacements par défaut pour les fichiers de données et les fichiers journaux.
LOG ON ne peut pas être spécifié sur un instantané de base de données.
COLLATE collation_name
Indique le classement par défaut de la base de données. Le nom du classement peut être un nom de classement Windows ou SQL. S'il n'est pas spécifié, la base de données est affectée au classement par défaut de l'instance SQL Server. Un nom de classement ne peut pas être spécifié sur un instantané de base de données.
Un nom de classement ne peut pas être spécifié avec les clauses ou FOR ATTACH les FOR ATTACH_REBUILD_LOG clauses. Pour plus d’informations sur la modification du classement d’une base de données associée, consultez Définir ou modifier le classement de base de données.
Pour plus d’informations sur les noms de classement Windows et SQL, consultez COLLATE.
Notes
Les bases de données autonomes sont classées différemment des bases de données non autonomes. Pour plus d’informations, consultez Classements de base de données autonome.
<Option> WITH
<filestream_option>
NON_TRANSACTED_ACCESS = { DÉSACTIVÉ | READ_ONLY | COMPLET }
S’applique à : SQL Server 2012 (11.x) et ultérieur
Spécifie le niveau d'accès FILESTREAM non transactionnel à la base de données.
Valeur Descriptif OFFL'accès non transactionnel est désactivé. READONLYLes données FILESTREAM de cette base de données peuvent être lues par des processus non transactionnels. FULLL'accès non transactionnel complet aux FileTables FILESTREAM est activé. DIRECTORY_NAME = <directory_name>
S’applique à : SQL Server 2012 (11.x) et ultérieur
Nom de répertoire compatible avec Windows. Ce nom doit être unique parmi tous les noms Database_Directory de cette instance SQL Server. La comparaison d'unicité n'est pas sensible à la casse, indépendamment des paramètres de classement SQL Server. Cette option doit être définie avant de créer un FileTable dans cette base de données.
Les options suivantes sont autorisées uniquement quand
CONTAINMENTelles ont été définiesPARTIALsur . SiCONTAINMENTelle est définieNONEsur , des erreurs se produisent.
DEFAULT_FULLTEXT_LANGUAGE = <LCID> | <Nom de> la langue | <alias de langue>
S’applique à : SQL Server 2012 (11.x) et ultérieur
Consultez configuration du serveur : langue de texte intégral par défaut pour obtenir une description complète de cette option.
DEFAULT_LANGUAGE = <lcid> | <Nom de> la langue | <alias de langue>
S’applique à : SQL Server 2012 (11.x) et ultérieur
Consultez configuration du serveur : langue par défaut pour obtenir une description complète de cette option.
NESTED_TRIGGERS = { DÉSACTIVÉ | LE }
S’applique à : SQL Server 2012 (11.x) et ultérieur
Consultez configuration du serveur : déclencheurs imbriqués pour obtenir une description complète de cette option.
TRANSFORM_NOISE_WORDS = { DÉSACTIVÉ | LE }
S’applique à : SQL Server 2012 (11.x) et ultérieur
Consultez configuration du serveur : transformer les mots de bruit pour obtenir une description complète de cette option.
TWO_DIGIT_YEAR_CUTOFF = { 2049 | <toutes les années entre 1753 et 9999> }
Quatre chiffres qui représente une année. 2049 est la valeur par défaut. Consultez configuration du serveur : coupure de deux chiffres d’année pour obtenir une description complète de cette option.
DB_CHAINING { DÉSACTIVÉ | LE }
Quand ON elle est spécifiée, la base de données peut être la source ou la cible d’une chaîne de propriété inter-bases de données.
Quand OFF, la base de données ne peut pas participer au chaînage de propriétés inter-bases de données. Par défaut, il s’agit de OFF.
Important
L’instance de SQL Server reconnaît ce paramètre lorsque l’option de serveur de chaînage de propriétés de base de données croisée est 0 (OFF). Lorsque le chaînage de propriétés entre bases de données est de 1 (ON), toutes les bases de données utilisateur peuvent participer à des chaînes de propriété inter-bases de données, quelle que soit la valeur de cette option. Cette option est configurée à l’aide de sp_configure.
Pour définir cette option, nécessite l’appartenance au rôle serveur fixe sysadmin . L’option DB_CHAINING ne peut pas être définie sur ces bases de données système : master, model, tempdb.
DIGNE DE CONFIANCE { DÉSACTIVÉ | LE }
Quand ON il est spécifié, les modules de base de données (par exemple, les vues, les fonctions définies par l’utilisateur ou les procédures stockées) qui utilisent un contexte d’emprunt d’identité peuvent accéder aux ressources en dehors de la base de données.
Quand OFF, les modules de base de données dans un contexte d’emprunt d’identité ne peuvent pas accéder aux ressources en dehors de la base de données. Par défaut, il s’agit de OFF.
TRUSTWORTHY est défini sur OFF chaque fois que la base de données est attachée.
Par défaut, toutes les bases de données système à l’exception de la msdb base de données ont TRUSTWORTHY la valeur OFF. La valeur ne peut pas être modifiée pour les bases de données et model les tempdb bases de données. Nous vous recommandons de ne jamais définir l’option TRUSTWORTHYON sur la master base de données.
PERSISTENT_LOG_BUFFER = ON ( DIRECTORY_NAME = 'directory_name' )
S’applique à : SQL Server 2017 (14.x) et versions ultérieures
Lorsque cette option est spécifiée, le tampon du journal des transactions est créé sur un volume situé sur une unité de disque avec mémoire de classe de stockage (stockage non volatil NVDIMM-N), également appelé tampon de journal persistant. Pour plus d’informations, consultez accélération de la latence de validation des transactions à l’aide du de mémoire de classe de stockage et Ajouter une mémoire tampon de journal persistante à une base de données.
LEDGER = { ON | OFF }
Quand cette option est définie sur ON, une base de données de registre est créée dans laquelle l’intégrité de toutes les données utilisateur est protégée. Seules des tables de registre peuvent être créées dans une base de données de registre. Par défaut, il s’agit de OFF. La valeur de l’option LEDGER ne peut pas être modifiée une fois la base de données créée. Pour plus d’informations, consultez Configurer une base de données de registre.
CRÉER UNE BASE DE DONNÉES ... POUR ATTACHER [ AVEC <> attach_database_option ]
Spécifie que la base de données est créée en attachant un ensemble existant de fichiers du système d'exploitation. Il doit y avoir une <filespec> entrée qui spécifie le fichier principal. Les seules autres <filespec> entrées requises sont celles des fichiers dont le chemin d’accès est différent de celui de la création ou de la dernière connexion de la base de données. Une <filespec> entrée doit être spécifiée pour ces fichiers.
FOR ATTACH Exige:
- Tous les fichiers de données (MDF et NDF) doivent être disponibles.
- Si plusieurs fichiers journaux existent, tous doivent être disponibles.
Si une base de données en lecture/écriture a un seul fichier journal actuellement indisponible et si la base de données a été arrêtée sans aucun utilisateur ni transaction ouverte avant l’opération ATTACH , FOR ATTACH reconstruit automatiquement le fichier journal et met à jour le fichier principal. En revanche, pour une base de données en lecture seule, le journal ne peut pas être reconstruit, car le fichier principal ne peut pas être mis à jour. Par conséquent, lorsque vous attachez une base de données en lecture seule avec un journal non disponible, vous devez fournir les fichiers journaux ou les fichiers dans la FOR ATTACH clause.
Notes
Une base de données créée par une version plus récente de SQL Server ne peut pas être attachée dans les versions antérieures.
Dans SQL Server, tous les fichiers de texte intégral qui font partie de la base de données jointe sont attachés à la base de données. Pour spécifier un nouveau chemin d'accès pour le catalogue de texte intégral, spécifiez le nouvel emplacement sans le nom de fichier du système d'exploitation en texte intégral. Pour plus d’informations, consultez Exemples.
L’attachement d’une base de données contenant l’option FILESTREAM « Nom du répertoire » invite SQL Server à vérifier que le Database_Directory nom est unique. Si ce n’est pas le cas, l’opération ATTACH échoue avec l’erreur. FILESTREAM Database_Directory name is not unique in this SQL Server instance Pour éviter cette erreur, le paramètre facultatif, directory_name, doit être passé à cette opération.
FOR ATTACH ne peut pas être spécifié sur un instantané de base de données.
FOR ATTACH peut spécifier l’option RESTRICTED_USER .
RESTRICTED_USER autorise uniquement les membres du rôle de base de données fixe db_owner et des rôles de serveur fixe sysadmin et sysadmin à se connecter à la base de données, mais ne limite pas leur nombre. Les tentatives par des utilisateurs non qualifiés sont refusées.
<service_broker_option>
Si la base de données utilise Service Broker, utilisez le dans WITH <service_broker_option> votre FOR ATTACH clause :
Contrôle la remise des messages Service Broker et l’identificateur Service Broker pour la base de données. Les options Service Broker ne peuvent être spécifiées que lorsque la FOR ATTACH clause est utilisée.
ENABLE_BROKER
Spécifie que Service Broker est activé pour la base de données spécifiée. Autrement dit, la remise des messages est démarrée et is_broker_enabled a la valeur True dans l’affichage catalogue sys.databases. La base de données conserve l'identificateur Service Broker existant.
NEW_BROKER
Crée une valeur service_broker_guid dans sys.databases et la base de données restaurée. Met fin à tous les points de terminaison de conversation avec nettoyage. Service Broker est activé, mais aucun message n'est envoyé aux points de terminaison de conversation distants. Tout itinéraire qui fait référence à l'ancien identificateur Service Broker doit être recréé avec le nouvel identificateur.
ERROR_BROKER_CONVERSATIONS
Termine toutes les conversations avec une erreur indiquant que la base de données est attachée ou restaurée. Service Broker est désactivé jusqu'à la fin de l'opération, puis il est activé. La base de données conserve l'identificateur Service Broker existant.
Lorsque vous attachez une base de données répliquée qui a été copiée au lieu d’être détachée, envisagez les éléments suivants :
- Si vous attachez la base de données à la même version et à la même instance de serveur que celles de la base de données d'origine, aucune opération supplémentaire n'est nécessaire.
- Si vous attachez la base de données à la même instance de serveur alors que sa version a été mise à niveau, vous devez exécuter sp_vupgrade_replication pour mettre à jour la réplication à la fin de l’opération de rattachement.
- Si vous attachez la base de données à une instance de serveur différente, sans tenir compte de la version, vous devez exécuter sp_removedbreplication pour supprimer la réplication, une fois l’opération de rattachement effectuée.
Notes
L’attachement fonctionne avec le format de stockage vardecimal, mais le Moteur de base de données SQL Server doit être mis à niveau vers au moins SQL Server 2005 (9.x) SP2. Vous ne pouvez pas attacher une base de données à l’aide du format de stockage vardecimal à une version antérieure de SQL Server. Pour plus d’informations sur le format de stockage vardecimal , consultez compression des données.
Lorsqu’une base de données est attachée ou restaurée pour une nouvelle instance de SQL Server, une copie de la clé principale de base de données (chiffrée par la clé principale du service) n’est pas encore stockée sur le serveur. Vous devez utiliser l'instruction OPEN MASTER KEY pour déchiffrer la clé principale de la base de données (DMK). Une fois la clé DMK déchiffrée, vous avez la possibilité d'activer le déchiffrement automatique dans le futur en exécutant l'instruction ALTER MASTER KEY REGENERATE pour fournir au serveur une copie de la clé DMK chiffrée avec la clé principale du service (SMK). Lorsqu'une base de données a été mise à niveau à partir d'une version antérieure, la clé DMK doit être régénérée de façon à utiliser le nouvel algorithme AES. Pour plus d’informations sur la régénération de la clé DMK, consultez l’article ALTER MASTER KEY. La durée nécessaire pour régénérer la clé DMK à mettre à niveau vers AES dépend du nombre d'objets protégés par la clé DMK. La régénération de la clé DMK à mettre à niveau vers AES n’est nécessaire qu’une seule fois et n’a aucun effet sur les régénérations futures dans le cadre d’une stratégie de rotation de clé. Pour plus d’informations sur la mise à niveau d’une base de données à l’aide de l’attachement, consultez Mettre à niveau une base de données à l’aide du détachement et de l’attachement.
Important
Nous vous recommandons de ne pas attacher de bases de données provenant de sources inconnues ou non approuvées. Ces bases de données peuvent contenir du code malveillant susceptible d'exécuter du code Transact-SQL indésirable ou de provoquer des erreurs en modifiant le schéma ou la structure physique des bases de données. Avant d’utiliser une base de données issue d’une source inconnue ou non approuvée, exécutez DBCC CHECKDB sur la base de données sur un serveur autre qu’un serveur de production et examinez également le code, notamment les procédures stockées ou le code défini par l’utilisateur, de la base de données.
Notes
Les options et TRUSTWORTHY les DB_CHAINING options n’ont aucun effet lors de l’attachement d’une base de données.
POUR ATTACH_REBUILD_LOG
Spécifie que la base de données est créée en joignant un ensemble existant de fichiers du système d'exploitation. Cette option est limitée aux bases de données en lecture/écriture. Il doit y avoir une <filespec> entrée spécifiant le fichier principal. S'il manque un ou plusieurs fichiers du journal des transactions, le fichier journal est reconstruit. ATTACH_REBUILD_LOG crée automatiquement un nouveau fichier journal de 1 Mo. Ce fichier est placé à l'emplacement de fichier journal par défaut. Pour plus d’informations sur cet emplacement, consultez Afficher ou modifier les emplacements par défaut pour les fichiers de données et les fichiers journaux.
Notes
Si les fichiers journaux sont disponibles, le Moteur de base de données utilise ces fichiers au lieu de reconstruire les fichiers journaux.
FOR ATTACH_REBUILD_LOG nécessite les conditions suivantes :
- Un arrêt propre de la base de données.
- Tous les fichiers de données (MDF et NDF) doivent être disponibles.
Important
Cette opération brise la chaîne de sauvegarde du journal. Nous vous recommandons d’effectuer une sauvegarde complète de la base de données immédiatement après la fin de l’opération. Pour plus d’informations, consultez BACKUP.
En règle générale, FOR ATTACH_REBUILD_LOG il est utilisé lorsque vous copiez une base de données en lecture/écriture avec un journal volumineux sur un autre serveur où la copie sera utilisée principalement, voire uniquement, pour les opérations de lecture, et nécessite donc moins d’espace de journal que la base de données d’origine.
FOR ATTACH_REBUILD_LOG ne peut pas être spécifié sur un instantané de base de données.
Pour plus d’informations sur l’attachement et le détachement de bases de données, consultez Détachement et attachement de base de données (SQL Server).
<Fichiers>
Contrôle les propriétés des fichiers.
NOM logical_file_name
Spécifie le nom logique du fichier.
NAME est obligatoire lorsque FILENAME est spécifié, sauf lors de la spécification de l’une FOR ATTACH des clauses. Un FILESTREAM groupe de fichiers ne peut pas être nommé PRIMARY.
logical_file_name
Nom logique utilisé dans SQL Server lors du référencement du fichier. Logical_file_name doit être unique dans la base de données et doit respecter les règles relatives aux identificateurs. Le nom peut être une constante de type caractère ou Unicode, un identificateur régulier ou un identificateur délimité.
NOM DE FICHIER { 'os_file_name' | 'filestream_path' }
Spécifie un nom de fichier du système d'exploitation (physique).
os_file_name
Chemin d’accès et nom de fichier utilisé par le système d’exploitation lorsque vous créez le fichier. Le fichier doit résider sur l'un des périphériques suivants : le serveur local sur lequel SQL Server est installé, un réseau de zone de stockage [réseau SAN] ou un réseau basé sur iSCSI. Le chemin d’accès spécifié doit exister avant d’exécuter l’instruction
CREATE DATABASE. Pour plus d’informations, consultez Groupes de fichiers et fichiers de base de données plus loin dans cet article.SIZE,MAXSIZEetFILEGROWTHles paramètres peuvent être définis lorsqu’un chemin d’accès UNC est spécifié pour le fichier.Si le fichier se trouve sur une partition brute, os_file_name doit spécifier uniquement la lettre d’une unité correspondant à une partition brute existante. Un seul fichier de données peut être créé sur chaque partition brute.
Notes
Les partitions brutes ne sont pas prises en charge dans SQL Server 2014 (12.x) et les versions ultérieures.
Les fichiers de données ne doivent pas être placés sur des systèmes de fichiers compressés, sauf si les fichiers sont des fichiers secondaires en lecture seule ou si la base de données est en lecture seule. Les fichiers journaux ne doivent jamais être placés sur des systèmes de fichiers compressés.
filestream_path
Pour un groupe de fichiers FILESTREAM,
FILENAMEfait référence à un chemin d’accès où les données FILESTREAM seront stockées. Le chemin d'accès jusqu'au dernier dossier doit exister, et le dernier dossier ne doit pas exister. Par exemple, si vous spécifiez le chemin d’accèsC:\MyFiles\MyFilestreamData,C:\MyFilesdoit exister avant l’exécutionALTER DATABASE, mais que leMyFilestreamDatadossier ne doit pas exister.Le groupe de fichiers et le fichier (
<filespec>) doivent être créés dans la même instruction.Les
SIZEpropriétés neFILEGROWTHs’appliquent pas à un groupe de fichiers FILESTREAM.
TAILLE taille
Précise la taille du fichier.
SIZE ne peut pas être spécifié lorsque le os_file_name est spécifié en tant que chemin UNC.
SIZE ne s’applique pas à un groupe de fichiers FILESTREAM.
taille
Taille initiale du fichier.
Lorsque la taille n’est pas fournie pour le fichier principal, le moteur de base de données utilise la taille du fichier principal dans la
modelbase de données. La taille par défaut de la base de donnéesmodelest de 8 Mo (à partir de SQL Server 2016 (13.x)) ou de 1 Mo (pour les versions antérieures). Lorsqu’un fichier de données secondaire ou un fichier journal est spécifié, mais que la taille n’est pas spécifiée pour le fichier, le moteur de base de données effectue le fichier 8 Mo (à partir de SQL Server 2016 (13.x)) ou de 1 Mo (pour les versions antérieures). La taille spécifiée pour le fichier primaire doit être au moins égale à la taille du fichier primaire de la base de donnéesmodel.Les suffixes kilo-octet (Ko), mégaoctet (Mo), gigaoctet (Go) ou téraoctet (To) peuvent être utilisés. La valeur par défaut est Mo. Indiquez un nombre entier. N’incluez pas de décimale. la taille est une valeur entière. Pour les valeurs supérieures à 2 147 483 647, utilisez des unités supérieures.
MAXSIZE max_size
Spécifie la taille maximale que peut atteindre le fichier.
MAXSIZE ne peut pas être spécifié lorsque le os_file_name est spécifié en tant que chemin UNC.
max_size
Taille maximale du fichier. Les indications Ko, Mo, Go et To peuvent être utilisées. La valeur par défaut est Mo. Indiquez un nombre entier. N’incluez pas de décimale. Si max_size n’est pas spécifié, le fichier augmente jusqu’à ce que le disque soit plein. Max_size est une valeur entière. Pour les valeurs supérieures à 2147483647, utilisez des unités plus grandes.
ILLIMITÉ
Précise que la taille du fichier peut croître jusqu'à ce que le disque soit saturé. Dans SQL Server, un fichier journal spécifié avec une croissance illimitée a une taille maximale de 2 To et un fichier de données une taille maximale de 16 To.
Notes
Il n’existe aucune taille maximale lorsque cette option est spécifiée pour un conteneur FILESTREAM. Il continue à grandir jusqu'à ce que le disque soit saturé.
FILE GROWTH growth_increment
Spécifie l'incrément de croissance automatique du fichier. Le FILEGROWTH paramètre d’un fichier ne peut pas dépasser le MAXSIZE paramètre.
FILEGROWTH ne peut pas être spécifié lorsque le os_file_name est spécifié en tant que chemin UNC.
FILEGROWTH ne s’applique pas à un groupe de fichiers FILESTREAM.
growth_increment
Quantité d’espace ajoutée au fichier chaque fois que de nouveaux espaces sont nécessaires.
La valeur peut être spécifiée dans
KB, ,MBGB,TBou pourcentage (%). Si un nombre est spécifié sans suffixeKBou sans suffixeMB, la valeur par défaut est%MB. Quand%elle est spécifiée, la taille de l’incrément de croissance est le pourcentage spécifié de la taille du fichier au moment où l’incrément se produit. La taille spécifiée est arrondie à la valeur multiple de 64 Ko la plus proche, et la valeur minimale est de 64 Ko.La valeur 0 indique que la croissance automatique est désactivée et qu'aucun espace supplémentaire n'est autorisé.
Si
FILEGROWTHce n’est pas spécifié, les valeurs par défaut sont les suivantes :Version Valeurs par défaut À compter de SQL Server 2016 (13.x) 64 Mo de données. 64 Mo de fichiers journaux. À compter de SQL Server 2005 (9.x) 1 Mo de données. 10 % de fichiers journaux. Avant SQL Server 2005 (9.x) 10 % de données. 10 % de fichiers journaux.
<groupe de fichiers>
Contrôle les propriétés des groupes de fichiers. Impossible de spécifier un groupe de fichiers sur un instantané de base de données.
GROUPE DE FICHIERS filegroup_name
Nom logique du groupe de fichiers.
filegroup_name
filegroup_name doit être unique dans la base de données et ne peut pas être les noms
PRIMARYfournis par le système etPRIMARY_LOG. Le nom peut être une constante de type caractère ou Unicode, un identificateur régulier ou un identificateur délimité. Le nom doit respecter les règles applicables aux identificateurs.CONTIENT FILESTREAM
Spécifie que le groupe de fichiers stocke des objets BLOB (binary large objects) FILESTREAM dans le système de fichiers.
DÉFAUT
Spécifie le groupe de fichiers nommé qui est le groupe de fichiers par défaut de la base de données.
CONTIENT MEMORY_OPTIMIZED_DATA
S’applique à : SQL Server 2014 (12.x) et ultérieur
Spécifie que le groupe de fichiers stocke des données optimisées en mémoire dans le système de fichiers. Pour plus d’informations, consultez In-Memory vue d’ensemble d’OLTP et les scénarios d’utilisation.
MEMORY_OPTIMIZED_DATAUn seul groupe de fichiers est autorisé par base de données. Pour obtenir des exemples de code qui créent un groupe de fichiers pour stocker des données à mémoire optimisée, consultez Création d’une table optimisée en mémoire et d’une procédure stockée compilée en mode natif.
database_snapshot_name
Nom de la nouvelle capture instantanée de base de données. Les noms des captures instantanées de base de données doivent être uniques au sein d'une instance de SQL Server et respecter les règles applicables aux identificateurs. database_snapshot_name peut avoir un maximum de 128 caractères.
ON ( NOM = logical_file_name, NOM FICHIER = 'os_file_name') [ ,... n ]
Pour créer un instantané de base de données, spécifie une liste de fichiers dans la base de données source. Pour que l'instantané fonctionne, tous les fichiers de données doivent être spécifiés individuellement. Toutefois, les fichiers journaux ne sont pas autorisés pour les instantanés de base de données. Les groupes de fichiers FILESTREAM ne sont pas pris en charge par les instantanés de base de données. Si un fichier de données FILESTREAM est inclus dans une CREATE DATABASE ON clause, l’instruction échoue et une erreur est générée.
Pour obtenir des descriptions NAME et FILENAME leurs valeurs, consultez les descriptions des valeurs équivalentes <filespec> .
Notes
Lorsque vous créez un instantané de base de données, les autres <filespec> options et le mot clé PRIMARY sont interdits.
AS SNAPSHOT OF nom_base_de_données_source
Spécifie que la base de données créée est un instantané de la base de données source spécifiée par source_database_name. Les bases de données d'instantané et source doivent se trouver sur la même instance.
Dans SQL Server 2017 (14.x) et les versions antérieures, la base de données source d’un instantané de base de données n’a pas pu contenir de MEMORY_OPTIMIZED_DATA groupe de fichiers. La prise en charge des instantanés de base de données en mémoire a été ajoutée dans SQL Server 2019 (15.x).
Pour plus d’informations, consultez Instantanés de base de données.
Notes
La base de données master doit être sauvegardée chaque fois qu’une base de données utilisateur est créée, modifiée ou supprimée.
L’instruction CREATE DATABASE doit s’exécuter en mode de validation automatique (mode de gestion des transactions par défaut) et n’est pas autorisée dans une transaction explicite ou implicite.
Vous pouvez utiliser une instruction CREATE DATABASE pour créer une base de données et les fichiers qui stockent la base de données. SQL Server implémente l’instruction CREATE DATABASE en procédant comme suit :
- SQL Server utilise une copie de la base de données model pour initialiser la base de données et ses métadonnées.
- Un GUID Service Broker est affecté à la base de données.
- Le Moteur de base de données complète ensuite le reste de la base de données avec des pages vides, à l'exception des pages qui contiennent des données internes enregistrant la manière dont est utilisé l'espace dans la base de données.
Vous pouvez spécifier un maximum de 32 767 bases de données sur une instance de SQL Server.
Chaque base de données appartient à un propriétaire qui peut réaliser des activités spéciales dans la base de données. Le propriétaire est l'utilisateur qui crée la base de données. Le propriétaire de base de données peut être changé avec ALTER AUTHORIZATION.
Certaines fonctionnalités de base de données dépendent de fonctionnalités ou de capacités présentes dans le système de fichiers. Voici quelques exemples des fonctionnalités qui dépendent de jeux de fonctionnalités du système de fichiers :
DBCC CHECKDB- Flux de fichiers
- Sauvegardes en ligne à l’aide de VSS et d’instantanés de fichiers
- Création d’instantané de base de données
- Groupe de fichiers de données à mémoire optimisée
Fichiers et groupes de fichiers de base de données
Chaque base de données comprend au moins deux fichiers, un fichier primaire et un fichier journal des transactions, et au moins un groupe de fichiers. Un maximum de 32 767 fichiers et 32 767 groupes de fichiers peut être spécifié pour chaque base de données.
Lorsque vous créez une base de données, attribuez aux fichiers une taille aussi grande que possible, en tenant compte du volume maximal de données qu'est censée contenir la base de données.
Nous vous recommandons d'utiliser un réseau de zone de stockage (SAN, Storage Area Network), un réseau basé sur iSCSI ou un disque attaché localement pour le stockage de vos fichiers de base de données SQL Server, car cette configuration optimise les performances et la fiabilité de SQL Server.
Instantanés de base de données
Vous pouvez utiliser l’instruction CREATE DATABASE pour créer une vue en lecture seule statique, un instantané de base de données de la base de données source. Chaque instantané de base de données est transactionnellement cohérent avec la base de données source existante au moment de la création de l'instantané. Une base de données source peut posséder plusieurs instantanés.
Notes
Lorsque vous créez un instantané de base de données, l’instruction CREATE DATABASE ne peut pas référencer les fichiers journaux, les fichiers hors connexion, la restauration des fichiers et les fichiers obsolètes.
Si la création d'un instantané de base de données échoue, l'instantané devient suspect et doit être supprimé. Pour plus d’informations, consultez DROP DATABASE.
Chaque instantané persiste jusqu’à ce qu’il soit supprimé à l’aide DROP DATABASEde .
Pour plus d’informations, consultez Captures instantanées de base de données (SQL Server) et Créer un instantané de base de données.
Options de la base de données
Plusieurs options de base de données sont définies automatiquement chaque fois que vous créez une base de données. Pour obtenir la liste de ces options, consultez les options ALTER DATABASE SET.
Base de données model et création de nouvelles bases de données
Les objets définis par l’utilisateur dans la base de données model sont copiés dans toutes les nouvelles bases de données. Vous pouvez ajouter à la base de données model tous les objets, tels que tables, vues, procédures stockées ou types de données, à inclure dans toutes les bases de données nouvellement créées.
Quand une instruction CREATE DATABASE <database_name> est spécifiée sans paramètre de taille supplémentaire, le fichier de données primaire a la même taille que celui de la base de données model.
Sauf si FOR ATTACH est spécifié, chaque nouvelle base de données hérite des paramètres d’option de base de données de la base de données model. Par exemple, l’option de base de données auto shrink a la valeur true dans model et dans toutes les bases de données que vous créez. Si vous modifiez les options de la base de données model, ces nouveaux paramètres d’option sont valables dans toutes les bases de données que vous créez. La modification des opérations dans la model base de données n’affecte pas les bases de données existantes. Si FOR ATTACH est spécifié sur l’instruction, la CREATE DATABASE nouvelle base de données hérite des paramètres d’option de base de données de la base de données d’origine.
Afficher les informations de base de données
Vous pouvez utiliser les affichages catalogue, les fonctions système et les procédures stockées du système pour retourner des informations sur les bases de données, les fichiers et les groupes de fichiers. Pour plus d’informations, consultez Affichages système.
Autorisations
Requiert l’autorisation CREATE DATABASE, CREATE ANY DATABASE ou ALTER ANY DATABASE.
Pour contrôler l’utilisation du disque sur une instance de SQL Server, l’autorisation de créer des bases de données est généralement limitée à quelques connexions.
L’exemple suivant fournit l’autorisation de créer une base de données à l’utilisateur Fayde la base de données.
USE master;
GO
GRANT CREATE DATABASE TO [Fay];
GO
Autorisations sur les fichiers de données et les fichiers journaux
Dans SQL Server, certaines autorisations sont définies sur les données et les journaux de chaque base de données. Les autorisations suivantes sont définies chaque fois que les opérations suivantes sont appliquées à une base de données :
- Attachée
- Sauvegardée
- Date de création
- Détachée
- Modifiée pour ajouter un nouveau fichier
- Restaurée
Les autorisations empêchent les fichiers d'être accidentellement falsifiés s'ils résident dans un répertoire doté d'autorisations d'ouverture.
Notes
Microsoft SQL Server 2005 Express edition ne définit pas les autorisations de données et de fichier journal.
Exemples
R. Créer une base de données sans spécifier de fichiers
Cet exemple crée une base de données appelée mytest et crée un fichier primaire et un fichier de journal des transactions correspondants. Étant donné que l’instruction ne comporte aucun <filespec> élément, le fichier de base de données primaire a la taille du fichier primaire de base model de données. Le journal des transactions est défini sur la plus grande de ces valeurs : 512 Ko ou 25 % de la taille du fichier de données primaire. Comme MAXSIZE il n’est pas spécifié, les fichiers peuvent croître pour remplir tout l’espace disque disponible. Cet exemple montre également comment supprimer la base de données nommée mytest, si elle existe, avant de créer la base de données mytest.
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. Créer une base de données qui spécifie les fichiers de données et les fichiers journaux de transactions
L'exemple suivant crée la base de données Sales. Comme le mot clé PRIMARY n’est pas utilisé, le premier fichier (Sales_dat) devient le fichier principal. Étant donné que ni Mo ni Ko ne sont spécifiés dans le SIZE paramètre du Sales_dat fichier, il utilise MB et est alloué en mégaoctets. La base de données Sales_log est alloué en mégaoctets car le suffixe MB est défini explicitement dans le paramètre 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 = 5 MB,
MAXSIZE = 25 MB,
FILEGROWTH = 5 MB
);
GO
Chapitre C. Créer une base de données en spécifiant plusieurs fichiers de données et plusieurs fichiers journaux de transactions
Cet exemple crée une base de données appelée Archive qui comprend trois fichiers de données de 100-MB et deux fichiers du journal des transactions de 100-MB. Le fichier primaire est le premier fichier dans la liste et il est spécifié de manière explicite à l'aide du mot clé PRIMARY. Les fichiers du journal des transactions sont spécifiés à la suite des mots clés LOG ON. Notez les extensions utilisées pour les fichiers dans l'option FILENAME : .mdf pour les fichiers de données primaires, .ndf pour les fichiers de données secondaires et .ldf pour les fichiers journaux de transactions. Cet exemple place la base de données sur le lecteur D: plutôt qu'avec la base de données master.
USE master;
GO
CREATE DATABASE Archive
ON PRIMARY
(
NAME = Arch1,
FILENAME = 'D:\SalesData\archdat1.mdf',
SIZE = 100 MB,
MAXSIZE = 200,
FILEGROWTH = 20
), (
NAME = Arch2,
FILENAME = 'D:\SalesData\archdat2.ndf',
SIZE = 100 MB,
MAXSIZE = 200,
FILEGROWTH = 20
), (
NAME = Arch3,
FILENAME = 'D:\SalesData\archdat3.ndf',
SIZE = 100 MB, MAXSIZE = 200,
FILEGROWTH = 20
)
LOG ON (
NAME = Archlog1,
FILENAME = 'D:\SalesData\archlog1.ldf',
SIZE = 100 MB,
MAXSIZE = 200,
FILEGROWTH = 20
), (
NAME = Archlog2,
FILENAME = 'D:\SalesData\archlog2.ldf',
SIZE = 100 MB,
MAXSIZE = 200,
FILEGROWTH = 20
);
GO
D. Créer une base de données possédant des groupes de fichiers
L'exemple suivant crée la base de données Sales qui possède les groupes de fichiers suivants :
- Le groupe de fichiers primaire avec les fichiers
Spri1_datetSpri2_dat. LesFILEGROWTHincréments de ces fichiers sont spécifiés en tant que15%. - Un groupe de fichiers nommé
SalesGroup1avec les fichiersSGrp1Fi1etSGrp1Fi2. - Un groupe de fichiers nommé
SalesGroup2avec les fichiersSGrp2Fi1etSGrp2Fi2.
Cet exemple place les fichiers de données et les fichiers journaux sur des disques différents afin d'améliorer les performances.
USE master;
GO
CREATE DATABASE Sales
ON PRIMARY(
NAME = SPri1_dat,
FILENAME = 'D:\SalesData\SPri1dat.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 15 %
), (
NAME = SPri2_dat,
FILENAME = 'D:\SalesData\SPri2dt.ndf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 15 %
),
FILEGROUP SalesGroup1(
NAME = SGrp1Fi1_dat,
FILENAME = 'D:\SalesData\SG1Fi1dt.ndf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5
), (
NAME = SGrp1Fi2_dat,
FILENAME = 'D:\SalesData\SG1Fi2dt.ndf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5
),
FILEGROUP SalesGroup2(
NAME = SGrp2Fi1_dat,
FILENAME = 'D:\SalesData\SG2Fi1dt.ndf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5
), (
NAME = SGrp2Fi2_dat,
FILENAME = 'D:\SalesData\SG2Fi2dt.ndf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5
)
LOG ON (
NAME = Sales_log,
FILENAME = 'E:\SalesLog\salelog.ldf',
SIZE = 5 MB,
MAXSIZE = 25 MB,
FILEGROWTH = 5 MB
);
GO
E. Attacher une base de données
L'exemple ci-dessous détache la base de données Archive créée dans l'exemple D, puis l'attache à l'aide de la clause FOR ATTACH.
Archive a été défini de manière à posséder plusieurs fichiers de données et fichiers journaux. Toutefois, étant donné que l’emplacement des fichiers n’a pas changé depuis leur création, seul le fichier principal doit être spécifié dans la FOR ATTACH clause. À partir de SQL Server 2005 (9.x)SQL Server 2005 (9.x)SQL Server 2005 (9.x), tous les fichiers de texte intégral qui font partie de la base de données jointe sont attachés à la base de données.
USE master;
GO
EXECUTE sp_detach_db Archive;
GO
CREATE DATABASE Archive
ON
(FILENAME = 'D:\SalesData\archdat1.mdf') FOR ATTACH;
GO
F. Créer un instantané de base de données
L’exemple suivant crée l’instantané de base de données sales_snapshot0600. Étant donné qu’un instantané de base de données est en lecture seule, un fichier journal ne peut pas être spécifié. Conformément à la syntaxe, chaque fichier de la base de données source est spécifié et les groupes de fichiers ne sont pas spécifiés.
La base de données source dans cet exemple est la base de données Sales créée dans l'exemple D.
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. Créer une base de données et spécifier un nom de classement et des options
L'exemple suivant crée la base de données MyOptionsTest. Un nom de classement est spécifié et les options TRUSTYWORTHY et DB_CHAINING ont la valeur 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. Attacher un catalogue de texte intégral qui a été déplacé
L'exemple suivant attache le catalogue de texte intégral AdvWksFtCat ainsi que les fichiers de données et fichiers journaux de AdventureWorks2025. Dans cet exemple, le catalogue de texte intégral est déplacé de son emplacement par défaut vers un nouvel emplacement c:\myFTCatalogs. Les fichiers de données et les fichiers journaux restent dans leurs emplacements par défaut.
USE master;
GO
--Detach the AdventureWorks2022 database
EXECUTE sp_detach_db AdventureWorks2022;
GO
-- Physically move the full text catalog to the new location.
--Attach the AdventureWorks2022 database and specify the new location of the full-text catalog.
CREATE DATABASE AdventureWorks2022 ON
(FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks2022_data.mdf'),
(FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks2022_log.ldf'),
(FILENAME = 'c:\myFTCatalogs\AdvWksFtCat')
FOR ATTACH;
GO
Je. Créer une base de données qui spécifie un groupe de fichiers de ligne et deux groupes de fichiers FILESTREAM
L'exemple ci-dessous crée la base de données FileStreamDB. La base de données est créée avec un groupe de fichiers de ligne et deux groupes de fichiers FILESTREAM. Chaque groupe de fichiers contient un fichier :
FileStreamDB_datacontient des données de ligne. Il contient un seul fichier,FileStreamDB_data.mdfavec le chemin d'accès par défaut.FileStreamPhotoscontient des données FILESTREAM. Il contient deux conteneurs de données FILESTREAM :FSPhotos(dansC:\MyFSfolder\Photos) etFSPhotos2(dansD:\MyFSfolder\Photos). Il est marqué comme groupe de fichiers FILESTREAM par défaut.FileStreamResumescontient des données FILESTREAM. Il contient un seul conteneur de données FILESTREAM,FSResumes, qui se trouve dansC:\MyFSfolder\Resumes.
USE master;
GO
-- Get the SQL Server data path.
DECLARE @data_path AS NVARCHAR (256);
SET @data_path = (SELECT SUBSTRING(physical_name, 1, CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1)
FROM master.sys.master_files
WHERE database_id = 1
AND file_id = 1);
-- Execute the CREATE DATABASE statement.
EXECUTE ('CREATE DATABASE FileStreamDB
ON PRIMARY (
NAME = FileStreamDB_data,
FILENAME = ''' + @data_path + ' FileStreamDB_data.mdf '',
SIZE = 10 MB,
MAXSIZE = 50 MB,
FILEGROWTH = 15 %
),
FILEGROUP FileStreamPhotos
CONTAINS FILESTREAM DEFAULT (NAME = FSPhotos, FILENAME = ''C:\MyFSfolder\Photos'',
-- SIZE and FILEGROWTH should not be specified here.
-- If they are specified, an error is raised.
MAXSIZE = 5000 MB),
(NAME = FSPhotos2, FILENAME = ''D:\MyFSfolder\Photos'', MAXSIZE = 10000 MB),
FILEGROUP FileStreamResumes
CONTAINS FILESTREAM (NAME = FileStreamResumes, FILENAME = ''C:\MyFSfolder\Resumes'')
LOG ON (
NAME = FileStream_log,
FILENAME = ''' + @data_path + ' FileStreamDB_log.ldf '',
SIZE = 5 MB,
MAXSIZE = 25 MB,
FILEGROWTH = 5 MB
);');
GO
J. Créer une base de données disposant d’un groupe de fichiers FILESTREAM avec de nombreux fichiers
L'exemple ci-dessous crée la base de données BlobStore1. La base de données est créée avec un groupe de fichiers de ligne et un groupe de fichiers FILESTREAM, FS. Le groupe de fichiers FILESTREAM contient deux fichiers, FS1 et FS2. Puis la base de données est modifiée par l'ajout d'un troisième fichier, FS3, au groupe de fichiers FILESTREAM.
USE master;
GO
CREATE DATABASE [BlobStore1] CONTAINMENT = NONE
ON PRIMARY(
NAME = N'BlobStore1',
FILENAME = N'C:\BlobStore\BlobStore1.mdf',
SIZE = 100 MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 1 MB
),
FILEGROUP [FS] CONTAINS FILESTREAM DEFAULT
(NAME = N'FS1', FILENAME = N'C:\BlobStore\FS1', MAXSIZE = UNLIMITED),
(NAME = N'FS2', FILENAME = N'C:\BlobStore\FS2', MAXSIZE = 100 MB)
LOG ON (
NAME = N'BlobStore1_log',
FILENAME = N'C:\BlobStore\BlobStore1_log.ldf',
SIZE = 100 MB,
MAXSIZE = 1 GB,
FILEGROWTH = 1 MB
);
GO
ALTER DATABASE [BlobStore1]
ADD FILE (
NAME = N'FS3',
FILENAME = N'C:\BlobStore\FS3',
MAXSIZE = 100 MB
) TO FILEGROUP [FS];
GO
Contenu connexe
- MODIFIER LA BASE DE DONNÉES (Transact-SQL)
- Détachement et attachement de base de données (SQL Server)
- BASE DE DONNÉES DE CHUTE (Transact-SQL)
- EVENTDATA (Transact-SQL)
- MODIFIER L'AUTORISATION (Transact-SQL)
- sp_detach_db
- sp_removedbreplication
- Captures instantanées de base de données (SQL Server)
- Déplacer des fichiers de bases de données
- Bases de données
- Données blob (Binary Large Object) (SQL Server)
* Base de données SQL *
Base de données SQL
Vue d’ensemble
Dans SQL Database, cette instruction est utilisable avec un serveur Azure SQL pour créer une base de données unique ou une base de données dans un pool élastique. Elle implique de spécifier le nom, le classement, la taille maximale, l’édition, l’objectif de service et, le cas échéant, le pool élastique de la nouvelle base de données. Elle permet également créer la base de données dans un pool élastique et de créer une copie de la base de données sur un autre serveur SQL Database.
Syntaxe
Création d'une base de données
Pour plus d’informations sur les conventions de la syntaxe, consultez Conventions de la syntaxe Transact-SQL.
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>) } } )
}
Copier une base de données
CREATE DATABASE database_name
AS COPY OF [ source_server_name. ] source_database_name
[ ( SERVICE_OBJECTIVE =
{ 'Basic' | 'S0' | 'S1' | 'S2' | 'S3' | 'S4' | 'S6' | 'S7' | 'S9' | 'S12'
| 'P1' | 'P2' | 'P4' | 'P6' | 'P11' | 'P15'
| 'GP_Gen5_n'
| 'GP_Fsv2_n'
| 'GP_S_Gen5_n'
| 'BC_Gen5_n'
| 'BC_M_n'
| 'HS_Gen5_n'
| 'HS_S_Gen5_n'
| 'HS_PRMS_n'
| 'HS_MOPRMS_n'
| { ELASTIC_POOL(name = <elastic_pool_name>) } } )
]
[ WITH ( BACKUP_STORAGE_REDUNDANCY = { 'LOCAL' | 'ZONE' | 'GEO' | 'GEOZONE' } ) ]
[ ; ]
Les arguments
database_name
Nom de la nouvelle base de données. Ce nom doit être unique sur le serveur SQL et respecter les règles SQL Server relatives aux identificateurs. Pour plus d’informations, consultez Identificateurs de base de données.
collation_name
Indique le classement par défaut des données de la base de données. Indiquez CATALOG_COLLATION pour les métadonnées système, telles que les identificateurs d’objet.
Le nom du classement peut être un nom de classement Windows ou SQL. Si elle n’est pas spécifiée, la base de données reçoit le classement par défaut, qui est SQL_Latin1_General_CP1_CI_AS.
Pour plus d’informations sur les noms de classement Windows et SQL, COLLATE.
CATALOG_COLLATION
Spécifie le classement par défaut du catalogue de métadonnées. L’argument CATALOG_COLLATION est disponible uniquement lors de la création de la base de données et ne peut pas être modifié après la création.
Par défaut, le catalogue de métadonnées pour les noms d’objets système est compilé en SQL_Latin1_General_CP1_CI_AS classement. Il s’agit du paramètre par défaut sur Azure SQL Database s’il CATALOG_COLLATION n’est pas spécifié.
DATABASE_DEFAULT spécifie que le catalogue de métadonnées utilisé pour les vues système et les tables système doivent correspondre au classement de la base de données. Pour que les identificateurs d’objet dans les métadonnées système suivent le même classement que les données, créez la base de données WITH CATALOG_COLLATION = DATABASE_DEFAULT.
Vous pouvez souhaiter des classements différents pour les identificateurs de données et d’objets. L’exemple suivant crée la base de données avec un classement respectant la casse pour les données de ligne, mais utilise le classement respectant la casse par défaut
SQL_Latin1_General_CP1_CI_ASpour les identificateurs d’objet.CREATE DATABASE [different-collations] COLLATE SQL_Latin1_General_CP1_CS_AS;Pour que les données et les métadonnées système utilisent le même classement, spécifiez
WITH CATALOG_COLLATION = DATABASE_DEFAULT. L’exemple suivant crée la base de données avec un classement respectant la casse, qui est utilisé pour les identificateurs d’objet.CREATE DATABASE [same-collations] COLLATE SQL_Latin1_General_CP1_CS_AS WITH CATALOG_COLLATION = DATABASE_DEFAULT;
BACKUP_STORAGE_REDUNDANCY = {'LOCAL' | 'ZONE' | 'GEO' | 'GEOZONE' }
Spécifie comment la restauration à un instant dans le passé et les sauvegardes avec conservation à long terme d’une base de données sont répliquées. La géorestauration, ou la possibilité de récupérer après une panne d’une région, est disponible seulement quand la base de données est créée avec la redondance de stockage de sauvegarde GEO. Sauf spécification explicite, les bases de données créées avec T-SQL utilisent un stockage de sauvegarde géoredondant.
À utiliser GEOZONE pour le stockage redondant géozone. Le stockage redondant géozone (GZRS) offre le plus haut niveau de protection contre les pannes zonales ainsi que les pannes régionales pour n’importe quelle charge de travail.
Pour appliquer la résidence des données lorsque vous créez une base de données à l’aide de T-SQL, utilisez LOCAL ou ZONE comme entrée dans le BACKUP_STORAGE_REDUNDANCY paramètre.
Lorsque vous créez une base de données en tant que copie d’une autre base de données avec AS COPY OF, la spécification des options est prise en charge et doit être placée entre parenthèses. Par exemple : WITH (BACKUP_STORAGE_REDUNDANCY = 'LOCAL');.
LEDGER = { ON | OFF }
Quand cette option est définie sur ON, une base de données de registre est créée dans laquelle l’intégrité de toutes les données utilisateur est protégée. Seules des tables de registre peuvent être créées dans une base de données de registre. Par défaut, il s’agit de OFF. La valeur de l’option LEDGER ne peut pas être modifiée une fois la base de données créée. Pour plus d’informations, consultez Configurer une base de données de registre.
TAILLE MAX
Spécifie la taille maximale de la base de données.
MAXSIZE doit être valide pour le niveau de service spécifié EDITION .
Voici les valeurs prises en charge MAXSIZE et les valeurs par défaut (D) pour les niveaux de service.
Notes
L’argument MAXSIZE ne s’applique pas aux bases de données uniques dans le niveau de service Hyperscale. Les bases de données de niveau Hyperscale uniques augmentent selon les besoins, jusqu’à 128 To. Le service SQL Database ajoute automatiquement le stockage. Vous n’avez pas besoin de définir une taille maximale.
Modèle DTU des bases de données uniques et mises en pool sur un serveur SQL Database
MAXSIZE |
Élémentaire | S0-S2 | S3-S12 | P1-P6 | P11-P15 1 |
|---|---|---|---|---|---|
| 100 Mo | Oui | Oui | Oui | Oui | Oui |
| 500 Mo | Oui | Oui | Oui | Oui | Oui |
| 1 Go | Oui | Oui | Oui | Oui | Oui |
| 2 Go | Oui (D) | Oui | Oui | Oui | Oui |
| 5 Go | N/A | Oui | Oui | Oui | Oui |
| 10 Go | N/A | Oui | Oui | Oui | Oui |
| 20 Go | N/A | Oui | Oui | Oui | Oui |
| 30 Go | N/A | Oui | Oui | Oui | Oui |
| 40 Go | N/A | Oui | Oui | Oui | Oui |
| 50 Go | N/A | Oui | Oui | Oui | Oui |
| 100 Go | N/A | Oui | Oui | Oui | Oui |
| 150 Go | N/A | Oui | Oui | Oui | Oui |
| 200 Go | N/A | Oui | Oui | Oui | Oui |
| 250 Go | N/A | Oui (D) | Oui (D) | Oui | Oui |
| 300 Go | N/A | N/A | Oui | Oui | Oui |
| 400 Go | N/A | N/A | Oui | Oui | Oui |
| 500 Go | N/A | N/A | Oui | Oui (D) | Oui |
| 750 Go | N/A | N/A | Oui | Oui | Oui |
| 1 024 Go | N/A | N/A | Oui | Oui | Oui (D) |
| De 1 024 Go à 4 096 Go par incréments de 256 Go | N/A | N/A | N/A | N/A | Oui |
1 P11 et P15 permettent MAXSIZE jusqu’à 4 To avec 1 024 Go étant la taille par défaut. P11 et P15 peuvent utiliser jusqu’à 4 To de stockage inclus sans frais supplémentaires. Dans le niveau Premium, MAXSIZE plus de 1 To est actuellement disponible dans les régions suivantes : USA Est2, USA Ouest, US Gov Virginie, Europe Ouest, Allemagne Centre, Asie Sud-Est, Japon Est, Australie Est, Canada Centre et Canada Est. Pour plus d’informations sur les limitations de ressources pour le modèle DTU, consultez Limites de ressources pour les bases de données uniques à l’aide du modèle d’achat DTU - Azure SQL Database.
La MAXSIZE valeur du modèle DTU, le cas échéant, doit être une valeur valide indiquée dans le tableau précédent pour le niveau de service spécifié.
Pour connaître les limites telles que la taille maximale des données et la taille tempdb dans le modèle d’achat vCore, reportez-vous aux articles pour connaître les limites de ressources pour les bases de données uniques ou les limites de ressources pour les pools élastiques.
Si aucune valeur MAXSIZE n’est définie lors de l’utilisation du modèle vCore, la valeur par défaut est de 32 Go. Pour plus d’informations sur les limitations des ressources pour le modèle vCore, consultez les limites des ressources vCore.
ÉDITION
Spécifie la couche de service de la base de données.
Bases de données uniques et mises en pool. Les valeurs disponibles sont : 'Basic', 'Standard', 'Premium', 'GeneralPurpose', 'BusinessCritical' et 'Hyperscale'.
Les règles suivantes s’appliquent aux arguments et MAXSIZE aux EDITION arguments suivants :
Si
EDITIONelle est spécifiée, maisMAXSIZEn’est pas spécifiée, la valeur par défaut de l’édition est utilisée. Par exemple, si laEDITIONvaleur est Standard et si elleMAXSIZEn’est pas spécifiée, la valeur MAX’SIZE est automatiquement définie sur 250 Mo.Si ni aucune valeur n’est
MAXSIZEEDITIONspécifiée, laEDITIONvaleur « GeneralPurpose » est définie sur « GeneralPurpose » etMAXSIZEest définie sur 32 Go.
SERVICE_OBJECTIVE
Spécifie la taille de calcul et l’objectif de service.
Pour le modèle d’achat DTU :
S0,S1,S2,S3,S4,S6,S7,S9,S12,P1,P2,P4,P6,P11,P15Pour le dernier modèle d’achat vCore, choisissez le niveau et indiquez le nombre de vCores à partir d’une liste prédéfinie de valeurs, où le nombre de vCores est
n. Reportez-vous aux limites de ressources pour les bases de données uniques ou les limites de ressources pour les pools élastiques.- Par exemple:
-
GP_Gen5_8à usage général, calcul approvisionné, série Standard (Gen5), 8 vCores. -
GP_S_Gen5_8à usage général, calcul serverless, série Standard (Gen5), 8 vCores. -
HS_Gen5_8pour Hyperscale, calcul approvisionné, série Standard (Gen5), 8 vCores. -
HS_S_Gen5_8pour Hyperscale, calcul serverless, série Standard (Gen5), 8 vCores.
-
- Par exemple:
Pour plus d’informations sur les objectifs de service, ainsi que sur la taille, les éditions et les combinaisons d’objectifs de service, consultez Niveaux de service d’Azure SQL Database. Si le paramètre spécifié SERVICE_OBJECTIVE n’est pas pris en charge par le EDITIONfichier , vous recevez une erreur. Pour modifier la SERVICE_OBJECTIVE valeur d’un niveau à un autre (par exemple de S1 à P1), vous devez également modifier la EDITION valeur. La prise en charge des objectifs de service PRS a été supprimée.
ELASTIC_POOL (nom = <elastic_pool_name>)
S’applique à : Bases de données uniques et mises en pool uniquement. Ne s’applique pas aux bases de données dans le niveau de service Hyperscale.
Pour créer une base de données dans un pool de bases de données élastique, définissez la SERVICE_OBJECTIVE base de données ELASTIC_POOL et indiquez le nom du pool. Pour plus d’informations, consultez Les pools élastiques vous aident à gérer et à mettre à l'échelle plusieurs bases de données Azure SQL Database.
COPIE DE [ source_server_name. ] source_database_name
S’applique à : Bases de données uniques et mises en pool uniquement.
Permet AS COPY OF de copier une base de données sur le même serveur SQL Database ou un autre serveur SQL Database.
Lors de la création d’une base de données sous la forme d’une copie d’une autre base de données, AS COPY OFla spécification des options est prise en charge et doit être encapsulée entre parenthèses. Par exemple : WITH (BACKUP_STORAGE_REDUNDANCY = 'LOCAL');.
source_server_name
Nom du serveur SQL Database où se trouve la base de données source. Ce paramètre est facultatif lorsque la base de données source et la base de données de destination se trouveront sur le même serveur SQL Database.
Notes
L’argument
AS COPY OFne prend pas en charge les noms de domaine uniques complets. En d'autres termes, si le nom de domaine complet de votre serveur estserverName.database.windows.net, utilisez uniquementserverNamependant la copie de base de données.source_database_name
Nom de la base de données copiée.
Notes
Les bases de données dans Azure SQL Database ont plusieurs paramètres par défaut définis lors de la création de la base de données. Pour plus d’informations sur ces paramètres par défaut, consultez la liste de valeurs dans DATABASEPROPERTYEX.
MAXSIZE permet de limiter la taille de la base de données. Si la taille de la base de données atteint sa valeur MAXSIZE, vous recevez un code d’erreur 40544. Lorsque cela se produit, vous ne pouvez pas insérer ou mettre à jour des données, ni créer de nouveaux objets (tels que des tables, des procédures stockées, des vues et des fonctions). Toutefois, vous pouvez encore lire et supprimer des données, tronquer des tables, supprimer des tables et des index et reconstruire des index. Vous pouvez ensuite mettre à jour MAXSIZE avec une valeur supérieure à votre taille de base de données actuelle ou supprimer certaines données afin de libérer de l’espace de stockage. Il peut s’écouler jusqu’à 15 minutes avant que vous puissiez insérer de nouvelles données.
Pour modifier ultérieurement les valeurs de taille, d’édition ou d’objectif de service, utilisez ALTER DATABASE (Azure SQL Database).
Copies de base de données
S’applique à : Bases de données uniques et mises en pool uniquement.
La copie d’une base de données à l’aide de l’instruction CREATE DATABASE est une opération asynchrone. Par conséquent, une connexion au serveur SQL Database n’est pas nécessaire pendant toute la durée du processus de copie. L’instruction CREATE DATABASE redonne le contrôle à l’utilisateur après la création de l’entrée dans sys.databases, mais avant que l’opération de copie de base de données ne soit terminée. Autrement dit, l'instruction CREATE DATABASE est renvoyée avec succès lorsque la copie de base de données est encore en cours.
- Surveillance du processus de copie sur un serveur de base de données SQL : interrogez les
percentage_completecolonnes oureplication_state_descdans le dm_database_copies ou lastatecolonne dans lasys.databasesvue. La vue sys.dm_operation_status peut aussi être utilisée, car elle retourne l’état des opérations de base de données, y compris la copie de base de données.
Une fois le processus de copie terminé, la base de données de destination est cohérente sur le plan transactionnel avec la base de données source.
La syntaxe et les règles sémantiques suivante s'appliquent à votre utilisation de l'argument AS COPY OF :
- Le nom du serveur source et le nom du serveur pour la cible de copie peuvent être identiques ou différents. Lorsqu’ils sont identiques, ce paramètre est facultatif et le contexte de serveur de la session active est utilisé par défaut.
- Les noms des bases de données source et de destination doivent être spécifiées, uniques et conformes aux règles SQL Server applicables aux identificateurs. Pour plus d’informations, consultez Identificateurs de base de données.
- L’instruction
CREATE DATABASEdoit être exécutée dans le contexte de la base de donnéesmasterdu serveur SQL Database où la nouvelle base de données sera créée. - Une fois la copie terminée, la base de données de destination doit être gérée comme une base de données indépendante. Vous pouvez exécuter les instructions
ALTER DATABASEetDROP DATABASEcontre la nouvelle base de données indépendamment de la base de données source. Vous pouvez également copier la nouvelle base de données vers une autre nouvelle base de données. - La base de données source est toujours accessible pendant que la copie de base de données est en cours.
Pour plus d’informations, consultez Copier une copie cohérente transactionnellement d’une base de données dans Azure SQL Database.
Important
Par défaut, la copie de la base de données est créée avec la même redondance du stockage de sauvegarde que celle de la base de données source.
Autorisations
Pour créer une base de données, la connexion doit être l’un des principaux suivants :
- La connexion du principal au niveau du serveur
- Administrateur Microsoft Entra pour le serveur logique dans Azure
- Une connexion qui est membre du rôle de base de données
dbmanager
Exigences supplémentaires relatives à l’utilisation de la syntaxe CREATE DATABASE ... AS COPY OF : La connexion exécutant l’instruction sur le serveur local doit également être au moins db_owner sur le serveur source. Si la connexion est basée sur l’authentification SQL Server, la connexion exécutant l’instruction sur le serveur local doit avoir une connexion correspondante sur le serveur SQL Database source, avec les mêmes nom et mot de passe.
Exemples
Exemple de base
Exemple de base pour la création d’une base de données.
CREATE DATABASE TestDB1;
Exemple de base avec édition
Exemple de base pour la création d’une base de données à usage général.
CREATE DATABASE TestDB2
(EDITION = 'GeneralPurpose');
Exemple avec des options supplémentaires
Voici un exemple utilisant plusieurs options.
CREATE DATABASE hito
COLLATE Japanese_Bushu_Kakusu_100_CS_AS_KS_WS
( MAXSIZE = 500 MB, EDITION = 'GeneralPurpose', SERVICE_OBJECTIVE = 'GP_Gen5_8' ) ;
Créer une copie de base de données
Voici un exemple de création d’une copie de base de données.
S’applique à : Bases de données uniques et mises en pool uniquement.
CREATE DATABASE escuela
AS COPY OF school;
Créer une base de données dans un pool élastique
Crée une base de données dans le pool nommé S3M100 :
S’applique à : Bases de données uniques et mises en pool uniquement.
CREATE DATABASE db1
(SERVICE_OBJECTIVE = ELASTIC_POOL (NAME = S3M100));
Créer une copie d’une base de données sur un autre serveur logique
L’exemple suivant crée une copie de la db_original base de données nommée db_copy dans l’objectif de service Usage général pour une base de données unique. Cette opération est possible, que db_original se trouve dans un pool élastique ou une taille de calcul (objectif de service) pour une base de données.
S’applique à : Bases de données uniques et mises en pool uniquement.
CREATE DATABASE db_copy
AS COPY OF <database>.db_original
(EDITION = 'GeneralPurpose', SERVICE_OBJECTIVE = 'GP_Gen5_8');
L’exemple suivant crée une copie de la base de données db_original nommée db_copy dans un pool élastique nommé ep1. Cette opération est possible, que db_original se trouve dans un pool élastique ou une taille de calcul (objectif de service) pour une base de données. Si db_original se trouve dans un pool élastique avec un nom différent, db_copy est toujours créé dans ep1.
S’applique à : Bases de données uniques et mises en pool uniquement.
CREATE DATABASE db_copy
AS COPY OF <database>.db_original
(SERVICE_OBJECTIVE = ELASTIC_POOL (NAME = ep1));
Créer la base de données avec la valeur de classement de catalogue spécifiée
L’exemple suivant définit le classement DATABASE_DEFAULT du catalogue au cours de la création de la base de données, ce qui définit le classement du catalogue de la même façon que le classement de base de données.
CREATE DATABASE TestDB3 COLLATE Japanese_XJIS_140 (MAXSIZE = 100 MB, EDITION = 'Basic')
WITH CATALOG_COLLATION = DATABASE_DEFAULT;
Créer une base de données en utilisant la redondance interzone pour les sauvegardes
L’exemple suivant définit la redondance interzone pour les sauvegardes de base de données. Les sauvegardes de restauration à un point dans le temps et les sauvegardes de rétention à long terme (si configurées) utilisent la même redondance de stockage de sauvegarde.
CREATE DATABASE test_zone_redundancy
WITH BACKUP_STORAGE_REDUNDANCY = 'ZONE';
Créer une base de données de registre
CREATE DATABASE MyLedgerDB (EDITION = 'GeneralPurpose')
WITH LEDGER = ON;
Créer en tant que copie d’une base de données lors de la modification des options
L’exemple suivant définit différentes options pour la nouvelle copie d’une base de données, notamment un niveau de service différent et des paramètres de redondance de stockage de sauvegarde. Par défaut, la copie de base de données est créée avec les mêmes paramètres que la base de données source.
CREATE DATABASE copy_testdb
AS COPY OF [test_db]
(EDITION = 'GeneralPurpose', SERVICE_OBJECTIVE = 'GP_Gen5_8')
WITH (BACKUP_STORAGE_REDUNDANCY = 'LOCAL');
Contenu connexe
- sys.dm_database_copies - Azure SQL Database
- ALTER DATABASE (Azure SQL Database)
- Limites de ressources pour les bases de données uniques à l’aide du modèle d’achat DTU - Azure SQL Database
- Limites de ressources vCore pour les bases de données uniques
- Limites des ressources vCore pour les pools élastiques
* Instance gérée SQL *
Azure SQL Managed Instance (Instance gérée Azure SQL)
Vue d’ensemble
Dans Azure SQL Managed Instance, cette instruction permet de créer une base de données. La création d’une base de données sur une instance managée implique de spécifier son nom et son classement.
Syntaxe
Pour plus d’informations sur les conventions de la syntaxe, consultez Conventions de la syntaxe Transact-SQL.
CREATE DATABASE database_name [ COLLATE collation_name ]
[ WITH <with_options> [ , ..n ] ]
[ ; ]
<with_options> ::=
{
LEDGER = { ON | OFF }
}
Important
Pour ajouter des fichiers ou définir l’autonomie d’une base de données dans une instance managée, utilisez l’instruction ALTER DATABASE.
Pour les instances managées SQL, l’initial MAXSIZE est implicitement défini sur la taille de disque actuelle et ne change pas automatiquement lorsque vous étendez la taille du disque à partir du portail Azure. Après l’extension du disque, vous devez également étendre MAXSIZE avec ALTER DATABASE pour éviter les erreurs complètes du fichier de base de données.
Les arguments
database_name
Nom de la nouvelle base de données. Ce nom doit être unique sur le serveur SQL et respecter les règles SQL Server relatives aux identificateurs. Pour plus d’informations, consultez Identificateurs de base de données.
collation_name
Indique le classement par défaut de la base de données. Le nom du classement peut être un nom de classement Windows ou SQL. Si elle n’est pas spécifiée, la base de données reçoit le classement par défaut, qui est SQL_Latin1_General_CP1_CI_AS.
Pour plus d’informations sur les noms de classement Windows et SQL, COLLATE.
LEDGER = { ON | OFF }
Quand cette option est définie sur ON, une base de données de registre est créée dans laquelle l’intégrité de toutes les données utilisateur est protégée. Seules des tables de registre peuvent être créées dans une base de données de registre. Par défaut, il s’agit de OFF. La valeur de l’option LEDGER ne peut pas être modifiée une fois la base de données créée. Pour plus d’informations, consultez Configurer une base de données de registre.
Notes
Les bases de données dans Azure SQL Database ont plusieurs paramètres par défaut définis lors de la création de la base de données. Pour plus d’informations sur ces paramètres par défaut, consultez la liste de valeurs dans DATABASEPROPERTYEX.
Important
L'instruction CREATE DATABASE doit être la seule instruction dans un lot Transact-SQL.
CREATE DATABASE présente les limitations suivantes :
Les fichiers et les groupes de fichiers ne peuvent pas être définis.
WITHles options ne sont pas prises en charge, à l’exception deWITH LEDGER.Conseil
Pour contourner le problème, utilisez ALTER DATABASE après
CREATE DATABASEafin de définir les options de base de données et d’ajouter des fichiers.
Autorisations
Pour créer une base de données, un login doit être l’un des types d’entités de sécurité suivants :
- La connexion du principal au niveau du serveur
- Administrateur Microsoft Entra pour le serveur logique dans Azure
- Connexion membre du rôle de base de données dbcreator
Exemples
Exemple de base
Exemple de base pour la création d’une base de données.
CREATE DATABASE TestDB1;
Créer une base de données de registre
CREATE DATABASE MyLedgerDB
WITH LEDGER = ON;
Contenu connexe
* Azure Synapse
Analytique*
Azure Synapse Analytics
Vue d’ensemble
Dans Azure Synapse, cette instruction peut être utilisée avec un serveur Azure SQL Database pour créer un pool SQL dédié. Cette instruction implique de spécifier le nom, le classement, la taille maximale, l’édition et l’objectif de service de la base de données.
-
CREATE DATABASEest pris en charge pour les pools SQL dédiés autonomes (anciennement SQL DW) à l’aide des niveaux de service Gen2. -
CREATE DATABASEn’est pas pris en charge pour les pools SQL dédiés dans un espace de travail Azure Synapse Analytics. À la place, utilisez le Portail Azure. -
CREATE DATABASEest pris en charge pour les pools SQL serverless dans Azure Synapse Analytics.
Syntaxe
Pour plus d’informations sur les conventions de la syntaxe, consultez Conventions de la syntaxe Transact-SQL.
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'
}
)
[ ; ]
Les arguments
database_name
Nom de la nouvelle base de données. Ce nom doit être unique sur le serveur SQL, qui peut héberger les bases de données à la fois dans Azure SQL Database et Azure Synapse Analytics, et doit respecter les règles SQL Server applicables aux identificateurs. Pour plus d’informations, consultez Identificateurs de base de données.
collation_name
Indique le classement par défaut de la base de données. Le nom du classement peut être un nom de classement Windows ou SQL. Si elle n’est pas spécifiée, la base de données reçoit le classement par défaut, qui est SQL_Latin1_General_CP1_CI_AS.
Pour plus d’informations sur les noms de classement Windows et SQL, consultez COLLATE.
TAILLE MAX
La valeur par défaut est 245 760 Go (240 To).
S’applique à : Optimisé pour le calcul Gen1
Taille maximale autorisée pour la base de données. La base de données ne peut pas dépasser MAXSIZE.
S’applique à : Optimisé pour le calcul Gen2
Taille maximale autorisée pour les données rowstore dans la base de données. Les données stockées dans les tables rowstore, le deltastore d’un index columnstore ou un index non cluster sur un index columnstore cluster ne peuvent pas dépasser MAXSIZE. Les données compressées au format columnstore n’ont pas de limite de taille et ne sont pas limitées par MAXSIZE.
ÉDITION
Spécifie la couche de service de la base de données. Pour Azure Synapse Analytics, utilisez datawarehouse.
SERVICE_OBJECTIVE
Spécifie la taille de calcul (objectif de service). Les niveaux de service pour Gen2 sont mesurés en unités d’entrepôt de données de calcul (cDWU), par exemple DW2000c. Les niveaux de service Gen1 sont mesurés en unités DWU, par exemple DW2000. Pour plus d’informations sur les objectifs de service d’Azure Synapse, voir Data Warehouse Units (DWU). Les objectifs de service Gen1 (plus répertoriés) ne sont plus pris en charge, vous pouvez recevoir une erreur : Azure SQL Data Warehouse Gen1 has been deprecated in this region. Please use SQL Analytics in Azure Synapse.
Notes
Utilisez DATABASEPROPERTYEX pour afficher les propriétés de la base de données.
Utilisez ALTER DATABASE - Azure Synapse Analytics pour changer la taille maximale ou les valeurs des objectifs de service par la suite.
Azure Synapse est défini COMPATIBILITY_LEVEL 130 sur et ne peut pas être modifié. Pour plus d’informations, consultez le niveau de compatibilité ALTER DATABASE.
Autorisations
Autorisations nécessaires :
- Connexion au principal de niveau serveur, créé par le processus de déploiement ou
- Membre du rôle de base de données dbmanager .
Gestion des erreurs
Si la taille de la base de données atteint MAXSIZE, SQL Server déclenche le code d’erreur 40544. Lorsque cela se produit, vous ne pouvez pas insérer et mettre à jour des données ou créer de nouveaux objets (tels que des tables, des procédures stockées, des vues et des fonctions). Vous pouvez toujours lire et supprimer des données, tronquer des tables, supprimer des tables et des index, et reconstruire des index. Vous pouvez ensuite mettre à jour MAXSIZE avec une valeur supérieure à votre taille de base de données actuelle ou supprimer certaines données afin de libérer de l’espace de stockage. Vous devrez peut-être patienter jusqu’à quinze minutes avant de pouvoir insérer de nouvelles données.
Limites
Vous devez être connecté à la base de données master pour créer une base de données.
L'instruction CREATE DATABASE doit être la seule instruction dans un lot Transact-SQL.
Vous ne pouvez pas modifier le classement de base de données une fois la base de données créée.
Exemples : Azure Synapse Analytics
R. Exemple de base
Exemple de base pour la création d’un pool SQL dédié autonome (anciennement SQL DW). La base de données est créée avec la plus petite taille maximale (10 240 Go), le classement par défaut (SQL_Latin1_General_CP1_CI_AS) et le plus petit objectif de service Gen2 (DW100c).
CREATE DATABASE TestDW
(EDITION = 'datawarehouse', SERVICE_OBJECTIVE = 'DW100c');
B. Créer une base de données de l’entrepôt de données avec toutes les options
Exemple de création d’un pool SQL dédié autonome de 10 téraoctets (anciennement SQL DW).
CREATE DATABASE TestDW COLLATE Latin1_General_100_CI_AS_KS_WS
(MAXSIZE = 10240 GB, EDITION = 'datawarehouse', SERVICE_OBJECTIVE = 'DW1000c');
Chapitre C. Exemple de base dans un pool SQL serverless Synapse Analytics
Cela crée la base de données dans le pool serverless, en spécifiant un classement (Latin1_General_100_CI_AS_KS_WS).
CREATE DATABASE TestDW COLLATE Latin1_General_100_CI_AS_KS_WS;
Contenu connexe
* Plateforme d’analyse
Système (PDW) *
Système de la plateforme d'analyse
Vue d’ensemble
Dans Analytics Platform System, cette instruction permet de créer une nouvelle base de données sur une appliance Analytics Platform System. Utilisez cette instruction pour créer tous les fichiers associés à une base de données d’appliance, et pour définir les options de croissance automatique et de taille maximale pour les tables de base de données et le journal des transactions.
Syntaxe
Pour plus d’informations sur les conventions de la syntaxe, consultez Conventions de la syntaxe Transact-SQL.
CREATE DATABASE database_name
WITH (
[ AUTOGROW = ON | OFF , ]
REPLICATED_SIZE = replicated_size [ GB ] ,
DISTRIBUTED_SIZE = distributed_size [ GB ] ,
LOG_SIZE = log_size [ GB ] )
[ ; ]
Les arguments
database_name
Nom de la nouvelle base de données. Pour plus d’informations sur les noms de base de données autorisés, consultez « Règles de nommage des objets » dans la Documentation du produit Analytics Platform System (PDW).
AUTOGROW = { ON | OFF }
Spécifie si les paramètres replicated_size, distributed_size et log_size augmentent automatiquement au-delà de leurs tailles spécifiées. La valeur par défaut est OFF.
Si AUTOGROW c’est ONle cas, replicated_size, distributed_size et log_size augmentez selon les besoins avec chaque insertion, mise à jour ou autre action nécessitant plus de stockage que celui qui a déjà été alloué.
Si AUTOGROW c’est OFFle cas, les tailles ne se développent pas automatiquement. Analytics Platform System (PDW) retourne une erreur lors de la tentative d’une action nécessitant replicated_size, distributed_size ou log_size de croître au-delà de leur valeur spécifiée.
AUTOGROW est soit pour toutes les tailles, soit ONOFF pour toutes les tailles. Par exemple, il n’est pas possible de définir AUTOGROW ON pour log_size, mais pas de le définir pour replicated_size.
replicated_size [ Go ]
Nombre positif. Définit la taille (en gigaoctets entier ou décimal) pour l’espace total alloué aux tables répliquées et aux données correspondantes sur chaque nœud de calcul. Pour plus d’informations sur les exigences liées aux valeurs replicated_size minimales et maximales, consultez « Valeurs minimales et maximales » dans la documentation sur le produit Analytics Platform System (PDW).
Si AUTOGROW c’est ONle cas, les tables répliquées peuvent dépasser cette limite.
Si AUTOGROW c’est OFFle cas, une erreur est retournée si un utilisateur tente de créer une table répliquée, d’insérer des données dans une table répliquée existante ou de mettre à jour une table répliquée existante de manière à augmenter la taille au-delà de replicated_size.
distributed_size [ Go ]
Nombre positif. Taille (en gigaoctets entier ou décimal) pour l’espace total alloué aux tables distribuées et aux données correspondantes à l’échelle de l’appliance. Pour plus d’informations sur les exigences liées aux valeurs distributed_size minimales et maximales, consultez « Valeurs minimales et maximales » dans la documentation sur le produit Analytics Platform System (PDW).
Si AUTOGROW c’est ONle cas, les tables distribuées sont autorisées à augmenter au-delà de cette limite.
Si AUTOGROW c’est OFFle cas, une erreur est retournée si un utilisateur tente de créer une table distribuée, d’insérer des données dans une table distribuée existante ou de mettre à jour une table distribuée existante de manière à augmenter la taille au-delà de distributed_size.
log_size [ Go ]
Nombre positif. Taille (en gigaoctets entier ou décimal) du journal des transactions à l’échelle de l’appliance.
Pour plus d’informations sur les exigences liées aux valeurs log_size minimales et maximales, consultez « Valeurs minimales et maximales » dans la documentation sur le produit Analytics Platform System (PDW).
Si AUTOGROW c’est ONle cas, le fichier journal est autorisé à augmenter au-delà de cette limite. Utilisez l’instruction DBCC SHRINKLOG - Analytics Platform System (PDW) pour réduire la taille des fichiers journaux à leur taille d’origine.
Si AUTOGROW c’est OFFle cas, une erreur est retournée à l’utilisateur pour toute action qui augmenterait la taille du journal sur un nœud de calcul individuel au-delà de log_size.
Autorisations
Nécessite l’autorisation CREATE ANY DATABASE dans la base de données master ou l’appartenance au rôle serveur fixe sysadmin.
L'exemple suivant fournit l'autorisation de créer une base de données à l'utilisateur de base de données Fay.
USE master;
GO
GRANT CREATE ANY DATABASE TO [Fay];
GO
Notes
Les bases de données sont créées avec le niveau de compatibilité de base de données 120, qui est le niveau de compatibilité pour SQL Server 2014 (12.x). Cela garantit que la base de données peut utiliser toutes les fonctionnalités SQL Server 2014 (12.x) utilisées par PDW.
Limites
L’instruction CREATE DATABASE n’est pas autorisée dans une transaction explicite. Pour plus d’informations, consultez Transact-SQL instructions.
Pour plus d’informations sur les contraintes liées aux bases de données minimales et maximales, consultez « Valeurs minimales et maximales » dans la documentation sur le produit Analytics Platform System (PDW).
Lors de la création d’une base de données, il doit y avoir suffisamment d’espace libre disponible sur chaque nœud de calcul pour allouer le total combiné des tailles suivantes :
- Base de données SQL Server avec des tables de la taille de replicated_table_size.
- Base de données SQL Server avec des tables de la taille de (distributed_table_size / nombre de nœuds de calcul).
- Journaux SQL Server de la taille de (log_size / nombre de nœuds de calcul).
Verrouillage
Prend un verrou partagé sur l’objet DATABASE.
Métadonnées
Une fois cette opération réussie, une entrée pour cette base de données apparaît dans les vues de métadonnées sys.databases et sys.objects .
Exemples : Analytics Platform System (PDW)
R. Exemples simples de création de base de données
L’exemple suivant crée la base de données mytest avec une allocation de stockage de 100 Go par nœud de calcul pour les tables répliquées, 500 Go par appliance pour les tables distribuées et 100 Go par appliance pour le journal des transactions. Dans cet exemple, AUTOGROW est désactivé par défaut.
CREATE DATABASE mytest
WITH
(REPLICATED_SIZE = 100 GB,
DISTRIBUTED_SIZE = 500 GB,
LOG_SIZE = 100 GB );
L’exemple suivant crée la base de données mytest avec les mêmes paramètres, sauf que est AUTOGROW activé. Cela permet à la base de données de croître au-delà des paramètres de taille spécifiés.
CREATE DATABASE mytest
WITH
(AUTOGROW = ON,
REPLICATED_SIZE = 100 GB,
DISTRIBUTED_SIZE = 500 GB,
LOG_SIZE = 100 GB);
B. Créer une base de données avec des valeurs de taille en gigaoctets partielles
L’exemple suivant crée la base de données mytest, avec AUTOGROW désactivé, une allocation de stockage de 1,5 Go par nœud de calcul pour les tables répliquées, 5,25 Go par appliance pour les tables distribuées et 10 Go par appliance pour le journal des transactions.
CREATE DATABASE mytest
WITH
(REPLICATED_SIZE = 1.5 GB,
DISTRIBUTED_SIZE = 5.25 GB,
LOG_SIZE = 10 GB);