Compartir a través de


CREAR BASE DE DATOS

Crea una nueva base de datos.

Seleccione una de las pestañas siguientes para la sintaxis, los argumentos, los comentarios, los permisos y los ejemplos de una versión sql determinada con la que está trabajando.

Selección de un producto

En la fila siguiente, seleccione el nombre del producto que le interese; de esta manera, solo se mostrará la información de ese producto.

* SQL Server *

Servidor SQL

Información general

En SQL Server, esta instrucción crea una base de datos nueva y los archivos usados y sus grupos de archivos. También puede usarse para crear una instantánea de base de datos o adjuntar archivos de base de datos para crear una base de datos de los archivos desasociados de otra base de datos.

Sintaxis

Crear una base de datos.

Para más información sobre las convenciones de sintaxis, vea Convenciones de sintaxis de 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 ]
}

Adjuntar una base de datos:

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
}

Cree una instantánea de base de datos:

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

Argumentos

database_name

El nombre de la nueva base de datos. Los nombres de base de datos deben ser únicos en una instancia de SQL Server y cumplir las reglas de los identificadores.

database_name puede tener un máximo de 128 caracteres, a menos que no se especifique un nombre lógico para el archivo de registro. Si no se especifica un nombre de archivo de registro lógico, SQL Server genera el logical_file_name y el os_file_name para el registro anexando un sufijo a database_name. Esto limita database_name a 123 caracteres, por lo que el nombre de archivo lógico generado tiene como máximo 128 caracteres.

Si no se especifica el nombre del archivo de datos, SQL Server usa database_name como logical_file_name y como os_file_name. La ruta de acceso predeterminada se obtiene del Registro. La ruta de acceso predeterminada se puede cambiar en las Propiedades del servidor (página de configuración de base de datos) en Management Studio. Para cambiar la ruta de acceso predeterminada se requiere reiniciar SQL Server.

CONTENCIÓN = { NINGUNO | PARCIAL }

Se aplica a: SQL Server 2012 (11.x) y versiones posteriores.

Especifica el estado de contención de la base de datos.

  • NONE = base de datos no independiente.
  • PARTIAL = base de datos parcialmente independiente.

ACTIVAR

Especifica que los archivos de disco utilizados para almacenar las secciones de datos de la base de datos (archivos de datos) se definen explícitamente. ON es necesario cuando va seguido de una lista separada por comas de elementos que definen los archivos de <filespec> datos para el grupo de archivos principal. La lista de archivos del grupo de archivos principal puede ir seguida de una lista opcional de elementos separados por comas que definen los grupos de archivos de <filegroup> usuario y sus archivos.

Primario

Especifica que la lista asociada <filespec> define el archivo principal. El primer archivo especificado en la <filespec> entrada del grupo de archivos principal se convierte en el archivo principal. Una base de datos solo puede tener un archivo principal. Para obtener más información, consulte Archivos de base de datos y grupos de archivos.

Si PRIMARY no se especifica, el primer archivo que aparece en la CREATE DATABASE instrucción se convierte en el archivo principal.

INICIAR SESIÓN

Especifica que los archivos de disco utilizados para almacenar el registro de la base de datos (archivos de registro) se definen explícitamente. LOG ON le sigue una lista separada por comas de elementos que definen los archivos de <filespec> registro. Si LOG ON no se especifica, se crea automáticamente un archivo de registro, que tiene un tamaño que es el 25 % de la suma de todos los archivos de datos de la base de datos o 512 KB, lo que sea mayor. Este archivo se coloca en la ubicación del archivo de registro predeterminado. Para obtener información sobre esta ubicación, vea Ver o cambiar las ubicaciones predeterminadas de los archivos de datos y de registro.

LOG ON no se puede especificar en una instantánea de base de datos.

COTEJAR collation_name

Especifica la intercalación predeterminada de la base de datos. El nombre de intercalación puede ser un nombre de intercalación de Windows o un nombre de intercalación de SQL. Si no se especifica, se asigna a la base de datos la intercalación predeterminada de la instancia de SQL Server. No se puede especificar un nombre de intercalación en una instantánea de base de datos.

No se puede especificar un nombre de intercalación con las FOR ATTACH cláusulas o FOR ATTACH_REBUILD_LOG . Para obtener información acerca de cómo cambiar la intercalación de una base de datos adjunta, vea Establecer o cambiar la intercalación de la base de datos.

Para obtener más información sobre los nombres de intercalación de Windows y SQL, vea COLLATE.

Nota

Las bases de datos independientes se intercalan de modo diferente al de las bases de datos dependientes. Para obtener más información, consulte Intercalaciones de base de datos independientes.

<Opción> WITH

<filestream_option>

  • NON_TRANSACTED_ACCESS = { DESACTIVADO | READ_ONLY | COMPLETO }

    Se aplica a: SQL Server 2012 (11.x) y versiones posteriores.

    Especifica el nivel de acceso no transaccional de FILESTREAM a la base de datos.

    Importancia Descripción
    OFF El acceso no transaccional está deshabilitado.
    READONLY Los procesos no transaccionales pueden leer los datos de FILESTREAM en esta base de datos.
    FULL El acceso no transaccional total a objetos FileTable de FILESTREAM está habilitado.
  • DIRECTORY_NAME = <directory_name>

    Se aplica a: SQL Server 2012 (11.x) y versiones posteriores.

    Un nombre de directorio compatible con Windows. Este nombre debe ser único entre todos los nombres de Database_Directory en la instancia de SQL Server. La comparación de unicidad no distingue mayúsculas de minúsculas, independientemente de la configuración de intercalación de SQL Server. Esta opción se debe establecer antes de crear un objeto FileTable en esta base de datos.

    Las siguientes opciones solo se pueden permitir cuando CONTAINMENT se ha establecido en PARTIAL. Si CONTAINMENT se establece en NONE, se producen errores.

DEFAULT_FULLTEXT_LANGUAGE = <lcid> | <nombre de idioma> | <alias de idioma>

Se aplica a: SQL Server 2012 (11.x) y versiones posteriores.

Consulte Configuración del servidor: idioma de texto completo predeterminado para obtener una descripción completa de esta opción.

DEFAULT_LANGUAGE = <lcid> | <nombre de idioma> | <alias de idioma>

Se aplica a: SQL Server 2012 (11.x) y versiones posteriores.

Consulte Configuración del servidor: idioma predeterminado para obtener una descripción completa de esta opción.

NESTED_TRIGGERS = { DESACTIVADO | EN }

Se aplica a: SQL Server 2012 (11.x) y versiones posteriores.

Consulte Configuración del servidor: desencadenadores anidados para obtener una descripción completa de esta opción.

TRANSFORM_NOISE_WORDS = { DESACTIVADO | EN }

Se aplica a: SQL Server 2012 (11.x) y versiones posteriores.

Consulte Configuración del servidor: transformar palabras irrelevantes para obtener una descripción completa de esta opción.

TWO_DIGIT_YEAR_CUTOFF = { 2049 | <cualquier año entre 1753 y 9999> }

Cuatro dígitos que representan un año. El valor predeterminado es 2049. Consulte Configuración del servidor: límite de año de dos dígitos para obtener una descripción completa de esta opción.

DB_CHAINING { DESACTIVADO | EN }

Cuando ON se especifica, la base de datos puede ser el origen o destino de una cadena de propiedad entre bases de datos.

Cuando OFFes , la base de datos no puede participar en el encadenamiento de propiedad entre bases de datos. El valor predeterminado es OFF.

Importante

La instancia de SQL Server reconoce esta configuración cuando la opción del servidor de encadenamiento de propiedad entre bases de datos es 0 (OFF). Cuando el encadenamiento de propiedad entre bases de datos es 1 (ON), todas las bases de datos de usuario pueden participar en cadenas de propiedad entre bases de datos, independientemente del valor de esta opción. Esta opción se establece mediante sp_configure.

Para establecer esta opción, requiere la pertenencia al rol fijo de servidor sysadmin . La DB_CHAINING opción no se puede establecer en estas bases de datos del sistema: master, model, tempdb.

CONFIABLE { DESACTIVADO | EN }

Cuando ON se especifica, los módulos de base de datos (por ejemplo, vistas, funciones definidas por el usuario o procedimientos almacenados) que usan un contexto de suplantación pueden acceder a recursos fuera de la base de datos.

Cuando OFF, los módulos de base de datos de un contexto de suplantación no pueden acceder a los recursos fuera de la base de datos. El valor predeterminado es OFF.

TRUSTWORTHY se establece OFF en cada vez que se adjunta la base de datos.

De forma predeterminada, todas las bases de datos del sistema excepto la msdb base de datos se han TRUSTWORTHY establecido en OFF. El valor no se puede cambiar para las model bases de datos y tempdb . Se recomienda que nunca establezca la TRUSTWORTHY opción en ON para la master base de datos.

PERSISTENT_LOG_BUFFER = ON ( DIRECTORY_NAME = 'directory_name' )

Se aplica a: SQL Server 2017 (14.x) y versiones posteriores

Cuando se especifica esta opción, se crea el búfer de registro de transacciones en un volumen que se encuentra en un dispositivo de disco respaldado por la memoria de clase de almacenamiento (almacenamiento permanente de NVDIMM-N), también conocido como un búfer de registro persistente. Para obtener más información, consulte aceleración de latencia de confirmación de transacciones mediante de memoria de clase de almacenamiento y Agregar búfer de registro persistente a una base de datos.

LEDGER = { ON | OFF }

Cuando se establece en ON, crea una base de datos de libro de contabilidad, en la que se protege la integridad de todos los datos de usuario. Solo se pueden crear tablas de libro de contabilidad en una base de datos de libro de contabilidad. El valor predeterminado es OFF. El valor de la LEDGER opción no se puede cambiar una vez creada la base de datos. Para más información, consulte Configuración de una base de datos de libro de contabilidad.

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

Especifica que la base de datos se crea adjuntando un conjunto existente de archivos del sistema operativo. Debe haber una <filespec> entrada que especifique el archivo principal. Las únicas otras <filespec> entradas necesarias son las de los archivos que tienen una ruta de acceso diferente de cuando se creó la base de datos por primera vez o se adjuntó por última vez. Se debe especificar una <filespec> entrada para estos archivos.

FOR ATTACH Requiere:

  • Todos los archivos de datos (MDF y NDF) deben estar disponibles.
  • Si hay varios archivos de registro, todos ellos deben estar disponibles.

Si una base de datos de lectura y escritura tiene un único archivo de registro que no está disponible actualmente y si la base de datos se cerró sin usuarios ni transacciones abiertas antes de la ATTACH operación, FOR ATTACH recompila automáticamente el archivo de registro y actualiza el archivo principal. En cambio, para una base de datos de solo lectura, el registro no se puede volver a generar porque no se puede actualizar el archivo principal. Por lo tanto, al adjuntar una base de datos de solo lectura con un registro que no está disponible, debe proporcionar los archivos de registro o los archivos de la FOR ATTACH cláusula .

Nota

Una base de datos creada por una versión más reciente de SQL Server no se puede adjuntar en versiones anteriores.

En SQL Server, los archivos de texto completo que forman parte de la base de datos que se adjunta se adjuntan a la base de datos. Para especificar una nueva ruta de acceso al catálogo de texto completo, escriba la nueva ubicación sin incluir el nombre de archivo de texto completo del sistema operativo. Para más información, consulte Ejemplos.

Al adjuntar una base de datos que contiene una opción FILESTREAM de "Nombre de directorio", se solicita a SQL Server que compruebe que el Database_Directory nombre es único. Si no es así, se produce un error en la ATTACH operación, FILESTREAM Database_Directory name is not unique in this SQL Server instance. Para evitar este error, se debe pasar a esta operación el parámetro opcional directory_name.

FOR ATTACH no se puede especificar en una instantánea de base de datos.

FOR ATTACH puede especificar la RESTRICTED_USER opción . RESTRICTED_USER permite que solo los miembros del rol fijo de base de datos db_owner y los roles fijos de servidor dbcreator y sysadmin se conecten a la base de datos, pero no limiten su número. Los intentos de los usuarios no calificados se rechazarán.

<service_broker_option>

Si la base de datos utiliza Service Broker, utilice el en la WITH <service_broker_option>FOR ATTACH cláusula:

Controla la entrega de mensajes de Service Broker y el identificador de Service Broker para la base de datos. Las opciones de Service Broker solo se pueden especificar cuando se utiliza la FOR ATTACH cláusula.

ENABLE_BROKER

Indica que se habilite Service Broker para la base de datos especificada. Dicho de otro modo, se inicia la entrega de mensajes y se establece is_broker_enabled en true en la vista de catálogo sys.databases. La base de datos conserva el identificador de Service Broker existente.

NEW_BROKER

Crea un nuevo valor service_broker_guid en sys.databases y en la base de datos restaurada. Finaliza todos los extremos de conversación con una limpieza. El agente se habilita, pero no se envía ningún mensaje a los extremos de conversación remotos. Cualquier ruta que haga referencia al identificador de Service Broker anterior se debe volver a crear con el nuevo identificador.

ERROR_BROKER_CONVERSATIONS

Finaliza todas las conversaciones con un error que indica que la base de datos está adjunta o restaurada. El agente está deshabilitado hasta que finaliza esta operación y, después, se habilita. La base de datos conserva el identificador de Service Broker existente.

Al adjuntar una base de datos replicada que se copió en lugar de desasociarla, tenga en cuenta lo siguiente:

  • Si adjunta la base de datos a la misma versión e instancia de servidor que la base de datos original, no es necesario realizar ningún paso adicional.
  • Si adjunta la base de datos a la misma instancia de servidor pero con una versión actualizada, debe ejecutar sp_vupgrade_replication para actualizar la replicación una vez que se complete la operación de adjuntar.
  • Si adjunta la base de datos a una instancia de servidor diferente, independientemente de la versión, debe ejecutar sp_removedbreplication para quitar la replicación una vez que se complete la operación de adjuntar.

Nota

La asociación funciona con el formato de almacenamiento vardecimal, pero el Motor de base de datos de SQL Server tiene que actualizarse al menos a SQL Server 2005 (9.x) SP2. No se puede adjuntar una base de datos mediante el formato de almacenamiento vardecimal a una versión anterior de SQL Server. Para obtener más información sobre el formato de almacenamiento vardecimal , consulte Compresión de datos.

Cuando una base de datos se adjunta por primera vez o se restaura a una nueva instancia de SQL Server, todavía no se almacena una copia de la clave maestra de base de datos (cifrada por la clave maestra de servicio) en el servidor. Debe usar la instrucción OPEN MASTER KEY para descifrar la clave maestra de la base de datos (DMK). Una vez que se ha descifrado la clave maestra de la base de datos, tiene la posibilidad de habilitar el descifrado automático en el futuro usando la instrucción ALTER MASTER KEY REGENERATE para proporcionar al servidor una copia de la clave maestra de la base de datos cifrada con la clave maestra de servicio (SMK). Cuando una base de datos se haya actualizado desde una versión anterior, se debe volver a generar la DMK para usar el algoritmo AES más reciente. Para obtener más información sobre cómo volver a generar la DMK, vea ALTER MASTER KEY. El tiempo necesario para volver a generar la DMK con el fin de actualizarse a AES depende del número de objetos protegidos por la DMK. La regeneración de la clave DMK para actualizar a AES solo es necesaria una vez y no tiene ningún efecto en las futuras regeneraciones como parte de una estrategia de rotación de claves. Para obtener información sobre cómo actualizar una base de datos mediante la asociación, consulte Actualización de una base de datos mediante desasociación y asociación.

Importante

Se recomienda no adjuntar bases de datos de orígenes desconocidos o que no sean de confianza. Es posible que dichas bases de datos contengan código malintencionado que podría ejecutar código de Transact-SQL no deseado o provocar errores al modificar el esquema o la estructura de la base de datos física. Para usar una base de datos desde un origen desconocido o que no sea de confianza, ejecute DBCC CHECKDB en la base de datos de un servidor que no sea de producción y examine también el código, como procedimientos almacenados u otro código definido por el usuario, en la base de datos.

Nota

Las TRUSTWORTHY opciones y DB_CHAINING no tienen ningún efecto al adjuntar una base de datos.

PARA ATTACH_REBUILD_LOG

Especifica que la base de datos se crea adjuntando un conjunto existente de archivos del sistema operativo. Esta opción está limitada a las bases de datos de lectura y escritura. Debe haber una <filespec> entrada que especifique el archivo principal. Si no se encuentran uno o varios archivos de registro de transacciones, se volverá a generar el archivo de registro. ATTACH_REBUILD_LOG crea automáticamente un nuevo archivo de registro de 1 MB. Este archivo se coloca en la ubicación del archivo de registro predeterminado. Para obtener información sobre esta ubicación, vea Ver o cambiar las ubicaciones predeterminadas de los archivos de datos y de registro.

Nota

Si los archivos de registro están disponibles, el Motor de base de datos usa esos archivos en lugar de volver a generar los archivos de registro.

FOR ATTACH_REBUILD_LOG requiere las siguientes condiciones:

  • Un cierre limpio de la base de datos.
  • Todos los archivos de datos (MDF y NDF) deben estar disponibles.

Importante

Esta operación interrumpe la cadena de copias de seguridad de registros. Se recomienda realizar una copia de seguridad completa de la base de datos inmediatamente después de completar la operación. Para obtener más información, vea BACKUP.

Normalmente, FOR ATTACH_REBUILD_LOG se utiliza cuando se copia una base de datos de lectura/escritura con un registro grande en otro servidor donde la copia se utilizará principalmente, o sólo, para operaciones de lectura y, por lo tanto, requiere menos espacio de registro que la base de datos original.

FOR ATTACH_REBUILD_LOG no se puede especificar en una instantánea de base de datos.

Para obtener más información sobre cómo adjuntar y desasociar bases de datos, vea Desasociación y asociación de bases de datos (SQL Server).

<Especarchivo>

Controla las propiedades de archivo.

NOMBRE logical_file_name

Especifica un nombre lógico para el archivo. NAME es necesario cuando FILENAME se especifica, excepto cuando se especifica una de las FOR ATTACH cláusulas. Un FILESTREAM grupo de archivos no se puede denominar PRIMARY.

  • logical_file_name

    Nombre lógico que se usa en SQL Server al hacer referencia al archivo. Logical_file_name debe ser único en la base de datos y debe cumplir las mismas reglas que los identificadores. El nombre puede ser una constante de caracteres o Unicode, o un identificador regular o delimitado.

NOMBRE DE ARCHIVO { 'os_file_name' | 'filestream_path' }

Especifica el nombre de archivo (físico) del sistema operativo.

  • os_file_name

    Ruta de acceso y nombre de archivo que usa el sistema operativo al crear el archivo. El archivo debe residir en uno de los siguientes dispositivos: el servidor local en el que se ha instalado SQL Server, una red de área de almacenamiento (SAN) o una red basada en iSCSI. La ruta de acceso especificada debe existir antes de ejecutar la CREATE DATABASE instrucción . Para obtener más información, consulte Archivos y grupos de archivos de base de datos más adelante en este artículo.

    SIZE, MAXSIZEy FILEGROWTH los parámetros se pueden establecer cuando se especifica una ruta UNC para el archivo.

    Si el archivo se encuentra en una partición sin formato, os_file_name solo debe indicar la letra de unidad de una partición sin formato existente. Solo se puede crear un archivo de datos en cada partición sin procesar.

    Nota

    Las particiones sin procesar no se admiten en SQL Server 2014 (12.x) ni en versiones posteriores.

    Los archivos de datos no deben colocarse en sistemas de archivos comprimidos a menos que los archivos sean archivos secundarios de solo lectura o que la base de datos sea de solo lectura. Los archivos de registro no se deben almacenar en sistemas de archivos comprimidos.

  • filestream_path

    Para un grupo de archivos FILESTREAM, FILENAME hace referencia a una ruta de acceso donde se almacenarán los datos filestream. La ruta de acceso hasta la última carpeta debe existir y la última carpeta no debe existir. Por ejemplo, si especifica la ruta de acceso C:\MyFiles\MyFilestreamData, C:\MyFiles debe existir antes de ejecutar ALTER DATABASE, pero la MyFilestreamData carpeta no debe existir.

    El grupo de archivos y el archivo (<filespec>) se deben crear en la misma instrucción.

    Las SIZE propiedades y FILEGROWTH no se aplican a un grupo de archivos FILESTREAM.

TAMAÑO tamaño

Especifica el tamaño del archivo.

SIZE no se puede especificar cuando el os_file_name se especifica como ruta de acceso UNC. SIZE no se aplica a un grupo de archivos FILESTREAM.

  • tamaño

    Tamaño inicial del archivo.

    Cuando el tamaño no se proporciona para el archivo principal, el motor de base de datos usa el tamaño del archivo principal de la model base de datos. El tamaño predeterminado de la base de datos model es de 8 MB (a partir de SQL Server 2016 (13.x)) o 1 MB (para versiones anteriores). Cuando se especifica un archivo de datos secundario o un archivo de registro, pero no se especifica el tamaño del archivo, el motor de base de datos convierte el archivo en 8 MB (a partir de SQL Server 2016 (13.x)) o 1 MB (para versiones anteriores). El tamaño especificado para el archivo principal debe tener al menos el tamaño del archivo principal de la base de datos model.

    Se pueden utilizar los sufijos kilobyte (KB), megabyte (MB), gigabyte (GB) o terabyte (TB). El valor predeterminado es MB. Especifique un número entero. No incluya un decimal. size es un valor entero. Para los valores mayores que 2.147.483.647, use unidades más grandes.

MAX_SIZE MAXSIZE

Especifica el tamaño máximo que puede alcanzar el archivo. MAXSIZE no se puede especificar cuando el os_file_name se especifica como ruta de acceso UNC.

  • max_size

    Tamaño máximo del archivo. Se pueden utilizar los sufijos KB, MB, GB y TB. El valor predeterminado es MB. Especifique un número entero. No incluya un decimal. Si no se especifica max_size, el archivo crece hasta que el disco está lleno. Max_size es un valor entero. Para valores mayores que 2147483647, utilice unidades más grandes.

  • ILIMITADO

    Especifica que el archivo crecerá hasta que el disco esté lleno. En SQL Server, si se especifica un crecimiento ilimitado para un archivo de registro, su tamaño máximo será de 2 TB, y para un archivo de datos será de 16 TB.

    Nota

    No hay ningún tamaño máximo cuando se especifica esta opción para un contenedor FILESTREAM. Continúa creciendo hasta que el disco se completa.

GROWTH_INCREMENT FILEGROWTH

Especifica el incremento de crecimiento automático del archivo. La FILEGROWTH configuración de un archivo no puede superar la MAXSIZE configuración. FILEGROWTH no se puede especificar cuando el os_file_name se especifica como ruta de acceso UNC. FILEGROWTH no se aplica a un grupo de archivos FILESTREAM.

  • growth_increment

    Cantidad de espacio agregado al archivo cada vez que se requiere espacio nuevo.

    El valor se puede especificar en KB, MB, GB, TBo porcentaje (%). Si se especifica un número sin un KBsufijo , MBo % , el valor predeterminado es MB. Cuando % se especifica , el tamaño del incremento de crecimiento es el porcentaje especificado del tamaño del archivo en el momento en que se produce el incremento. El tamaño especificado se redondea al múltiplo de 64 KB más cercano y el valor mínimo es 64 KB.

    El valor 0 indica que el crecimiento automático está desactivado y no se permite más espacio.

    Si FILEGROWTH no se especifica, los valores predeterminados son:

    Versión Valores predeterminados
    A partir de SQL Server 2016 (13.x) Datos: 64 MB. Archivos de registro: 64 MB.
    A partir de SQL Server 2005 (9.x) Datos: 1 MB. Archivos de registro: 10 %.
    Antes de SQL Server 2005 (9.x) Datos: 10 %. Archivos de registro: 10 %.

<Grupo de archivos>

Controla las propiedades del grupo de archivos. No se puede especificar el grupo de archivos en una instantánea de base de datos.

FILEGROUP_NAME FILEGROUP

Nombre lógico del grupo de archivos.

  • filegroup_name

    filegroup_name debe ser único en la base de datos y no puede ser los nombres PRIMARY proporcionados por el sistema y PRIMARY_LOG. El nombre puede ser una constante de caracteres o Unicode, o un identificador regular o delimitado. El nombre debe cumplir las reglas de los identificadores.

  • CONTIENE FILESTREAM

    Especifica que el grupo de archivos almacena objetos binarios grandes (BLOB) de FILESTREAM en el sistema de archivos.

  • PREDETERMINADO

    Especifica que el grupo de archivos indicado es el grupo de archivos predeterminado de la base de datos.

  • CONTIENE MEMORY_OPTIMIZED_DATA

    Se aplica a: SQL Server 2014 (12.x) y versiones posteriores.

    Especifica que el grupo de archivos almacena los datos memory_optimized en el sistema de archivos. Para obtener más información, consulte In-Memory escenarios de uso y información general de OLTP. Solo se permite un MEMORY_OPTIMIZED_DATA grupo de archivos por base de datos. Para que los ejemplos de código que crean un grupo de archivos almacenen datos optimizados para memoria, consulte Crear una tabla con optimización para memoria y un procedimiento almacenado compilado de forma nativa.

database_snapshot_name

Nombre de la nueva instantánea de base de datos. Los nombres de instantánea de base de datos deben ser únicos dentro de una instancia de SQL Server y cumplir las reglas de los identificadores. database_snapshot_name puede tener un máximo de 128 caracteres.

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

Para la creación de una instantánea de base de datos, especifica una lista de archivos de la base de datos de origen. Para que la instantánea funcione, todos los archivos de datos deben especificarse individualmente. Sin embargo, los archivos de registro no se permiten para las instantáneas de base de datos. Los grupos de archivos FILESTREAM no son compatibles con las instantáneas de base de datos. Si se incluye un archivo de datos FILESTREAM en una CREATE DATABASE ON cláusula , se produce un error en la instrucción y se genera un error.

Para obtener descripciones de NAME y FILENAME sus valores, vea las descripciones de los valores equivalentes <filespec> .

Nota

Al crear una instantánea de base de datos, no se permiten las demás <filespec> opciones y la palabra clave PRIMARY .

AS SNAPSHOT OF nombre_de_base_de_datos_de_origen

Indica que la base de datos que se va a crear es una instantánea de base de datos de origen especificada en source_database_name. La instantánea y la base de datos de origen deben estar en la misma instancia.

En SQL Server 2017 (14.x) y versiones anteriores, la base de datos de origen de una instantánea de base de datos no pudo contener un MEMORY_OPTIMIZED_DATA grupo de archivos. Se ha agregado compatibilidad con instantáneas de base de datos en memoria en SQL Server 2019 (15.x).

Para más información, vea Instantáneas de base de datos.

Observaciones

Cada vez que se crea, modifica o quita una base de datos de usuario, se debe hacer una copia de seguridad de la base de datos maestra.

La CREATE DATABASE instrucción debe ejecutarse en modo de confirmación automática (el modo de administración de transacciones predeterminado) y no se permite en una transacción explícita o implícita.

Se puede usar una instrucción CREATE DATABASE para crear una base de datos y los archivos donde se almacena. SQL Server implementa la CREATE DATABASE instrucción mediante los pasos siguientes:

  1. SQL Server usa una copia de la base de datos modelo para inicializar la base de datos y sus metadatos.
  2. Se asigna un GUID de Service Broker a la base de datos.
  3. A continuación, el Motor de base de datos rellena el resto de la base de datos con páginas vacías, excepto las páginas que tengan datos internos que registran cómo se emplea el espacio en la base de datos.

En una instancia de SQL Serverse pueden especificar 32.767 bases de datos como máximo.

Cada base de datos tiene un propietario que puede realizar actividades especiales en ella. El propietario es el usuario que crea la base de datos. El propietario de la base de datos se puede cambiar mediante ALTER AUTHORIZATION.

Algunas características de la base de datos dependen de características o capacidades que están en el sistema de archivos para que la base de datos funcione completamente. Estos son algunos ejemplos de características que dependen de un conjunto de características del sistema de archivos:

  • DBCC CHECKDB
  • Secuencia de archivos
  • Copias de seguridad en línea con VSS e instantáneas de archivos
  • Creación de instantáneas de bases de datos
  • Grupo de archivos de datos optimizados para memoria

Archivos de base de datos y grupos de archivos

Todas las bases de datos tienen al menos dos archivos (un archivo principal y un archivo de registro de transacciones) y un grupo de archivos como mínimo. Para cada base de datos pueden especificarse hasta 32.767 archivos y 32.767 grupos de archivos.

Cuando cree una base de datos, defina el mayor tamaño posible para los archivos de datos según la cantidad de datos máxima prevista para la base datos.

Se recomienda usar una red de área de almacenamiento (SAN), una red basada en iSCSI o un disco conectado localmente para almacenar los archivos de base de datos de SQL Server, porque esta configuración optimiza el rendimiento y la confiabilidad de SQL Server.

Instantáneas de base de datos

Se puede utilizar la instrucción CREATE DATABASE para crear una vista estática de solo lectura, es decir, una instantánea de la base de datos de origen. Desde el punto de vista transaccional, una instantánea de base de datos es coherente con la base de datos de origen tal como se encontraba en el momento de crear la instantánea. Una base de datos de origen puede tener varias instantáneas.

Nota

Al crear una instantánea de base de datos, la CREATE DATABASE instrucción no puede hacer referencia a archivos de registro, archivos sin conexión, restaurar archivos y archivos inactivos.

Si se produce un error al crear una instantánea de base de datos, se sospecha de la instantánea y debe eliminarse. Para obtener más información, vea DROP DATABASE.

Cada instantánea se conserva hasta que se elimina mediante DROP DATABASE.

Para obtener más información, vea Instantáneas de base de datos (SQL Server) y Creación de una instantánea de base de datos.

Opciones de base de datos

Cuando se crea una base de datos, se establecen automáticamente varias opciones de base de datos. Para obtener una lista de estas opciones, consulte OPCIONES ALTER DATABASE SET.

Base de datos modelo y creación de nuevas bases de datos

Todos los objetos definidos por el usuario en la base de datos modelo se copiarán en todas las bases de datos recién creadas. Puede agregar a la base de datos model todos los objetos (tablas, vistas, procedimientos almacenados, tipos de datos, etc.) que desee incluir en todas las bases de datos creadas recientemente.

Al especificar una instrucción CREATE DATABASE <database_name> sin parámetros de tamaño adicionales, el archivo de datos principal pasa a tener el mismo tamaño que el archivo principal de la base de datos model.

A menos que se especifique FOR ATTACH, todas las bases de datos nuevas heredan los valores de las opciones de la base de datos model. Por ejemplo, la opción de base de datos de reducción automática se establece en true en la base de datos model y en cualquier base de datos nueva que se cree. Si se cambian las opciones de la base de datos model, los nuevos valores de estas opciones se utilizarán en las nuevas bases de datos que se creen. El cambio de operaciones en la model base de datos no afecta a las bases de datos existentes. Si se especifica FOR ATTACH en la CREATE DATABASE instrucción , la nueva base de datos hereda la configuración de la opción de base de datos de la base de datos original.

Visionado de la información de la base de datos

Se pueden utilizar vistas de catálogo, funciones del sistema y procedimientos almacenados del sistema para devolver información sobre bases de datos, archivos y grupos de archivos. Para obtener más información, consulte Vistas del sistema.

Permisos

Requiere el permiso CREATE DATABASE, CREATE ANY DATABASE o ALTER ANY DATABASE.

Para mantener el control sobre el uso del disco en una instancia de SQL Server, el permiso para crear bases de datos suele limitarse a algunos inicios de sesión.

En el ejemplo siguiente se proporciona el permiso para crear una base de datos al usuario Fayde la base de datos .

USE master;
GO

GRANT CREATE DATABASE TO [Fay];
GO

Permisos en los archivos de datos y de registro

En SQL Server, algunos permisos se establecen en los archivos de datos y de registro de cada base de datos. Siempre que se realizan las operaciones siguientes en una base de datos, se establecen estos permisos:

  • Adjuntada
  • Realización de copia de seguridad
  • Creado
  • Separada
  • Modificada para agregar un nuevo archivo
  • Restaurada

Los permisos evitan que los archivos se modifiquen accidentalmente si residen en un directorio sin restricción de permisos.

Nota

Microsoft SQL Server 2005 Express Edition no establece permisos de archivo de registro ni datos.

Ejemplos

Un. Creación de una base de datos sin especificar archivos

En este ejemplo se crea la base de datos mytest, y los archivos principal y de registro de transacciones correspondientes. Dado que la instrucción no <filespec> tiene elementos, el archivo de base de datos principal tiene el tamaño del archivo principal de la model base de datos. El registro de transacciones se establece en el mayor de estos valores: 512 KB o el 25 % del tamaño del archivo de datos principal. Dado MAXSIZE que no se especifica, los archivos pueden crecer para rellenar todo el espacio en disco disponible. En este ejemplo también se muestra la forma de quitar la base de datos denominada mytest si existe, antes de crear la base de datos 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. Creación de una base de datos que especifica los archivos de datos y de registro de transacciones

En el ejemplo siguiente se crea la base de datos Sales. Dado que la palabra clave PRIMARY no se usa, el primer archivo (Sales_dat) se convierte en el archivo principal. Dado que ni MB ni KB se especifican en el SIZE parámetro para el Sales_dat archivo, usa MB y se asigna en megabytes. Cada vez que se crea, modifica o quita una base de datos de usuario, se debe hacer una copia de seguridad de la base de datos Sales_log se asigna en megabytes porque el sufijo MB se ha indicado explícitamente en el parámetro 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

C. Creación de una base de datos especificando múltiples archivos de datos y de registro de transacciones

En el ejemplo siguiente se crea la base de datos Archive, que tiene tres archivos de datos de 100-MB y dos archivos de registro de transacciones de 100-MB. El archivo principal es el primer archivo de la lista y se especifica explícitamente con la palabra clave PRIMARY. Los archivos de registro de transacciones se especifican a continuación de las palabras clave LOG ON. Tenga en cuenta las extensiones usadas para los archivos en la opción FILENAME: .mdf se usa para archivos de datos principales, .ndf para archivos de datos secundarios y .ldf para archivos de registro de transacciones. En este ejemplo se coloca la base de datos en la unidad D:, en lugar de con la base de datos 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. Creación de una base de datos que tenga grupos de archivos

En el ejemplo siguiente se crea la base de datos Sales, que tiene los siguientes grupos de archivos:

  • El grupo de archivos principal, con los archivos Spri1_dat y Spri2_dat. Los FILEGROWTH incrementos de estos archivos se especifican como 15%.
  • Un grupo de archivos denominado SalesGroup1, con los archivos SGrp1Fi1 y SGrp1Fi2.
  • Un grupo de archivos denominado SalesGroup2, con los archivos SGrp2Fi1 y SGrp2Fi2.

En este ejemplo se colocan los archivos de datos y de registro en discos diferentes para mejorar el rendimiento.

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. Adjuntar una base de datos

En el ejemplo siguiente se separa la base de datos Archive creada en el ejemplo D y, a continuación, se adjunta mediante la cláusula FOR ATTACH. Archive se ha definido para contener varios archivos de datos y de registro. Sin embargo, dado que la ubicación de los archivos no ha cambiado desde que se crearon, solo el archivo principal debe especificarse en la FOR ATTACH cláusula . A partir de SQL Server 2005 (9.x), los archivos de texto completo que forman parte de la base de datos que se adjunta se adjuntan a la base de datos.

USE master;
GO

EXECUTE sp_detach_db Archive;
GO

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

F. Crear una instantánea de base de datos

En el ejemplo siguiente se crea la instantánea de base de datos sales_snapshot0600. Dado que una instantánea de base de datos es de solo lectura, no se puede especificar un archivo de registro. Conforme a la sintaxis, no se especifican todos los archivos de la base de datos de origen y no se especifican grupos de archivos.

La base de datos de origen en este ejemplo es la base de datos Sales creada en el ejemplo 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. Creación de una base de datos y especificar un nombre de intercalación y sus opciones

En el ejemplo siguiente se crea la base de datos MyOptionsTest. Se especifica un nombre de intercalación y las opciones TRUSTYWORTHY y DB_CHAINING se establecen en 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. Inclusión de un catálogo de texto completo que se ha movido como datos adjuntos

En el ejemplo siguiente se adjunta el catálogo de texto completo AdvWksFtCat junto con los archivos de datos y de registro de AdventureWorks2025. En el ejemplo, el catálogo de texto completo se mueve desde su ubicación predeterminada hasta una nueva ubicación c:\myFTCatalogs. Los archivos de datos y de registro permanecen en sus ubicaciones predeterminadas.

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

Yo. Creación una base de datos que especifique un grupo de archivos de filas y dos grupos de archivos FILESTREAM

En el ejemplo siguiente se crea la base de datos FileStreamDB. La base de datos se crea con un grupo de archivos de filas y dos grupos de archivos FILESTREAM. Cada grupo de archivos contiene un archivo:

  • FileStreamDB_data contiene los datos de fila. Contiene un archivo, FileStreamDB_data.mdf con la ruta de acceso predeterminada.

  • FileStreamPhotos contiene los datos FILESTREAM. Contiene dos contenedores de datos FILESTREAM: FSPhotos, que se encuentra en C:\MyFSfolder\Photos, y FSPhotos2, que se encuentra en D:\MyFSfolder\Photos. Se marca como el grupo de archivos FILESTREAM predeterminado.

  • FileStreamResumes contiene los datos FILESTREAM. Contiene un contenedor de datos FILESTREAM, FSResumes, que se encuentra en C:\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. Creación de una base de datos que tenga un grupo de archivos FILESTREAM con varias filas

En el ejemplo siguiente se crea la base de datos BlobStore1. La base de datos se crea con un grupo de archivos de filas y un grupo de archivos FILESTREAM, FS. El grupo de archivos FILESTREAM contiene dos archivos, FS1 y FS2. Después, la base de datos se altera agregando un tercer archivo, FS3, al grupo de archivos 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

* Base de datos SQL *

Base de datos SQL

Información general

En Azure SQL Database, esta instrucción puede usarse con un servidor Azure SQL para crear una base de datos única o una base de datos en un grupo elástico. Con esta instrucción, se especifica el nombre de la base de datos, la intercalación, el tamaño máximo, la edición, el objetivo de servicio y, si corresponde, el grupo elástico para la nueva base de datos. También puede usarse para crear la base de datos en un grupo elástico. Además, puede utilizarse para crear una copia de la base de datos en otro servidor de SQL Database.

Sintaxis

Crear una base de datos

Para más información sobre las convenciones de sintaxis, vea Convenciones de sintaxis de 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>) } } )
}

Copia de una base de datos

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

Argumentos

database_name

El nombre de la nueva base de datos. Este nombre debe ser único en el servidor SQL Server y debe cumplir las reglas de SQL Server para los identificadores. Para obtener más información, consulte Identificadores de base de datos.

collation_name

Especifica la intercalación predeterminada de los datos de la base de datos. Especifique CATALOG_COLLATION para los metadatos del sistema, como los identificadores de objeto.

El nombre de intercalación puede ser un nombre de intercalación de Windows o un nombre de intercalación de SQL. Si no se especifica, a la base de datos se le asigna la intercalación predeterminada, que es SQL_Latin1_General_CP1_CI_AS.

Para obtener más información sobre los nombres de intercalación de Windows y SQL, COLLATE.

CATALOG_COLLATION

Especifica la intercalación predeterminada del catálogo de metadatos. El CATALOG_COLLATION argumento solo está disponible durante la creación de la base de datos y no se puede cambiar después de la creación.

De forma predeterminada, el catálogo de metadatos para los nombres de objeto del sistema se intercala SQL_Latin1_General_CP1_CI_AS en la intercalación. Esta es la configuración predeterminada en Azure SQL Database si CATALOG_COLLATION no se especifica.

DATABASE_DEFAULT especifica que el catálogo de metadatos usado para las vistas del sistema y las tablas del sistema se intercalan para que coincidan con la intercalación de la base de datos. Si desea que los identificadores de objeto en los metadatos del sistema sigan la misma intercalación que los datos, debe crear la base de datos WITH CATALOG_COLLATION = DATABASE_DEFAULT.

  • Es posible que desee intercalaciones diferentes para los identificadores de datos y objetos. En el ejemplo siguiente se crea la base de datos con una intercalación que distingue mayúsculas de minúsculas para los datos de fila, pero se usa la intercalación sin distinción entre mayúsculas y minúsculas predeterminada SQL_Latin1_General_CP1_CI_AS para los identificadores de objeto.

    CREATE DATABASE [different-collations] COLLATE SQL_Latin1_General_CP1_CS_AS;
    
  • Si desea que los datos y los metadatos del sistema usen la misma intercalación, especifique WITH CATALOG_COLLATION = DATABASE_DEFAULT. En el ejemplo siguiente se crea la base de datos con una intercalación que distingue mayúsculas de minúsculas, que se usa para identificadores de objeto.

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

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

Especifica cómo se replican la restauración a un momento dado y las copias de seguridad de retención a largo plazo de una base de datos. La restauración geográfica o la capacidad de recuperación de una interrupción regional solo está disponible cuando se crea la base de datos con la redundancia de almacenamiento de copia de seguridad GEO. A menos que se especifique explícitamente, las bases de datos creadas con T-SQL usan el almacenamiento de copia de seguridad con redundancia geográfica.

Úselo GEOZONE para el almacenamiento con redundancia de zona geográfica. El almacenamiento redundante de zona geográfica (GZRS) ofrece el nivel más alto de protección contra interrupciones zonales, así como interrupciones regionales para cualquier carga de trabajo.

Para aplicar la residencia de datos al crear una base de datos mediante T-SQL, use LOCAL o ZONE como entrada para el BACKUP_STORAGE_REDUNDANCY parámetro .

Al crear una base de datos como una copia de otra base de datos con AS COPY OF, se admite la especificación de opciones y se deben incluir entre paréntesis. Por ejemplo, WITH (BACKUP_STORAGE_REDUNDANCY = 'LOCAL');.

LEDGER = { ON | OFF }

Cuando se establece en ON, crea una base de datos de libro de contabilidad, en la que se protege la integridad de todos los datos de usuario. Solo se pueden crear tablas de libro de contabilidad en una base de datos de libro de contabilidad. El valor predeterminado es OFF. El valor de la LEDGER opción no se puede cambiar una vez creada la base de datos. Para más información, consulte Configuración de una base de datos de libro de contabilidad.

TAMAÑO MÁXIMO

Especifica el tamaño máximo de la base de datos. MAXSIZE debe ser válido para el especificado EDITION (nivel de servicio).

A continuación se muestran los valores admitidos MAXSIZE y los valores predeterminados (D) para los niveles de servicio.

Nota

El MAXSIZE argumento no se aplica a bases de datos únicas en el nivel de servicio Hiperescala. Las bases de datos de nivel de Hiperescala única crecen según sea necesario, hasta 128 TB. El servicio SQL Database agrega almacenamiento automáticamente; no es necesario establecer un tamaño máximo.

Modelo de DTU para bases de datos únicas y agrupadas en un servidor de SQL Database

MAXSIZE Básico S0-S2 S3-S12 P1-P6 P11-P15 1
100 MB
500 MB
1 GB
2 GB Sí (D)
5 GB N/D
10 GB N/D
20 GB N/D
30 GB N/D
40 GB N/D
50 GB N/D
100 GB N/D
150 GB N/D
200 GB N/D
250 GB N/D Sí (D) Sí (D)
300 GB N/D N/D
400 GB N/D N/D
500 GB N/D N/D Sí (D)
750 GB N/D N/D
1 024 GB N/D N/D Sí (D)
Desde 1024 GB hasta 4096 GB en incrementos de 256 GB N/D N/D N/D N/D

1 P11 y P15 permiten MAXSIZE hasta 4 TB con 1024 GB como tamaño predeterminado. P11 y P15 pueden usar hasta 4 TB de almacenamiento incluido sin cargos adicionales. En el nivel Premium, MAXSIZE más de 1 TB está disponible actualmente en las siguientes regiones: Este de EE. UU. 2, Oeste de EE. UU., US Gov Virginia, Oeste de Europa, Centro de Alemania, Sudeste de Asia, Este de Japón, Este de Australia, Centro de Canadá y Este de Canadá. Para más información sobre las limitaciones de recursos para el modelo de DTU, consulte Límites de recursos para bases de datos únicas mediante el modelo de compra de DTU: Azure SQL Database.

El MAXSIZE valor del modelo DTU, si se especifica, debe ser un valor válido que se muestra en la tabla anterior para el nivel de servicio especificado.

Para conocer los límites como el tamaño máximo de los datos y el tamaño tempdb del modelo de compra de núcleo virtual, consulte los artículos sobre los límites de recursos para bases de datos únicas o los límites de recursos para grupos elásticos.

Si no se establece ningún valor de MAXSIZE al utilizar el modelo de núcleo virtual, el valor predeterminado es 32 GB. Para más información sobre las limitaciones de recursos para el modelo de núcleo virtual, consulte Límites de recursos de núcleo virtual.

EDICIÓN

Especifica el nivel de servicio de la base de datos.

Bases de datos únicas y agrupadas. Los valores disponibles son: "Basic", "Standard", "Premium", "GeneralPurpose", "BusinessCritical" e "Hyperscale".

Las reglas siguientes se aplican a MAXSIZE los argumentos y EDITION :

  • Si EDITION se especifica pero MAXSIZE no se especifica, se usa el valor predeterminado de la edición. Por ejemplo, si se establece en EDITION Estándar y MAXSIZE no se especifica , el valor MAX'SIZE se establece automáticamente en 250 MB.

  • Si no se especifica ni MAXSIZEEDITION , se establece en EDITION "GeneralPurpose" y MAXSIZE se establece en 32 GB.

SERVICE_OBJECTIVE

Especifica el tamaño de proceso y el objetivo de servicio.

  • Para el modelo de compra de DTU: S0, S1, S2, S3, S4, S6, S7, S9, S12, P1, P2, P4, P6, P11, P15

  • Para el modelo de compra de núcleos virtuales más reciente, elija el nivel y proporcione el número de núcleos virtuales de una lista preestablecida de valores, donde el número de núcleos virtuales es n. Consulte los límites de recursos para bases de datos únicas o los límites de recursos para grupos elásticos.

    • Por ejemplo:
      • GP_Gen5_8 para uso general, proceso aprovisionado, serie Estándar (Gen5), 8 núcleos virtuales.
      • GP_S_Gen5_8 para uso general, proceso sin servidor, serie Estándar (Gen5), 8 núcleos virtuales.
      • HS_Gen5_8 para Hiperescala, proceso aprovisionado, serie Estándar (Gen5), 8 núcleos virtuales.
      • HS_S_Gen5_8 para Hiperescala, proceso sin servidor, serie Estándar (Gen5), 8 núcleos virtuales.

Para obtener las descripciones de los objetivos de servicio y más información sobre las combinaciones de tamaño, ediciones y objetivos de servicio, vea ¿Qué son los niveles de servicio de Azure SQL Database?. Si el especificado SERVICE_OBJECTIVE no es compatible con EDITION, recibirá un error. Para cambiar el SERVICE_OBJECTIVE valor de un nivel a otro (por ejemplo, de S1 a P1), también debe cambiar el EDITION valor. Se ha quitado la compatibilidad para los objetivos de servicio de PRS.

ELASTIC_POOL (nombre = <elastic_pool_name>)

Se aplica a: Solo bases de datos únicas y agrupadas. No se aplica a las bases de datos en el nivel de servicio Hiperescala.

Para crear una nueva base de datos en un grupo de bases de datos elásticas, establezca la SERVICE_OBJECTIVE de la base de datos ELASTIC_POOL en y proporcione el nombre del grupo. Para obtener más información, consulta Los grupos elásticos ayudan a administrar y escalar varias bases de datos de Azure SQL Database.

COMO COPIA DE [ source_server_name. ] source_database_name

Se aplica a: Solo bases de datos únicas y agrupadas.

Use AS COPY OF para copiar una base de datos en el mismo servidor de SQL Database o en otro.

Al crear una base de datos como una copia de otra base de datos con AS COPY OF, se admite la especificación de opciones y se debe encapsular entre paréntesis. Por ejemplo, WITH (BACKUP_STORAGE_REDUNDANCY = 'LOCAL');.

  • source_server_name

    Nombre del servidor de SQL Database donde se encuentra la base de datos de origen. Este parámetro es opcional cuando la base de datos de origen y la de destino van a estar ubicadas en el mismo servidor de SQL Database.

    Nota

    El AS COPY OF argumento no admite los nombres de dominio únicos completos. En otras palabras, si el nombre de dominio completo del servidor es serverName.database.windows.net, utilice solo serverName durante la copia de la base de datos.

  • source_database_name

    El nombre de la base de datos que se va a copiar.

Observaciones

Las bases de datos de Azure SQL Database tienen varios parámetros predeterminados que se establecen al crear la base de datos. Para obtener más información sobre estos parámetros predeterminados, consulte la lista de valores de DATABASEPROPERTYEX.

MAXSIZE proporciona la capacidad de limitar el tamaño de la base de datos. Si el tamaño de la base de datos alcanza el valor MAXSIZE, se le mostrará el código de error 40544. Cuando esto ocurre, no se pueden insertar ni actualizar datos ni crear nuevos objetos (como tablas, procedimientos almacenados, vistas y funciones). Sin embargo, todavía puede leer y eliminar datos, truncar tablas, quitar tablas e índices, y volver a generar índices. Seguidamente, puede actualizar MAXSIZE a un valor mayor que el tamaño actual de la base de datos o eliminar algunos datos para liberar espacio de almacenamiento. Puede haber un retraso de hasta 15 minutos antes de que pueda insertar nuevos datos.

Para cambiar los valores de tamaño, edición u objetivo de servicio, use ALTER DATABASE (Azure SQL Database).

Copias de base de datos

Se aplica a: Solo bases de datos únicas y agrupadas.

La copia de una base de datos mediante la instrucción CREATE DATABASE es una operación asincrónica. Por lo tanto, no se necesita una conexión con el servidor de SQL Database durante todo el proceso de copia. La instrucción CREATE DATABASE devuelve el control al usuario una vez que se crea la entrada en sys.databases, pero antes de que se complete la operación de copia de la base de datos. Es decir, la instrucción CREATE DATABASE vuelve correctamente cuando la copia de la base de datos aún está en curso.

  • Supervisión del proceso de copia en un servidor de Base de datos SQL: consulte las percentage_complete columnas o replication_state_desc en el dm_database_copies o la state columna en la sys.databases vista. También se puede usar la vista sys.dm_operation_status, ya que devuelve el estado de las operaciones de la base de datos, incluida la copia de esta.

Cuando el proceso de copia se completa correctamente, la base de datos de destino es transaccionalmente coherente con la base de datos de origen.

Se aplican las siguientes reglas semánticas y de sintaxis al uso del argumento AS COPY OF:

  • El nombre del servidor de origen y el nombre del servidor del destino de la copia pueden ser iguales o diferentes. Si son iguales, este parámetro es opcional y se usa el contexto de servidor de la sesión actual de forma predeterminada.
  • Los nombres de las bases de datos de origen y de destino deben especificarse, ser únicos y ajustarse a las reglas de SQL Server para los identificadores. Para obtener más información, consulte Identificadores de base de datos.
  • La instrucción CREATE DATABASE debe ejecutarse dentro del contexto de la base de datos master del servidor de SQL Database donde se creará la nueva base de datos.
  • Una vez finalizada la copia, la base de datos de destino debe administrarse como una base de datos independiente. Puede ejecutar las instrucciones ALTER DATABASE y DROP DATABASE en la nueva base de datos de forma independiente de la base de datos de origen. También puede copiar la nueva base de datos en otra base de datos nueva.
  • Se puede seguir teniendo acceso a la base de datos de origen mientras la copia de la base de datos está en curso.

Para más información, consulte Copia de una copia transaccionalmente coherente de una base de datos en Azure SQL Database.

Importante

De forma predeterminada, la copia de la base de datos se crea con la misma redundancia de almacenamiento de copia de seguridad que la de la base de datos de origen.

Permisos

Para crear una base de datos, el inicio de sesión debe ser una de las siguientes entidades de seguridad:

  • El inicio de sesión de entidad de seguridad a nivel de servidor
  • Administrador de Microsoft Entra para el servidor lógico en Azure
  • El inicio de sesión de un miembro del rol de base de datos dbmanager

Requisitos adicionales para usar la sintaxis CREATE DATABASE ... AS COPY OF: el inicio de sesión que ejecute la instrucción en el servidor local debe tener también al menos el rol de db_owner en el servidor de origen. Si el inicio de sesión se basa en la autenticación de SQL Server, el inicio de sesión que ejecute la instrucción en el servidor local debe tener un inicio de sesión correspondiente en el servidor de origen de SQL Database, con un nombre y una contraseña idénticos.

Ejemplos

Ejemplo básico

Un ejemplo básico para crear una base de datos.

CREATE DATABASE TestDB1;

Ejemplo básico con edición

Un ejemplo básico para crear una base de datos de uso general.

CREATE DATABASE TestDB2
    (EDITION = 'GeneralPurpose');

Ejemplo con opciones adicionales

Un ejemplo en el que se usan varias opciones.

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

Creación de una copia de la base de datos

Un ejemplo en el que se crea una copia de una base de datos.

Se aplica a: Solo bases de datos únicas y agrupadas.

CREATE DATABASE escuela
    AS COPY OF school;

Creación de una base de datos en un grupo elástico

Crea una nueva base de datos en un grupo denominado S3M100:

Se aplica a: Solo bases de datos únicas y agrupadas.

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

Creación de una copia de una base de datos en otro servidor lógico

En el ejemplo siguiente se crea una copia de la db_original base de datos denominada db_copy en el objetivo de servicio De uso general para una base de datos única. Esto es válido con independencia de db_original está en un grupo elástico o un tamaño de proceso (objetivo de servicio) para una única base de datos.

Se aplica a: Solo bases de datos únicas y agrupadas.

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

En el siguiente ejemplo se crea una copia de la base de datos db_original, denominada db_copy, en un grupo elástico llamado ep1. Esto es válido con independencia de db_original está en un grupo elástico o un tamaño de proceso (objetivo de servicio) para una única base de datos. Si db_original se encuentra en un grupo elástico con un nombre diferente, se sigue creando db_copy en ep1.

Se aplica a: Solo bases de datos únicas y agrupadas.

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

Crear una base de datos con un valor de intercalación de catálogo especificado

En el ejemplo siguiente se establece la intercalación DATABASE_DEFAULT de catálogo en durante la creación de la base de datos, que establece que la intercalación de catálogo sea la misma que la intercalación de la base de datos.

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

Creación de bases de datos con redundancia de zona para copias de seguridad

En el ejemplo siguiente, se establece la redundancia de zona para las copias de seguridad de base de datos. Tanto las copias de seguridad de restauración a un momento dado como las copias de seguridad de retención a largo plazo (si están configuradas) usan la misma redundancia de almacenamiento de copia de seguridad.

CREATE DATABASE test_zone_redundancy
  WITH BACKUP_STORAGE_REDUNDANCY = 'ZONE';

Creación de una base de datos de libro de contabilidad

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

Crear como copia de una base de datos al cambiar las opciones

En el ejemplo siguiente se establecen distintas opciones para la nueva copia de una base de datos, incluida una configuración de redundancia de almacenamiento de copia de seguridad y nivel de servicio diferente. De forma predeterminada, la copia de la base de datos se crea con la misma configuración que la base de datos de origen.

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

* Instancia administrada de SQL *

Instancia Gestionada de Azure SQL

Información general

En Azure SQL Managed Instance, esta instrucción se utiliza para crear una base de datos. Al crear una base de datos en una instancia administrada, especifique el nombre de la base de datos y la intercalación.

Sintaxis

Para más información sobre las convenciones de sintaxis, vea Convenciones de sintaxis de Transact-SQL.

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

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

Importante

Para agregar archivos o establecer la independencia de una base de datos en una instancia administrada, use la instrucción ALTER DATABASE.

En el caso de las instancias administradas de SQL, la inicial MAXSIZE se establece implícitamente en el tamaño del disco actual y no cambia automáticamente al extender el tamaño del disco desde Azure Portal. Después de extender el disco, también debe extender MAXSIZE con ALTER DATABASE para evitar errores completos del archivo de base de datos.

Argumentos

database_name

El nombre de la nueva base de datos. Este nombre debe ser único en la instancia de SQL Server y debe cumplir las reglas de SQL Server para los identificadores. Para obtener más información, consulte Identificadores de base de datos.

collation_name

Especifica la intercalación predeterminada de la base de datos. El nombre de intercalación puede ser un nombre de intercalación de Windows o un nombre de intercalación de SQL. Si no se especifica, a la base de datos se le asigna la intercalación predeterminada, que es SQL_Latin1_General_CP1_CI_AS.

Para obtener más información sobre los nombres de intercalación de Windows y SQL, COLLATE.

LEDGER = { ON | OFF }

Cuando se establece en ON, crea una base de datos de libro de contabilidad, en la que se protege la integridad de todos los datos de usuario. Solo se pueden crear tablas de libro de contabilidad en una base de datos de libro de contabilidad. El valor predeterminado es OFF. El valor de la LEDGER opción no se puede cambiar una vez creada la base de datos. Para más información, consulte Configuración de una base de datos de libro de contabilidad.

Observaciones

Las bases de datos de Azure SQL Database tienen varios parámetros predeterminados que se establecen al crear la base de datos. Para obtener más información sobre estos parámetros predeterminados, consulte la lista de valores de DATABASEPROPERTYEX.

Importante

La instrucción CREATE DATABASE debe ser la única de un lote de Transact-SQL.

Estas son limitaciones CREATE DATABASE:

  • No se pueden definir archivos ni grupos de archivos.

  • WITH No se admiten opciones, excepto para WITH LEDGER.

    Sugerencia

    Como solución alternativa, use ALTER DATABASE. después de CREATE DATABASE para establecer opciones de base de datos y para agregar archivos.

Permisos

Para crear una base de datos, un inicio de sesión debe ser uno de los siguientes tipos de entidades de seguridad:

  • El inicio de sesión de entidad de seguridad a nivel de servidor
  • Administrador de Microsoft Entra para el servidor lógico en Azure
  • Inicio de sesión que es miembro del rol de base de datos dbcreator

Ejemplos

Ejemplo básico

Un ejemplo básico para crear una base de datos.

CREATE DATABASE TestDB1;

Creación de una base de datos de libro de contabilidad

CREATE DATABASE MyLedgerDB
    WITH LEDGER = ON;

* Azure Synapse
Analítica*

Azure Synapse Analytics

Información general

En Azure Synapse, esta instrucción se puede usar con un servidor de Azure SQL Database para crear un grupo de SQL dedicado. Con esta instrucción, especifica el nombre de la base de datos, la intercalación, el tamaño máximo, la edición y el objetivo de servicio.

  • CREATE DATABASE se admite para grupos de SQL dedicados independientes (anteriormente SQL DW) mediante niveles de servicio gen2.
  • CREATE DATABASE no se admite para grupos de SQL dedicados en un área de trabajo de Azure Synapse Analytics. En su lugar, use Azure Portal.
  • CREATE DATABASE se admite para grupos de SQL sin servidor en Azure Synapse Analytics.

Sintaxis

Para más información sobre las convenciones de sintaxis, vea Convenciones de sintaxis de 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'
    }
)
[ ; ]

Argumentos

database_name

El nombre de la nueva base de datos. Este nombre debe ser único en la instancia de SQL Server, que puede hospedar tanto bases de datos de Azure SQL Database como de Azure Synapse Analytics, y cumplir con las reglas de SQL Server para identificadores. Para obtener más información, consulte Identificadores de base de datos.

collation_name

Especifica la intercalación predeterminada de la base de datos. El nombre de intercalación puede ser un nombre de intercalación de Windows o un nombre de intercalación de SQL. Si no se especifica, a la base de datos se le asigna la intercalación predeterminada, que es SQL_Latin1_General_CP1_CI_AS.

Para obtener más información sobre los nombres de intercalación de Windows y SQL, vea COLLATE.

TAMAÑO MÁXIMO

El valor predeterminado es 245 760 GB (240 TB).

Se aplica a: Optimizado para Compute Gen1

El tamaño máximo permitido para la base de datos. La base de datos no puede crecer más allá MAXSIZEde .

Se aplica a: Optimizado para Compute Gen2

Tamaño máximo permitido para los datos de almacenamiento de filas de la base de datos. Los datos almacenados en tablas de almacén de filas, el almacén delta de un índice de almacén de columnas o un índice no agrupado en un índice de almacén de columnas agrupado no pueden crecer más allá MAXSIZEde . Los datos comprimidos en formato de almacén de columnas no tienen un límite de tamaño y no están restringidos por MAXSIZE.

EDICIÓN

Especifica el nivel de servicio de la base de datos. En Azure Synapse Analytics, use datawarehouse.

SERVICE_OBJECTIVE

Especifica el tamaño de proceso (objetivo de servicio). Los niveles de servicio de Gen2 se miden en unidades de almacenamiento de datos de proceso (cDWU); por ejemplo, DW2000c. Los niveles de servicio de Gen1 se miden en DWU; por ejemplo, DW2000. Para más información sobre los objetivos de servicio para Azure Synapse, consulte Unidades de almacenamiento de datos (DWU). Los objetivos de servicio gen1 (ya no se enumeran) ya no se admiten, puede recibir un error: Azure SQL Data Warehouse Gen1 has been deprecated in this region. Please use SQL Analytics in Azure Synapse.

Observaciones

Use DATABASEPROPERTYEX para ver las propiedades de la base de datos.

Use ALTER DATABASE - Azure Synapse Analytics para cambiar el tamaño máximo o los valores del objetivo de servicio más adelante.

Azure Synapse está establecido COMPATIBILITY_LEVEL 130 en y no se puede cambiar. Para obtener más información, consulte Nivel de compatibilidad de ALTER DATABASE.

Permisos

Permisos necesarios:

  • Inicio de sesión principal en el nivel de servidor, creado por el proceso de aprovisionamiento, o
  • Miembro del rol de base de datos dbmanager .

Control de errores

Si el tamaño de la base de datos alcanza MAXSIZE, SQL Server genera el código de error 40544. Cuando esto ocurre, no se pueden insertar y actualizar datos ni crear nuevos objetos (como tablas, procedimientos almacenados, vistas y funciones). Sin embargo, todavía puede leer y eliminar datos, truncar tablas, quitar tablas e índices, y recompilar índices. Seguidamente, puede actualizar MAXSIZE a un valor mayor que el tamaño actual de la base de datos o eliminar algunos datos para liberar espacio de almacenamiento. Puede haber un retraso de hasta quince minutos antes de que pueda insertar nuevos datos.

Limitaciones

Debe estar conectado a la base de datos master para crear una base de datos.

La instrucción CREATE DATABASE debe ser la única de un lote de Transact-SQL.

No se puede cambiar la intercalación de la base de datos después de crear la base de datos.

Ejemplos: Azure Synapse Analytics

Un. Ejemplo básico

Un ejemplo básico para crear un grupo de SQL dedicado independiente (anteriormente SQL DW). De esta forma se crea la base de datos con el tamaño más pequeño, 10 240 GB, la intercalación predeterminada, SQL_Latin1_General_CP1_CI_AS, y el objetivo de servicio de Gen2 más pequeño, DW100c.

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

B. Crear una base de datos de almacenamiento de datos con todas las opciones

Un ejemplo de creación de un grupo de SQL dedicado independiente de 10 terabytes (anteriormente, SQL DW).

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

C. Ejemplo básico en un grupo de SQL sin servidor de Synapse Analytics

Esto crea la base de datos en el grupo sin servidor, especificando una intercalación (Latin1_General_100_CI_AS_KS_WS).

CREATE DATABASE TestDW COLLATE Latin1_General_100_CI_AS_KS_WS;

* Plataforma de análisis
Sistema (PDW) *

Sistema de la plataforma de análisis

Información general

En Analytics Platform System, esta instrucción se utiliza para crear una nueva base de datos en un dispositivo de Analytics Platform System. Use esta instrucción para crear todos los archivos asociados con una base de datos del dispositivo y para establecer las opciones de crecimiento automático y de tamaño máximo de las tablas de base de datos y del registro de transacciones.

Sintaxis

Para más información sobre las convenciones de sintaxis, vea Convenciones de sintaxis de 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 ] )
[ ; ]

Argumentos

database_name

El nombre de la nueva base de datos. Para obtener más información sobre los nombres de bases de datos permitidos, consulte "Reglas de nomenclatura de objetos" y "Nombres reservados de la base de datos" en la documentación del producto Analytics Platform System (PDW).

AUTOGROW = { ON | OFF }

Especifica si los parámetros replicated_size, distributed_size y log_size crecen automáticamente según sea necesario más allá de sus tamaños especificados. El valor predeterminado es OFF.

Si AUTOGROW es ON, replicated_size, distributed_size y log_size crecen según sea necesario con cada inserción de datos, actualización u otra acción que requiera más almacenamiento de lo que ya se ha asignado.

Si AUTOGROW es OFF, los tamaños no crecen automáticamente. Analytics Platform System (PDW) devuelve un error al intentar una acción que requiere replicated_size, distributed_size o log_size crecer más allá de su valor especificado.

AUTOGROW ON es para todos los tamaños o OFF para todos los tamaños. Por ejemplo, no es posible establecer AUTOGROW ON para log_size, pero no para replicated_size.

replicated_size [GB]

Un número positivo. Establece el tamaño (en gigabytes en forma de número entero o con decimales) del espacio total asignado a las tablas replicadas y a los datos correspondientes en cada nodo de ejecución. Para conocer los requisitos mínimos y máximos de replicated_size, consulte "Valores mínimos y máximos" de la documentación del producto Analytics Platform System (PDW).

Si AUTOGROW es ON, las tablas replicadas pueden crecer más allá de este límite.

Si AUTOGROW es OFF, se devuelve un error si un usuario intenta crear una nueva tabla replicada, insertar datos en una tabla replicada existente o actualizar una tabla replicada existente de una manera que aumentaría el tamaño más allá de replicated_size.

distributed_size [GB]

Un número positivo. Se trata del tamaño (en gigabytes en forma de número entero o con decimales) del espacio total asignado a las tablas distribuidas (y a los datos correspondientes) en todo el dispositivo. Para conocer los requisitos mínimos y máximos de distributed_size, consulte "Valores mínimos y máximos" de la documentación del producto Analytics Platform System (PDW).

Si AUTOGROW es ON, se permite que las tablas distribuidas aumenten más allá de este límite.

Si AUTOGROW es OFF, se devuelve un error si un usuario intenta crear una nueva tabla distribuida, insertar datos en una tabla distribuida existente o actualizar una tabla distribuida existente de una manera que aumentaría el tamaño más allá de distributed_size.

log_size [GB]

Un número positivo. Se trata del tamaño (en gigabytes en forma de número entero o con decimales) del registro de transacciones en todo el dispositivo.

Para conocer los requisitos mínimos y máximos de log_size, consulte "Valores mínimos y máximos" de la documentación del producto Analytics Platform System (PDW).

Si AUTOGROW es ON, el archivo de registro puede crecer más allá de este límite. Use la instrucción DBCC SHRINKLOG - Analytics Platform System (PDW) para reducir el tamaño de los archivos de registro a su tamaño original.

Si AUTOGROW es OFF, se devuelve un error al usuario para cualquier acción que aumente el tamaño del registro en un nodo de proceso individual más allá de log_size.

Permisos

Requiere el permiso CREATE ANY DATABASE en la base de datos master o pertenecer al rol fijo de servidor sysadmin.

En el ejemplo siguiente se proporciona el permiso para crear una base de datos al usuario de base de datos Fay.

USE master;
GO

GRANT CREATE ANY DATABASE TO [Fay];
GO

Observaciones

Las bases de datos se crean con el nivel de compatibilidad de base de datos 120, que es el nivel de compatibilidad de SQL Server 2014 (12.x). Esto garantiza que la base de datos pueda usar todas las funciones de SQL Server 2014 (12.x) que usa PDW.

Limitaciones

La CREATE DATABASE instrucción no se permite en una transacción explícita. Para obtener más información, consulte instruccionesTransact-SQL.

Para obtener información sobre las restricciones de mínimos y máximos en la base de datos, consulte "Valores mínimos y máximos" de la documentación del producto Analytics Platform System (PDW).

En el momento en que se cree una base de datos, debe haber suficiente espacio libre disponible en cada nodo de ejecución que permita asignar el total combinado de los siguientes tamaños:

  • Base de datos de SQL Server con tablas que tengan el tamaño de replicated_table_size.
  • Base de datos de SQL Server con tablas que tengan un tamaño de (distributed_table_size/número de nodos de ejecución).
  • Registros de SQL Server que tengan un tamaño de (log_size/número de nodos de ejecución).

Bloqueo

Toma un bloqueo compartido en el objeto DATABASE.

Metadatos

Una vez que esta operación se realiza correctamente, aparece una entrada para esta base de datos en las vistas de metadatos sys.databases y sys.objects .

Ejemplos: Sistema de la plataforma de análisis (PDW)

Un. Ejemplos básicos de creación de base de datos

En el siguiente ejemplo se crea la base de datos mytest con una asignación de almacenamiento de 100 GB por nodo de ejecución para las tablas replicadas, 500 GB por dispositivo para las tablas distribuidas y 100 GB por dispositivo para el registro de transacciones. En este ejemplo, AUTOGROW está desactivado de forma predeterminada.

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

En el ejemplo siguiente se crea la base de datos mytest con los mismos parámetros, excepto que AUTOGROW está activada. Esto permite que la base de datos crezca fuera de los parámetros de tamaño especificado.

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

B. Creación de una base de datos con tamaños de gigabyte parciales

En el ejemplo siguiente se crea la base de datos mytest, con AUTOGROW off, una asignación de almacenamiento de 1,5 GB por nodo de proceso para tablas replicadas, 5,25 GB por dispositivo para tablas distribuidas y 10 GB por dispositivo para el registro de transacciones.

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