Opciones File y Filegroup de ALTER DATABASE (Transact-SQL)ALTER DATABASE (Transact-SQL) File and Filegroup Options

Modifica los archivos y los grupos de archivos asociados a la base de datos.Modifies the files and filegroups associated with the database. Agrega o quita archivos y grupos de archivos de una base de datos y cambia los atributos de una base de datos o sus archivos y grupos de archivos.Adds or removes files and filegroups from a database, and changes the attributes of a database or its files and filegroups. Para más información sobre otras opciones de ALTER DATABASE, consulte ALTER DATABASE.For other ALTER DATABASE options, see ALTER DATABASE.

Para obtener más información sobre las convenciones de sintaxis, vea Convenciones de sintaxis de Transact-SQL.For more information about the syntax conventions, see Transact-SQL Syntax Conventions.

Haga clic en un producto.Click a product!

En la siguiente fila, haga clic en cualquier nombre de producto que le interese.In the following row, click whichever product name you are interested in. Al hacer clic, en esta página web se muestra otro contenido, adecuado para el producto que seleccione.The click displays different content here on this webpage, appropriate for whichever product you click.

* SQL Server *  * SQL Server *   Instancia administrada de
SQL Database
SQL Database
managed instance

 

SQL ServerSQL Server

SintaxisSyntax

ALTER DATABASE database_name
{
    <add_or_modify_files>
  | <add_or_modify_filegroups>
}
[;

<add_or_modify_files>::=
{
    ADD FILE <filespec> [ ,...n ]
        [ TO FILEGROUP { filegroup_name } ]
  | ADD LOG FILE <filespec> [ ,...n ]
  | REMOVE FILE logical_file_name
  | MODIFY FILE <filespec>
}

<filespec>::=
(
    NAME = logical_file_name
    [ , NEWNAME = new_logical_name ]
    [ , FILENAME = {'os_file_name' | 'filestream_path' | 'memory_optimized_data_path' } ]
    [ , SIZE = size [ KB | MB | GB | TB ] ]
    [ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ]
    [ , FILEGROWTH = growth_increment [ KB | MB | GB | TB| % ] ]
    [ , OFFLINE ]
)

<add_or_modify_filegroups>::=
{
    | ADD FILEGROUP filegroup_name
        [ CONTAINS FILESTREAM | CONTAINS MEMORY_OPTIMIZED_DATA ]
    | REMOVE FILEGROUP filegroup_name
    | MODIFY FILEGROUP filegroup_name
        { <filegroup_updatability_option>
        | DEFAULT
        | NAME = new_filegroup_name
        | { AUTOGROW_SINGLE_FILE | AUTOGROW_ALL_FILES }
        }
}
<filegroup_updatability_option>::=
{
    { READONLY | READWRITE }
    | { READ_ONLY | READ_WRITE }
}

ArgumentosArguments

<add_or_modify_files>::=<add_or_modify_files>::=

Especifica el archivo que se va a agregar, quitar o modificar.Specifies the file to be added, removed, or modified.

database_name Es el nombre de la base de datos que se va a modificar.database_name Is the name of the database to be modified.

ADD FILE Agrega un archivo a la base de datos.ADD FILE Adds a file to the database.

TO FILEGROUP { filegroup_name } Especifica el grupo de archivos al que se agrega el archivo especificado.TO FILEGROUP { filegroup_name } Specifies the filegroup to which to add the specified file. Para mostrar los grupos de archivos actuales y qué grupo de archivos es el predeterminado, use la vista de catálogo sys.filegroups.To display the current filegroups and which filegroup is the current default, use the sys.filegroups catalog view.

ADD LOG FILE Agrega un archivo de registro a la base de datos especificada.ADD LOG FILE Adds a log file be added to the specified database.

REMOVE FILE logical_file_name Quita la descripción del archivo lógico de una instancia de SQL ServerSQL Server y elimina el archivo físico.REMOVE FILE logical_file_name Removes the logical file description from an instance of SQL ServerSQL Server and deletes the physical file. El archivo no se puede quitar a menos que esté vacío.The file cannot be removed unless it is empty.

logical_file_name Es el nombre lógico utilizado en SQL ServerSQL Server cuando se hace referencia al archivo.logical_file_name Is the logical name used in SQL ServerSQL Server when referencing the file.

Advertencia

La eliminación de un archivo de base de datos que tenga asociadas copias de seguridad de FILE_SNAPSHOT se realizará correctamente, pero no se eliminarán las instantáneas asociadas para, así, evitar que se invaliden las copias de seguridad que hagan referencia al archivo de base de datos.Removing a database file that has FILE_SNAPSHOT backups associated with it will succeed, but any associated snapshots will not be deleted to avoid invalidating the backups referring to the database file. El archivo se truncará, pero no se eliminará físicamente con el fin de mantener intactas las copias de seguridad de FILE_SNAPSHOT.The file will be truncated, but will not be physically deleted in order to keep the FILE_SNAPSHOT backups intact. Para obtener más información, vea Copia de seguridad y restauración de SQL Server con el servicio de Almacenamiento de blobs de Microsoft Azure.For more information, see SQL Server Backup and Restore with Microsoft Azure Blob Storage Service. Se aplica a: SQL ServerSQL Server (desde SQL Server 2016 (13.x)SQL Server 2016 (13.x) hasta SQL Server 2017SQL Server 2017).Applies to: SQL ServerSQL Server ( SQL Server 2016 (13.x)SQL Server 2016 (13.x) through SQL Server 2017SQL Server 2017).

MODIFY FILE Especifica el archivo que se debe modificar.MODIFY FILE Specifies the file that should be modified. Solo se puede cambiar una propiedad <filespec> cada vez.Only one <filespec> property can be changed at a time. NAME se debe especificar siempre en <filespec> para identificar el archivo que se va a modificar.NAME must always be specified in the <filespec> to identify the file to be modified. Si se especifica SIZE, el nuevo tamaño debe ser mayor que el tamaño actual del archivo.If SIZE is specified, the new size must be larger than the current file size.

Para modificar el nombre lógico de un archivo de datos o de un archivo de registro, especifique el nombre del archivo lógico que se va a cambiar en la cláusula NAME y especifique el nombre lógico nuevo para el archivo en la cláusula NEWNAME.To modify the logical name of a data file or log file, specify the logical file name to be renamed in the NAME clause, and specify the new logical name for the file in the NEWNAME clause. Por ejemplo:For example:

MODIFY FILE ( NAME = logical_file_name, NEWNAME = new_logical_name )

Para mover un archivo de datos o un archivo de registro a otra ubicación, especifique el nombre del archivo lógico actual en la cláusula NAME y especifique la ruta y el nombre del archivo del sistema operativo nuevos en la cláusula FILENAME.To move a data file or log file to a new location, specify the current logical file name in the NAME clause and specify the new path and operating system file name in the FILENAME clause. Por ejemplo:For example:

MODIFY FILE ( NAME = logical_file_name, FILENAME = ' new_path/os_file_name ' )

Si mueve un catálogo de texto completo, especifique la ruta nueva en la cláusula FILENAME.When you move a full-text catalog, specify only the new path in the FILENAME clause. No especifique el nombre del archivo del sistema operativo.Do not specify the operating-system file name.

Para más información, vea Mover archivos de base de datos.For more information, see Move Database Files.

Para un grupo de archivos FILESTREAM, NAME se puede modificar en línea.For a FILESTREAM filegroup, NAME can be modified online. Aunque FILENAME se puede modificar en línea, el cambio no surtirá efecto hasta que el contenedor se haya reubicado físicamente y se haya apagado y reiniciado el servidor.FILENAME can be modified online; however, the change does not take effect until after the container is physically relocated and the server is shutdown and then restarted.

Puede establecer un archivo FILESTREAM en OFFLINE.You can set a FILESTREAM file to OFFLINE. Cuando un archivo FILESTREAM está sin conexión, su grupo de archivos principal se marcará internamente como sin conexión; por consiguiente, se producirá un error en cualquier intento de acceso a los datos FILESTREAM situados dentro de ese grupo de archivos.When a FILESTREAM file is offline, its parent filegroup will be internally marked as offline; therefore, all access to FILESTREAM data within that filegroup will fail.

Nota

No hay opciones <add_or_modify_files>disponibles en una base de datos independiente.<add_or_modify_files> options are not available in a Contained Database.

<filespec>::=<filespec>::=

Controla las propiedades de archivo.Controls the file properties.

NAME logical_file_name Especifica el nombre lógico del archivo.NAME logical_file_name Specifies the logical name of the file.

logical_file_name Es el nombre lógico utilizado en una instancia de SQL ServerSQL Server al hacer referencia al archivo.logical_file_name Is the logical name used in an instance of SQL ServerSQL Server when referencing the file.

NEWNAME new_logical_file_name Especifica un nombre lógico nuevo para el archivo.NEWNAME new_logical_file_name Specifies a new logical name for the file.

new_logical_file_name Es el nombre que reemplaza el nombre del archivo lógico existente.new_logical_file_name Is the name to replace the existing logical file name. El nombre debe ser único en la base de datos y debe cumplir las mismas reglas que los identificadores.The name must be unique within the database and comply with the rules for identifiers. El nombre puede ser una constante Unicode o de caracteres, un identificador regular o un identificador delimitado.The name can be a character or Unicode constant, a regular identifier, or a delimited identifier.

FILENAME { " os_file_name " | " filestream_path " | " memory_optimized_data_path " } Especifica el nombre de archivo (físico) del sistema operativo.FILENAME { 'os_file_name' | 'filestream_path' | 'memory_optimized_data_path'} Specifies the operating system (physical) file name.

"os_file_name"Para un grupo de archivos estándar (ROWS), se trata de la ruta de acceso y el nombre de archivo que utiliza el sistema operativo al crear el archivo.' os_file_name ' For a standard (ROWS) filegroup, this is the path and file name that is used by the operating system when you create the file. El archivo debe residir en el servidor donde esté instalado SQL ServerSQL Server.The file must reside on the server on which SQL ServerSQL Server is installed. La ruta especificada debe existir antes de ejecutar la instrucción ALTER DATABASE.The specified path must exist before executing the ALTER DATABASE statement.

Nota

Los parámetros SIZE, MAXSIZE y FILEGROWTH no puede establecerse cuando se especifica una ruta de acceso UNC para el archivo.SIZE, MAXSIZE, and FILEGROWTH parameters cannot be set when a UNC path is specified for the file.

Las bases de datos del sistema no pueden residir en directorios de recursos compartidos UNC.System databases cannot reside in UNC share directories.

Los archivos de datos no se pueden utilizar en los sistemas de archivos comprimidos a menos que sean archivos secundarios de solo lectura o si la base de datos es de solo lectura.Data files should not be put on compressed file systems unless the files are read-only secondary files, or if the database is read-only. Los archivos de registro no se deben almacenar en sistemas de archivos comprimidos.Log files should never be put on compressed file systems.

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.If the file is on a raw partition, os_file_name must specify only the drive letter of an existing raw partition. En cada partición sin formato solo se puede colocar un archivo.Only one file can be put on each raw partition.

" filestream_path " Para un grupo de archivos FILESTREAM, FILENAME hace referencia a la ruta de acceso donde se almacenarán los datos FILESTREAM.' filestream_path ' For a FILESTREAM filegroup, FILENAME refers to a path where FILESTREAM data will be stored. La ruta de acceso hasta la última carpeta debe existir y la última carpeta no debe existir.The path up to the last folder must exist, and the last folder must not exist. Por ejemplo, si especifica la ruta de acceso C:\MyFiles\MyFilestreamData, C:\MyFiles debe existir para poder ejecutar ALTER DATABASE, pero la carpeta MyFilestreamData no debe existir.For example, if you specify the path C:\MyFiles\MyFilestreamData, then C:\MyFiles must exist before you run ALTER DATABASE, but the MyFilestreamData folder must not exist.

Nota

Las propiedades SIZE y FILEGROWTH no se aplican a un grupo de archivos FILESTREAM.The SIZE and FILEGROWTH properties do not apply to a FILESTREAM filegroup.

" memory_optimized_data_path " En un grupo de archivos optimizados para memoria, FILENAME hace referencia a una ruta de acceso donde se almacenarán los datos optimizados para memoria.' memory_optimized_data_path ' For a memory-optimized filegroup, FILENAME refers to a path where memory-optimized data will be stored. La ruta de acceso hasta la última carpeta debe existir y la última carpeta no debe existir.The path up to the last folder must exist, and the last folder must not exist. Por ejemplo, si especifica la ruta de acceso C:\MyFiles\MyData, C:\MyFiles debe existir para poder ejecutar ALTER DATABASE, pero la carpeta MyData no debe existir.For example, if you specify the path C:\MyFiles\MyData, then C:\MyFiles must exist before you run ALTER DATABASE, but the MyData folder must not exist.

El grupo de archivos y el archivo (<filespec>) se deben crear en la misma instrucción.The filegroup and file (<filespec>) must be created in the same statement.

Nota

Las propiedades SIZE y FILEGROWTH no se aplican a un grupo de archivos MEMORY_OPTIMIZED_DATA.The SIZE and FILEGROWTH properties do not apply to a MEMORY_OPTIMIZED_DATA filegroup.

Para obtener más información sobre los grupos de archivos optimizados para memoria, vea El grupo de archivos con optimización para memoria.For more information on memory-optimized filegroups, see The Memory Optimized Filegroup.

SIZE size Especifica el tamaño de archivo.SIZE size Specifies the file size. SIZE no se aplica a los grupos de archivos FILESTREAM.SIZE does not apply to FILESTREAM filegroups.

size Es el tamaño del archivo.size Is the size of the file.

Cuando se especifica con ADD FILE, size es el tamaño inicial del archivo.When specified with ADD FILE, size is the initial size for the file. Si se especifica con MODIFY FILE, size es el nuevo tamaño de archivo y debe ser mayor que el tamaño de archivo actual.When specified with MODIFY FILE, size is the new size for the file, and must be larger than the current file size.

Cuando no se suministra size para el archivo principal, SQL ServerSQL Server usa el tamaño del archivo principal de la base de datos modelo.When size is not supplied for the primary file, the SQL ServerSQL Server uses the size of the primary file in the model database. Cuando se especifica un archivo de datos secundario o un archivo de registro, pero no se especifica size para el archivo, Motor de base de datosDatabase Engine hace que el tamaño del archivo sea 1 MB.When a secondary data file or log file is specified but size is not specified for the file, the Motor de base de datosDatabase Engine makes the file 1 MB.

Se pueden utilizar los sufijos KB, MB, GB y TB para especificar kilobytes, megabytes, gigabytes o terabytes.The KB, MB, GB, and TB suffixes can be used to specify kilobytes, megabytes, gigabytes, or terabytes. El valor predeterminado es MB.The default is MB. Especifique un número entero y no incluya decimales.Specify a whole number and do not include a decimal. Para especificar una fracción de un megabyte, convierta el valor en kilobytes multiplicando el número por 1024.To specify a fraction of a megabyte, convert the value to kilobytes by multiplying the number by 1024. Por ejemplo, especifique 1536 KB en lugar de 1,5 MB (1,5 x 1024 = 1536).For example, specify 1536 KB instead of 1.5 MB (1.5 x 1024 = 1536).

Nota

SIZE no se puede establecer:SIZE cannot be set:

  • Cuando se especifica una ruta de acceso UNC para el archivoWhen a UNC path is specified for the file
  • Para grupos de archivos FILESTREAM y MEMORY_OPTIMIZED_DATAFor FILESTREAM and MEMORY_OPTIMIZED_DATA filegroups

MAXSIZE { max_size| UNLIMITED } Especifica el tamaño de archivo máximo que puede alcanzar el archivo.MAXSIZE { max_size| UNLIMITED } Specifies the maximum file size to which the file can grow.

max_size Es el tamaño máximo del archivo.max_size Is the maximum file size. Se pueden utilizar los sufijos KB, MB, GB y TB para especificar kilobytes, megabytes, gigabytes o terabytes.The KB, MB, GB, and TB suffixes can be used to specify kilobytes, megabytes, gigabytes, or terabytes. El valor predeterminado es MB.The default is MB. Especifique un número entero y no incluya decimales.Specify a whole number and do not include a decimal. Si no se especifica max_size, el tamaño de archivo aumenta hasta que el disco esté lleno.If max_size is not specified, the file size will increase until the disk is full.

UNLIMITED Especifica que el archivo crecerá hasta que el disco esté lleno.UNLIMITED Specifies that the file grows until the disk is full. En SQL ServerSQL 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.In SQL ServerSQL Server, a log file specified with unlimited growth has a maximum size of 2 TB, and a data file has a maximum size of 16 TB. No hay un tamaño máximo cuando esta opción se especifica para un contenedor de FILESTREAM.There is no maximum size when this option is specified for a FILESTREAM container. Continúa creciendo hasta que el disco se completa.It continues to grow until the disk is full.

Nota

MAXSIZE no puede establecerse cuando se especifica una ruta de acceso UNC para el archivo.MAXSIZE cannot be set when a UNC path is specified for the file.

FILEGROWTH growth_increment Especifica el incremento de crecimiento automático del archivo.FILEGROWTH growth_increment Specifies the automatic growth increment of the file. El valor FILEGROWTH de un archivo no puede superar el valor MAXSIZE.The FILEGROWTH setting for a file cannot exceed the MAXSIZE setting. FILEGROWTH no se aplica a los grupos de archivos FILESTREAM.FILEGROWTH does not apply to FILESTREAM filegroups.

growth_increment Es la cantidad de espacio que se agrega al archivo siempre que se necesita más espacio.growth_increment Is the amount of space added to the file every time new space is required.

El valor se puede especificar en MB, KB, GB, TB o como porcentaje (%).The value can be specified in MB, KB, GB, TB, or percent (%). Si se especifica un número sin los sufijos MB, KB o %, el valor predeterminado es MB.If a number is specified without an MB, KB, or % suffix, the default is MB. Cuando se especifica %, el incremento de crecimiento es el porcentaje especificado del tamaño del archivo en el momento en que tiene lugar el incremento.When % is specified, the growth increment size is the specified percentage of the size of the file at the time the increment occurs. El tamaño especificado se redondea al múltiplo de 64 KB más cercano.The size specified is rounded to the nearest 64 KB.

El valor 0 indica que el aumento automático se establece en OFF y no se permite ningún espacio adicional.A value of 0 indicates that automatic growth is set to off and no additional space is allowed.

Si no se especifica FILEGROWTH, los valores predeterminados son:If FILEGROWTH is not specified, the default values are:

VersiónVersion Valores predeterminadosDefault values
A partir de SQL Server 2016 (13.x)SQL Server 2016 (13.x)Starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x) Datos: 64 MB.Data 64 MB. Archivos de registro: 64 MB.Log files 64 MB.
A partir de SQL Server 2005 (9.x)SQL Server 2005 (9.x)Starting with SQL Server 2005 (9.x)SQL Server 2005 (9.x) Datos: 1 MB.Data 1 MB. Archivos de registro: 10 %.Log files 10%.
Antes de SQL Server 2005 (9.x)SQL Server 2005 (9.x)Prior to SQL Server 2005 (9.x)SQL Server 2005 (9.x) Datos: 10 %.Data 10%. Archivos de registro: 10 %.Log files 10%.

Nota

FILEGROWTH no se puede establecer:FILEGROWTH cannot be set:

  • Cuando se especifica una ruta de acceso UNC para el archivoWhen a UNC path is specified for the file
  • Para grupos de archivos FILESTREAM y MEMORY_OPTIMIZED_DATAFor FILESTREAM and MEMORY_OPTIMIZED_DATA filegroups

OFFLINE Establece el archivo en modo sin conexión e impide el acceso a todos los objetos del grupo de archivos.OFFLINE Sets the file offline and makes all objects in the filegroup inaccessible.

Precaución

Utilice esta opción solo si el archivo está dañado y se puede restaurar.Use this option only when the file is corrupted and can be restored. Un archivo establecido en OFFLINE solo se puede establecer como en línea mediante la restauración del archivo a partir de una copia de seguridad.A file set to OFFLINE can only be set online by restoring the file from backup. Para más información sobre cómo restaurar un único archivo, vea RESTORE.For more information about restoring a single file, see RESTORE.

No hay opciones <filespec> disponibles en una base de datos independiente.<filespec> options are not available in a Contained Database.

<add_or_modify_filegroups>::=<add_or_modify_filegroups>::=

Agrega, modifica o quita un grupo de archivos de la base de datos.Add, modify, or remove a filegroup from the database.

ADD FILEGROUP filegroup_name Agrega un grupo de archivos a la base de datos.ADD FILEGROUP filegroup_name Adds a filegroup to the database.

CONTAINS FILESTREAM Especifica que el grupo de archivos almacena objetos binarios grandes (BLOB) de FILESTREAM en el sistema de archivos.CONTAINS FILESTREAM Specifies that the filegroup stores FILESTREAM binary large objects (BLOBs) in the file system.

CONTAINS MEMORY_OPTIMIZED_DATACONTAINS MEMORY_OPTIMIZED_DATA

Se aplica a: SQL ServerSQL Server (desde SQL Server 2014 (12.x)SQL Server 2014 (12.x) hasta SQL Server 2017SQL Server 2017)Applies to: SQL ServerSQL Server ( SQL Server 2014 (12.x)SQL Server 2014 (12.x) through SQL Server 2017SQL Server 2017)

Especifica que el grupo de archivos almacena los datos optimizados para memoria en el sistema de archivos.Specifies that the filegroup stores memory optimized data in the file system. Para más información, vea OLTP en memoria (optimización en memoria).For more information, see In-Memory OLTP - In-Memory Optimization. Solo se permite un grupo de archivos MEMORY_OPTIMIZED_DATA por base de datos.Only one MEMORY_OPTIMIZED_DATA filegroup is allowed per database. Para crear tablas optimizadas para memoria, el grupo de archivos no puede estar vacío.For creating memory optimized tables, the filegroup cannot be empty. Debe haber al menos un archivo.There must be at least one file. filegroup_name hace referencia a una ruta de acceso.filegroup_name refers to a path. La ruta de acceso hasta la última carpeta debe existir y la última carpeta no debe existir.The path up to the last folder must exist, and the last folder must not exist.

REMOVE FILEGROUP Quitar grupo de archivos filegroup_name Quita un grupo de archivos de la base de datos.REMOVE FILEGROUP filegroup_name Removes a filegroup from the database. El grupo de archivos no se puede quitar a menos que esté vacío.The filegroup cannot be removed unless it is empty. Quita todos los archivos del primer grupo de archivos.Remove all files from the filegroup first. Para más información, vea "REMOVE FILE logical_file_name" anteriormente en este tema.For more information, see "REMOVE FILE logical_file_name," earlier in this topic.

Nota

A menos que el recolector de elementos no utilizados de FILESTREAM haya quitado todos los archivos de un contenedor de FILESTREAM, la operación ALTER DATABASE REMOVE FILE para quitar un contenedor de FILESTREAM no se ejecutará correctamente y devolverá un error.Unless the FILESTREAM Garbage Collector has removed all the files from a FILESTREAM container, the ALTER DATABASE REMOVE FILE operation to remove a FILESTREAM container will fail and return an error. Vea la sección Quitar un contenedor de FILESTREAM más adelante en este tema.See the Removing a FILESTREAM Container section later in this topic.

MODIFY FILEGROUP filegroup_name { <filegroup_updatability_option> | DEFAULT | NAME = new_filegroup_name } Modifica el grupo de archivos al establecer el estado en READ_ONLY o READ_WRITE, lo que convierte al grupo de archivos en predeterminado para la base de datos o cambia el nombre del grupo de archivos.MODIFY FILEGROUP filegroup_name { <filegroup_updatability_option> | DEFAULT | NAME =new_filegroup_name } Modifies the filegroup by setting the status to READ_ONLY or READ_WRITE, making the filegroup the default filegroup for the database, or changing the filegroup name.

<filegroup_updatability_option> Establece la propiedad de solo lectura o solo lectura/escritura para el grupo de archivos.<filegroup_updatability_option> Sets the read-only or read/write property to the filegroup.

DEFAULT Cambia el grupo de archivos predeterminado de la base de datos a filegroup_name.DEFAULT Changes the default database filegroup to filegroup_name. Solo un grupo de archivos de la base de datos puede ser el grupo de archivos predeterminado.Only one filegroup in the database can be the default filegroup. Para más información, consulte Database Files and Filegroups.For more information, see Database Files and Filegroups.

NAME = new_filegroup_name Cambia el nombre del grupo de archivos a new_filegroup_name.NAME = new_filegroup_name Changes the filegroup name to the new_filegroup_name.

AUTOGROW_SINGLE_FILE Se aplica a: SQL ServerSQL Server (desde SQL Server 2016 (13.x)SQL Server 2016 (13.x) hasta SQL Server 2017SQL Server 2017)AUTOGROW_SINGLE_FILE Applies to: SQL ServerSQL Server ( SQL Server 2016 (13.x)SQL Server 2016 (13.x) through SQL Server 2017SQL Server 2017)

Cuando un archivo del grupo de archivos alcanza el umbral de crecimiento automático, solo ese archivo crece.When a file in the filegroup meets the autogrow threshold, only that file grows. Ésta es la opción predeterminada.This is the default.

AUTOGROW_ALL_FILESAUTOGROW_ALL_FILES

Se aplica a: SQL ServerSQL Server (desde SQL Server 2016 (13.x)SQL Server 2016 (13.x) hasta SQL Server 2017SQL Server 2017)Applies to: SQL ServerSQL Server ( SQL Server 2016 (13.x)SQL Server 2016 (13.x) through SQL Server 2017SQL Server 2017)

Cuando un archivo del grupo de archivos alcanza el umbral de crecimiento automático, crecen todos los archivos del grupo de archivos.When a file in the filegroup meets the autogrow threshold, all files in the filegroup grow.

Nota

Este el valor predeterminado de TempDB.This is the default value for TempDB.

<filegroup_updatability_option>::=<filegroup_updatability_option>::=

Establece la propiedad de solo lectura o solo lectura/escritura para el grupo de archivos.Sets the read-only or read/write property to the filegroup.

READ_ONLY | READONLY Especifica que el grupo de archivos es de solo lectura.READ_ONLY | READONLY Specifies the filegroup is read-only. No se permite la actualización de los objetos del mismo.Updates to objects in it are not allowed. El grupo de archivos principal no puede ser de solo lectura.The primary filegroup cannot be made read-only. Para cambiar este estado, debe tener acceso exclusivo a la base de datos.To change this state, you must have exclusive access to the database. Para obtener más información, vea la cláusula SINGLE_USER.For more information, see the SINGLE_USER clause.

Una base de datos de solo lectura no permite realizar modificaciones en los datos:Because a read-only database does not allow data modifications:

  • Se omite la recuperación automática cuando se inicia el sistema.Automatic recovery is skipped at system startup.
  • No es posible reducir la base de datos.Shrinking the database is not possible.
  • No se produce ningún bloqueo en las bases de datos de solo lectura.No locking occurs in read-only databases. Esto puede acelerar el rendimiento de las consultas.This can cause faster query performance.

Nota

La palabra clave READONLY se quitará en una versión futura de MicrosoftMicrosoftSQL ServerSQL Server.The keyword READONLY will be removed in a future version of MicrosoftMicrosoftSQL ServerSQL Server. Evite el uso de READONLY en los nuevos trabajos de desarrollo y piense en modificar las aplicaciones que utilizan actualmente READONLY.Avoid using READONLY in new development work, and plan to modify applications that currently use READONLY. Utilice READ_ONLY en su lugar.Use READ_ONLY instead.

READ_WRITE | READWRITE Especifica que el grupo es READ_WRITE.READ_WRITE | READWRITE Specifies the group is READ_WRITE. Pueden realizarse actualizaciones en los objetos del grupo de archivos.Updates are enabled for the objects in the filegroup. Para cambiar este estado, debe tener acceso exclusivo a la base de datos.To change this state, you must have exclusive access to the database. Para obtener más información, vea la cláusula SINGLE_USER.For more information, see the SINGLE_USER clause.

Nota

La palabra clave READWRITE se quitará en una versión futura de MicrosoftMicrosoftSQL ServerSQL Server.The keyword READWRITE will be removed in a future version of MicrosoftMicrosoftSQL ServerSQL Server. Evite usar READWRITE en los nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que usan READWRITE para que empleen READ_WRITE.Avoid using READWRITE in new development work, and plan to modify applications that currently use READWRITE to use READ_WRITE instead.

Sugerencia

Puede averiguar el estado de estas opciones si examina la columna is_read_only de la vista de catálogo sys.databases o la propiedad Updateability de la función DATABASEPROPERTYEX.The status of these options can be determined by examining the is_read_only column in the sys.databases catalog view or the Updateability property of the DATABASEPROPERTYEX function.

NotasRemarks

Para reducir el tamaño de una base de datos, use DBCC SHRINKDATABASE.To decrease the size of a database, use DBCC SHRINKDATABASE.

No se puede agregar o quitar un archivo mientras se está ejecutando una instrucción BACKUP.You cannot add or remove a file while a BACKUP statement is running.

Para cada base de datos pueden especificarse hasta 32.767 archivos y 32.767 grupos de archivos.A maximum of 32,767 files and 32,767 filegroups can be specified for each database.

Desde SQL Server 2005 (9.x)SQL Server 2005 (9.x), el estado de un archivo de base de datos (por ejemplo, en línea o sin conexión) se mantiene con independencia del estado de la base de datos.Starting with SQL Server 2005 (9.x)SQL Server 2005 (9.x), the state of a database file (for example, online or offline), is maintained independently from the state of the database. Para más información, vea Estados de los archivos.For more information, see File States.

  • El estado de los archivos de un grupo de archivos determina la disponibilidad de todo el grupo de archivos.The state of the files within a filegroup determines the availability of the whole filegroup. Para que un grupo de archivos esté disponible, todos los archivos del grupo de archivos deben estar en línea.For a filegroup to be available, all files within the filegroup must be online.
  • Si un grupo de archivos se encuentra en modo sin conexión, todos los intentos de acceso al grupo de archivos por parte de una instrucción SQL generan un error.If a filegroup is offline, any try to access the filegroup by an SQL statement will fail with an error. Al generar un plan de consulta para las instrucciones SELECT, el optimizador de consultas evita los índices no clúster y las vistas indizadas que residen en los grupos de archivos sin conexión.When you build query plans for SELECT statements, the query optimizer avoids nonclustered indexes and indexed views that reside in offline filegroups. Esto permite que las instrucciones se ejecuten correctamente.This enables these statements to succeed. No obstante, si el grupo de archivos sin conexión contiene el montón o el índice clúster de la tabla de destino, las instrucciones SELECT no funcionarán.However, if the offline filegroup contains the heap or clustered index of the target table, the SELECT statements fail. Asimismo, cualquier instrucción INSERT, UPDATE o DELETE que modifique una tabla con cualquier índice en un grupo de archivos sin conexión no funcionará.Additionally, any INSERT, UPDATE, or DELETE statement that modifies a table with any index in an offline filegroup will fail.

Los parámetros SIZE, MAXSIZE y FILEGROWTH no se pueden establecer si se ha especificado una ruta UNC para el archivo.SIZE, MAXSIZE, and FILEGROWTH parameters cannot be set when a UNC path is specified for the file.

Los parámetros SIZE y FILEGROWTH no pueden establecerse para grupos de archivos optimizados para memoria.SIZE and FILEGROWTH parameters cannot be set for memory optimized filegroups.

La palabra clave READONLY se quitará en una versión futura de MicrosoftMicrosoftSQL ServerSQL Server.The keyword READONLY will be removed in a future version of MicrosoftMicrosoftSQL ServerSQL Server. Evite el uso de READONLY en los nuevos trabajos de desarrollo y piense en modificar las aplicaciones que utilizan actualmente READONLY.Avoid using READONLY in new development work, and plan to modify applications that currently use READONLY. Utilice READ_ONLY en su lugar.Use READ_ONLY instead.

La palabra clave READWRITE se quitará en una versión futura de MicrosoftMicrosoftSQL ServerSQL Server.The keyword READWRITE will be removed in a future version of MicrosoftMicrosoftSQL ServerSQL Server. Evite usar READWRITE en los nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que usan READWRITE para que empleen READ_WRITE.Avoid using READWRITE in new development work, and plan to modify applications that currently use READWRITE to use READ_WRITE instead.

Mover archivosMoving Files

Puede mover los archivos de sistema, de datos definidos por el usuario o de registro si especifica la ubicación nueva en FILENAME.You can move system or user-defined data and log files by specifying the new location in FILENAME. Esto puede resultar útil en los siguientes escenarios:This may be useful in the following scenarios:

  • Recuperación de un error.Failure recovery. Por ejemplo, la base de datos está en modo de sospecha o cerrada debido a un error del hardware.For example, the database is in suspect mode or shutdown caused by hardware failure.
  • Reubicación planeada.Planned relocation.
  • Reubicación para el mantenimiento planeado del disco.Relocation for scheduled disk maintenance.

Para más información, vea Mover archivos de base de datos.For more information, see Move Database Files.

Inicializar archivosInitializing Files

De forma predeterminada, los archivos de datos y registro se inicializan mediante el relleno de los archivos con ceros al realizar una de las siguientes operaciones:By default, data and log files are initialized by filling the files with zeros when you perform one of the following operations:

  • Crear una base de datos.Create a database.
  • Agregar archivos a una base de datos existente.Add files to an existing database.
  • Aumentar el tamaño de un archivo existente.Increase the size of an existing file.
  • Restaurar una base de datos o un grupo de archivos.Restore a database or filegroup.

Los archivos de datos se pueden inicializar de forma instantánea.Data files can be initialized instantaneously. Esto permite la ejecución rápida de estas operaciones con los archivos.This enables for fast execution of these file operations. Para obtener más información, vea Inicialización de archivos de base de datos.For more information, see Database File Initialization.

Quitar un contenedor de FILESTREAMRemoving a FILESTREAM Container

Aunque un contenedor de FILESTREAM puede haberse vaciado utilizando la operación “DBCC SHRINKFILE”, la base de datos puede seguir necesitando mantener las referencias a los archivos eliminados por diversas razones de mantenimiento del sistema.Even though FILESTREAM container may have been emptied using the "DBCC SHRINKFILE" operation, the database may still need to maintain references to the deleted files for various system maintenance reasons. sp_filestream_force_garbage_collection ejecutará el recolector de elementos no utilizados de FILESTREAM para quitar estos archivos cuando exista la seguridad necesaria.sp_filestream_force_garbage_collection will run the FILESTREAM Garbage Collector to remove these files when it is safe to do so. A menos que el recolector de elementos no utilizados de FILESTREAM haya quitado todos los archivos de un contenedor de FILESTREAM, la operación ALTER DATABASE REMOVE FILE para quitar un contenedor de FILESTREAM no se ejecutará correctamente y devolverá un error.Unless the FILESTREAM Garbage Collector has removed all the files from a FILESTREAM container, the ALTER DATABASE REMOVE FILE operation will fail to remove a FILESTREAM container and will return an error. Se recomienda el siguiente proceso para quitar un contenedor de FILESTREAM.The following process is recommended to remove a FILESTREAM container.

  1. Ejecute DBCC SHRINKFILE con la opción EMPTYFILE para mover el contenido activo de este contenedor a otros contenedores.Run DBCC SHRINKFILE with the EMPTYFILE option to move the active contents of this container to other containers.
  2. Asegúrese de que se han tomado copias de seguridad de registros en el modelo de recuperación FULL o BULK_LOGGED.Ensure that Log backups have been taken, in the FULL or BULK_LOGGED recovery model.
  3. Asegúrese de que se ha ejecutado el trabajo del lector del registro de replicación, si es pertinente.Ensure that the replication log reader job has been run, if relevant.
  4. Ejecute sp_filestream_force_garbage_collection para obligar al recolector de elementos no utilizados a eliminar los archivos que ya no se necesiten en este contenedor.Run sp_filestream_force_garbage_collection to force the garbage collector to delete any files that are no longer needed in this container.
  5. Ejecute ALTER DATABASE con la opción REMOVE FILE para quitar este contenedor.Execute ALTER DATABASE with the REMOVE FILE option to remove this container.
  6. Repita los pasos 2 a 4 una vez más para completar la recolección de elementos no utilizados.Repeat steps 2 through 4 once more to complete the garbage collection.
  7. Utilice ALTER Database...REMOVE FILE para quitar este contenedor.Use ALTER Database...REMOVE FILE to remove this container.

EjemplosExamples

A.A. Agregar un archivo a una base de datosAdding a file to a database

En el siguiente ejemplo se agrega un archivo de datos de 5 MB a la base de datos AdventureWorks2012AdventureWorks2012.The following example adds a 5-MB data file to the AdventureWorks2012AdventureWorks2012 database.

USE master;
GO
ALTER DATABASE AdventureWorks2012
ADD FILE
(
    NAME = Test1dat2,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\t1dat2.ndf',
    SIZE = 5MB,
    MAXSIZE = 100MB,
    FILEGROWTH = 5MB
);
GO

B.B. Agregar a una base de datos un grupo de archivos con dos archivosAdding a filegroup with two files to a database

En el siguiente ejemplo se crea el grupo de archivos Test1FG1 en la base de datos AdventureWorks2012AdventureWorks2012 y se agregan dos archivos de 5 MB al grupo de archivos.The following example creates the filegroup Test1FG1 in the AdventureWorks2012AdventureWorks2012 database and adds two 5-MB files to the filegroup.

USE master
GO
ALTER DATABASE AdventureWorks2012
ADD FILEGROUP Test1FG1;
GO
ALTER DATABASE AdventureWorks2012
ADD FILE
(
    NAME = test1dat3,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\t1dat3.ndf',
    SIZE = 5MB,
    MAXSIZE = 100MB,
    FILEGROWTH = 5MB
),  
(  
    NAME = test1dat4,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\t1dat4.ndf',
    SIZE = 5MB,
    MAXSIZE = 100MB,
    FILEGROWTH = 5MB
)  
TO FILEGROUP Test1FG1;
GO

C.C. Agregar dos archivos de registro a una base de datosAdding two log files to a database

En el siguiente ejemplo se agregan dos archivos de registro de 5 MB a la base de datos AdventureWorks2012AdventureWorks2012.The following example adds two 5-MB log files to the AdventureWorks2012AdventureWorks2012 database.

USE master;
GO
ALTER DATABASE AdventureWorks2012
ADD LOG FILE
(
    NAME = test1log2,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\test2log.ldf',
    SIZE = 5MB,
    MAXSIZE = 100MB,
    FILEGROWTH = 5MB
),
(
    NAME = test1log3,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\test3log.ldf',
    SIZE = 5MB,
    MAXSIZE = 100MB,
    FILEGROWTH = 5MB
);
GO

D.D. Quitar un archivo de una base de datosRemoving a file from a database

En el siguiente ejemplo se quita uno de los archivos agregados en el ejemplo B.The following example removes one of the files added in example B.

USE master;
GO
ALTER DATABASE AdventureWorks2012
REMOVE FILE test1dat4;
GO

E.E. Modificar un archivoModifying a file

En el siguiente ejemplo aumenta el tamaño de uno de los archivos agregados en el ejemplo B. La instrucción ALTER DATABASE con el comando MODIFY FILE solo sirve para que un archivo aumente de tamaño; si lo que necesita es reducir el tamaño, deberá usar DBCC SHRINKFILE.The following example increases the size of one of the files added in example B. The ALTER DATABASE with MODIFY FILE command can only make a file size bigger, so if you need to make the file size smaller you need to use DBCC SHRINKFILE.

USE master;
GO

ALTER DATABASE AdventureWorks2012
MODIFY FILE
(NAME = test1dat3,
SIZE = 200MB);
GO

En este ejemplo, el tamaño de un archivo de datos se reduce a 100 MB y, después, se especifica el tamaño en esa cantidad.This example shrinks the size of a data file to 100 MB, and then specifies the size at that amount.

USE AdventureWorks2012;
GO

DBCC SHRINKFILE (AdventureWorks2012_data, 100);
GO

USE master;
GO
ALTER DATABASE AdventureWorks2012
MODIFY FILE
(NAME = test1dat3,
SIZE = 200MB);
GO

F.F. Mover un archivo a otra ubicaciónMoving a file to a new location

En el siguiente ejemplo se mueve el archivo Test1dat2 creado en el ejemplo A a otro directorio.The following example moves the Test1dat2 file created in example A to a new directory.

Nota

Debe mover físicamente el archivo al directorio nuevo antes de ejecutar este ejemplo.You must physically move the file to the new directory before running this example. A continuación, detenga e inicie la instancia de SQL ServerSQL Server o establezca la base de datos AdventureWorks2012AdventureWorks2012 en OFFLINE y después en ONLINE para implementar el cambio.Afterward, stop and start the instance of SQL ServerSQL Server or take the AdventureWorks2012AdventureWorks2012 database OFFLINE and then ONLINE to implement the change.

USE master;
GO
ALTER DATABASE AdventureWorks2012
MODIFY FILE
(
    NAME = Test1dat2,
    FILENAME = N'c:\t1dat2.ndf'
);
GO

G.G. Mover tempdb a otra ubicaciónMoving tempdb to a new location

En el siguiente ejemplo se mueve tempdb de su ubicación actual en el disco a otra ubicación del disco.The following example moves tempdb from its current location on the disk to another disk location. Puesto que tempdb se vuelve a crear cada vez que se inicia el servicio MSSQLSERVER, no es necesario mover físicamente los archivos de datos y de registro.Because tempdb is re-created each time the MSSQLSERVER service is started, you do not have to physically move the data and log files. Los archivos se crean cuando se reinicia el servicio en el paso 3.The files are created when the service is restarted in step 3. Hasta que se reinicie el servicio, tempdb continúa funcionando en su ubicación existente.Until the service is restarted, tempdb continues to function in its existing location.

  1. Averigüe los nombres de los archivos lógicos de la base de datos tempdb y su ubicación actual en el disco.Determine the logical file names of the tempdb database and their current location on disk.

    SELECT name, physical_name
    FROM sys.master_files
    WHERE database_id = DB_ID('tempdb');
    GO
    
  2. Cambie la ubicación de cada archivo con ALTER DATABASE.Change the location of each file by using ALTER DATABASE.

    USE maser;
    GO
    ALTER DATABASE tempdb
    MODIFY FILE (NAME = tempdev, FILENAME = 'E:\SQLData\tempdb.mdf');
    GO
    ALTER DATABASE tempdb
    MODIFY FILE (NAME = templog, FILENAME = 'E:\SQLData\templog.ldf');
    GO
    
  3. Detenga y reinicie la instancia de SQL ServerSQL Server.Stop and restart the instance of SQL ServerSQL Server.

  4. Compruebe el cambio de los archivos.Verify the file change.

    SELECT name, physical_name
    FROM sys.master_files
    WHERE database_id = DB_ID('tempdb');
    
  5. Elimine los archivos tempdb.mdf y templog.ldf de su ubicación original.Delete the tempdb.mdf and templog.ldf files from their original location.

H.H. Establecer un grupo de archivos como predeterminadoMaking a filegroup the default

En el siguiente ejemplo, el grupo de archivos Test1FG1 creado en el ejemplo B se establece como predeterminado.The following example makes the Test1FG1 filegroup created in example B the default filegroup. A continuación, el grupo de archivos predeterminado se restablece al grupo de archivos PRIMARY.Then, the default filegroup is reset to the PRIMARY filegroup. Tenga en cuenta que PRIMARY se debe delimitar con corchetes o comillas.Note that PRIMARY must be delimited by brackets or quotation marks.

USE master;
GO
ALTER DATABASE AdventureWorks2012
MODIFY FILEGROUP Test1FG1 DEFAULT;
GO
ALTER DATABASE AdventureWorks2012
MODIFY FILEGROUP [PRIMARY] DEFAULT;
GO

I.I. Agregar un grupo de archivos mediante ALTER DATABASEAdding a Filegroup Using ALTER DATABASE

En el ejemplo siguiente se agrega un FILEGROUP que contiene la cláusula FILESTREAM a la base de datos FileStreamPhotoDB.The following example adds a FILEGROUP that contains the FILESTREAM clause to the FileStreamPhotoDB database.

--Create and add a FILEGROUP that CONTAINS the FILESTREAM clause.
ALTER DATABASE FileStreamPhotoDB
ADD FILEGROUP TodaysPhotoShoot
CONTAINS FILESTREAM;
GO

--Add a file for storing database photos to FILEGROUP
ALTER DATABASE FileStreamPhotoDB
ADD FILE
(
  NAME= 'PhotoShoot1',
  FILENAME = 'C:\Users\Administrator\Pictures\TodaysPhotoShoot.ndf'
)
TO FILEGROUP TodaysPhotoShoot;
GO

En el ejemplo siguiente se agrega un FILEGROUP que contiene la cláusula MEMORY_OPTIMIZED_DATA a la base de datos xtp_db.The following example adds a FILEGROUP that contains the MEMORY_OPTIMIZED_DATA clause to the xtp_db database. El grupo de archivos almacena los datos optimizados en memoria.The filegroup stores memory optimized data.

--Create and add a FILEGROUP that CONTAINS the MEMORY_OPTIMIZED_DATA clause.
ALTER DATABASE xtp_db
ADD FILEGROUP xtp_fg
CONTAINS MEMORY_OPTIMIZED_DATA;
GO

--Add a file for storing memory optimized data to FILEGROUP
ALTER DATABASE xtp_db
ADD FILE
(
  NAME='xtp_mod',
  FILENAME='d:\data\xtp_mod'
)
TO FILEGROUP xtp_fg;
GO

J.J. Cambiar el grupo de archivos para que cuando un archivo de ese grupo alcance el umbral de crecimiento automático, crezcan todos los archivos del grupoChange filegroup so that when a file in the filegroup meets the autogrow threshold, all files in the filegroup grow

En el siguiente ejemplo se generan las instrucciones ALTER DATABASE necesarias para modificar grupos de archivos de lectura/escritura con la opción AUTOGROW_ALL_FILES.The following example generates the required ALTER DATABASE statements to modify read-write filegroups with the AUTOGROW_ALL_FILES setting.

--Generate ALTER DATABASE ... MODIFY FILEGROUP statements
--so that all read-write filegroups grow at the same time.
SET NOCOUNT ON;

DROP TABLE IF EXISTS #tmpdbs
CREATE TABLE #tmpdbs (id int IDENTITY(1,1), [dbid] int, [dbname] sysname, isdone bit);

DROP TABLE IF EXISTS #tmpfgs
CREATE TABLE #tmpfgs (id int IDENTITY(1,1), [dbid] int, [dbname] sysname, fgname sysname, isdone bit);

INSERT INTO #tmpdbs ([dbid], [dbname], [isdone])
SELECT database_id, name, 0 FROM master.sys.databases (NOLOCK) WHERE is_read_only = 0 AND state = 0;

DECLARE @dbid int, @query VARCHAR(1000), @dbname sysname, @fgname sysname

WHILE (SELECT COUNT(id) FROM #tmpdbs WHERE isdone = 0) > 0
BEGIN
  SELECT TOP 1 @dbname = [dbname], @dbid = [dbid] FROM #tmpdbs WHERE isdone = 0

  SET @query = 'SELECT ' + CAST(@dbid AS NVARCHAR) + ', ''' + @dbname + ''', [name], 0 FROM [' + @dbname + '].sys.filegroups WHERE [type] = ''FG'' AND is_read_only = 0;'
  INSERT INTO #tmpfgs
  EXEC (@query)

  UPDATE #tmpdbs
  SET isdone = 1
  WHERE [dbid] = @dbid
END;

IF (SELECT COUNT(ID) FROM #tmpfgs) > 0
BEGIN
  WHILE (SELECT COUNT(id) FROM #tmpfgs WHERE isdone = 0) > 0
  BEGIN
    SELECT TOP 1 @dbname = [dbname], @dbid = [dbid], @fgname = fgname FROM #tmpfgs WHERE isdone = 0

    SET @query = 'ALTER DATABASE [' + @dbname + '] MODIFY FILEGROUP [' + @fgname + '] AUTOGROW_ALL_FILES;'

    PRINT @query

    UPDATE #tmpfgs
    SET isdone = 1
    WHERE [dbid] = @dbid AND fgname = @fgname
  END
END;
GO

Consulte tambiénSee Also

SQL ServerSQL Server * Instancia administrada de
SQL Database *
* SQL Database
managed instance *

 

 

Instancia administrada de Azure SQL DatabaseAzure SQL Database managed instance

Use esta instrucción con una base de datos en Instancia administrada de Azure SQL Database.Use this statement with a database in Azure SQL Database managed instance.

Sintaxis de las bases de datos en una Instancia administradaSyntax for databases in a managed instance

ALTER DATABASE database_name
{
    <add_or_modify_files>
  | <add_or_modify_filegroups>
}
[;]

<add_or_modify_files>::=
{
    ADD FILE <filespec> [ ,...n ]
        [ TO FILEGROUP { filegroup_name } ]
  | REMOVE FILE logical_file_name
  | MODIFY FILE <filespec>
}

<filespec>::=
(
    NAME = logical_file_name
    [ , SIZE = size [ KB | MB | GB | TB ] ]
    [ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ]
    [ , FILEGROWTH = growth_increment [ KB | MB | GB | TB| % ] ]
)

<add_or_modify_filegroups>::=
{
    | ADD FILEGROUP filegroup_name
    | REMOVE FILEGROUP filegroup_name
    | MODIFY FILEGROUP filegroup_name
        { <filegroup_updatability_option>
        | DEFAULT
        | NAME = new_filegroup_name
        | { AUTOGROW_SINGLE_FILE | AUTOGROW_ALL_FILES }
        }
}  
<filegroup_updatability_option>::=
{
    { READONLY | READWRITE }
    | { READ_ONLY | READ_WRITE }
}

ArgumentosArguments

<add_or_modify_files>::=<add_or_modify_files>::=

Especifica el archivo que se va a agregar, quitar o modificar.Specifies the file to be added, removed, or modified.

database_name Es el nombre de la base de datos que se va a modificar.database_name Is the name of the database to be modified.

ADD FILE Agrega un archivo a la base de datos.ADD FILE Adds a file to the database.

TO FILEGROUP { filegroup_name } Especifica el grupo de archivos al que se agrega el archivo especificado.TO FILEGROUP { filegroup_name } Specifies the filegroup to which to add the specified file. Para mostrar los grupos de archivos actuales y qué grupo de archivos es el predeterminado, use la vista de catálogo sys.filegroups.To display the current filegroups and which filegroup is the current default, use the sys.filegroups catalog view.

REMOVE FILE logical_file_name Quita la descripción del archivo lógico de una instancia de SQL ServerSQL Server y elimina el archivo físico.REMOVE FILE logical_file_name Removes the logical file description from an instance of SQL ServerSQL Server and deletes the physical file. El archivo no se puede quitar a menos que esté vacío.The file cannot be removed unless it is empty.

logical_file_name Es el nombre lógico utilizado en SQL ServerSQL Server cuando se hace referencia al archivo.logical_file_name Is the logical name used in SQL ServerSQL Server when referencing the file.

MODIFY FILE Especifica el archivo que se debe modificar.MODIFY FILE Specifies the file that should be modified. Solo se puede cambiar una propiedad <filespec> cada vez.Only one <filespec> property can be changed at a time. NAME se debe especificar siempre en <filespec> para identificar el archivo que se va a modificar.NAME must always be specified in the <filespec> to identify the file to be modified. Si se especifica SIZE, el nuevo tamaño debe ser mayor que el tamaño actual del archivo.If SIZE is specified, the new size must be larger than the current file size.

<filespec>::=<filespec>::=

Controla las propiedades de archivo.Controls the file properties.

NAME logical_file_name Especifica el nombre lógico del archivo.NAME logical_file_name Specifies the logical name of the file.

logical_file_name Es el nombre lógico utilizado en una instancia de SQL ServerSQL Server al hacer referencia al archivo.logical_file_name Is the logical name used in an instance of SQL ServerSQL Server when referencing the file.

NEWNAME new_logical_file_name Especifica un nombre lógico nuevo para el archivo.NEWNAME new_logical_file_name Specifies a new logical name for the file.

new_logical_file_name Es el nombre que reemplaza el nombre del archivo lógico existente.new_logical_file_name Is the name to replace the existing logical file name. El nombre debe ser único en la base de datos y debe cumplir las mismas reglas que los identificadores.The name must be unique within the database and comply with the rules for identifiers. El nombre puede ser una constante Unicode o de caracteres, un identificador regular o un identificador delimitado.The name can be a character or Unicode constant, a regular identifier, or a delimited identifier.

SIZE size Especifica el tamaño de archivo.SIZE size Specifies the file size.

size Es el tamaño del archivo.size Is the size of the file.

Cuando se especifica con ADD FILE, size es el tamaño inicial del archivo.When specified with ADD FILE, size is the initial size for the file. Si se especifica con MODIFY FILE, size es el nuevo tamaño de archivo y debe ser mayor que el tamaño de archivo actual.When specified with MODIFY FILE, size is the new size for the file, and must be larger than the current file size.

Cuando no se suministra size para el archivo principal, SQL ServerSQL Server usa el tamaño del archivo principal de la base de datos modelo.When size is not supplied for the primary file, the SQL ServerSQL Server uses the size of the primary file in the model database. Cuando se especifica un archivo de datos secundario o un archivo de registro, pero no se especifica size para el archivo, Motor de base de datosDatabase Engine hace que el tamaño del archivo sea 1 MB.When a secondary data file or log file is specified but size is not specified for the file, the Motor de base de datosDatabase Engine makes the file 1 MB.

Se pueden utilizar los sufijos KB, MB, GB y TB para especificar kilobytes, megabytes, gigabytes o terabytes.The KB, MB, GB, and TB suffixes can be used to specify kilobytes, megabytes, gigabytes, or terabytes. El valor predeterminado es MB.The default is MB. Especifique un número entero y no incluya decimales.Specify a whole number and do not include a decimal. Para especificar una fracción de un megabyte, convierta el valor en kilobytes multiplicando el número por 1024.To specify a fraction of a megabyte, convert the value to kilobytes by multiplying the number by 1024. Por ejemplo, especifique 1536 KB en lugar de 1,5 MB (1,5 x 1024 = 1536).For example, specify 1536 KB instead of 1.5 MB (1.5 x 1024 = 1536).

MAXSIZE { max_size| UNLIMITED } Especifica el tamaño de archivo máximo que puede alcanzar el archivo.MAXSIZE { max_size| UNLIMITED } Specifies the maximum file size to which the file can grow.

max_size Es el tamaño máximo del archivo.max_size Is the maximum file size. Se pueden utilizar los sufijos KB, MB, GB y TB para especificar kilobytes, megabytes, gigabytes o terabytes.The KB, MB, GB, and TB suffixes can be used to specify kilobytes, megabytes, gigabytes, or terabytes. El valor predeterminado es MB.The default is MB. Especifique un número entero y no incluya decimales.Specify a whole number and do not include a decimal. Si no se especifica max_size, el tamaño de archivo aumenta hasta que el disco esté lleno.If max_size is not specified, the file size will increase until the disk is full.

UNLIMITED Especifica que el archivo crecerá hasta que el disco esté lleno.UNLIMITED Specifies that the file grows until the disk is full. En SQL ServerSQL 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.In SQL ServerSQL Server, a log file specified with unlimited growth has a maximum size of 2 TB, and a data file has a maximum size of 16 TB.

FILEGROWTH growth_increment Especifica el incremento de crecimiento automático del archivo.FILEGROWTH growth_increment Specifies the automatic growth increment of the file. El valor FILEGROWTH de un archivo no puede superar el valor MAXSIZE.The FILEGROWTH setting for a file cannot exceed the MAXSIZE setting.

growth_increment Es la cantidad de espacio que se agrega al archivo siempre que se necesita más espacio.growth_increment Is the amount of space added to the file every time new space is required.

El valor se puede especificar en MB, KB, GB, TB o como porcentaje (%).The value can be specified in MB, KB, GB, TB, or percent (%). Si se especifica un número sin los sufijos MB, KB o %, el valor predeterminado es MB.If a number is specified without an MB, KB, or % suffix, the default is MB. Cuando se especifica %, el incremento de crecimiento es el porcentaje especificado del tamaño del archivo en el momento en que tiene lugar el incremento.When % is specified, the growth increment size is the specified percentage of the size of the file at the time the increment occurs. El tamaño especificado se redondea al múltiplo de 64 KB más cercano.The size specified is rounded to the nearest 64 KB.

El valor 0 indica que el aumento automático se establece en OFF y no se permite ningún espacio adicional.A value of 0 indicates that automatic growth is set to off and no additional space is allowed.

Si no se especifica FILEGROWTH, los valores predeterminados son:If FILEGROWTH is not specified, the default values are:

  • Datos: 64 MBData 64 MB
  • Archivos de registro: 64 MBLog files 64 MB

<add_or_modify_filegroups>::=<add_or_modify_filegroups>::=

Agrega, modifica o quita un grupo de archivos de la base de datos.Add, modify, or remove a filegroup from the database.

ADD FILEGROUP filegroup_name Agrega un grupo de archivos a la base de datos.ADD FILEGROUP filegroup_name Adds a filegroup to the database.

En el ejemplo siguiente se crea un grupo de archivos que se agrega a una base de datos denominada sql_db_mi y se agrega un archivo al grupo de archivos.The following example creates a filegroup that is added to a database named sql_db_mi, and adds a file to the filegroup.

ALTER DATABASE sql_db_mi ADD FILEGROUP sql_db_mi_fg;
GO
ALTER DATABASE sql_db_mi ADD FILE (NAME='sql_db_mi_mod') TO FILEGROUP sql_db_mi_fg;

REMOVE FILEGROUP Quitar grupo de archivos filegroup_name Quita un grupo de archivos de la base de datos.REMOVE FILEGROUP filegroup_name Removes a filegroup from the database. El grupo de archivos no se puede quitar a menos que esté vacío.The filegroup cannot be removed unless it is empty. Quita todos los archivos del primer grupo de archivos.Remove all files from the filegroup first. Para más información, vea "REMOVE FILE logical_file_name" anteriormente en este tema.For more information, see "REMOVE FILE logical_file_name," earlier in this topic.

MODIFY FILEGROUP filegroup_name { <filegroup_updatability_option> | DEFAULT | NAME = new_filegroup_name } Modifica el grupo de archivos al establecer el estado en READ_ONLY o READ_WRITE, lo que convierte al grupo de archivos en predeterminado para la base de datos o cambia el nombre del grupo de archivos.MODIFY FILEGROUP filegroup_name { <filegroup_updatability_option> | DEFAULT | NAME =new_filegroup_name } Modifies the filegroup by setting the status to READ_ONLY or READ_WRITE, making the filegroup the default filegroup for the database, or changing the filegroup name.

<filegroup_updatability_option> Establece la propiedad de solo lectura o solo lectura/escritura para el grupo de archivos.<filegroup_updatability_option> Sets the read-only or read/write property to the filegroup.

DEFAULT Cambia el grupo de archivos predeterminado de la base de datos a filegroup_name.DEFAULT Changes the default database filegroup to filegroup_name. Solo un grupo de archivos de la base de datos puede ser el grupo de archivos predeterminado.Only one filegroup in the database can be the default filegroup. Para más información, consulte Database Files and Filegroups.For more information, see Database Files and Filegroups.

NAME = new_filegroup_name Cambia el nombre del grupo de archivos a new_filegroup_name.NAME = new_filegroup_name Changes the filegroup name to the new_filegroup_name.

AUTOGROW_SINGLE_FILEAUTOGROW_SINGLE_FILE

Cuando un archivo del grupo de archivos alcanza el umbral de crecimiento automático, solo ese archivo crece.When a file in the filegroup meets the autogrow threshold, only that file grows. Ésta es la opción predeterminada.This is the default.

AUTOGROW_ALL_FILESAUTOGROW_ALL_FILES

Cuando un archivo del grupo de archivos alcanza el umbral de crecimiento automático, crecen todos los archivos del grupo de archivos.When a file in the filegroup meets the autogrow threshold, all files in the filegroup grow.

<filegroup_updatability_option>::=<filegroup_updatability_option>::=

Establece la propiedad de solo lectura o solo lectura/escritura para el grupo de archivos.Sets the read-only or read/write property to the filegroup.

READ_ONLY | READONLY Especifica que el grupo de archivos es de solo lectura.READ_ONLY | READONLY Specifies the filegroup is read-only. No se permite la actualización de los objetos del mismo.Updates to objects in it are not allowed. El grupo de archivos principal no puede ser de solo lectura.The primary filegroup cannot be made read-only. Para cambiar este estado, debe tener acceso exclusivo a la base de datos.To change this state, you must have exclusive access to the database. Para obtener más información, vea la cláusula SINGLE_USER.For more information, see the SINGLE_USER clause.

Una base de datos de solo lectura no permite realizar modificaciones en los datos:Because a read-only database does not allow data modifications:

  • Se omite la recuperación automática cuando se inicia el sistema.Automatic recovery is skipped at system startup.
  • No es posible reducir la base de datos.Shrinking the database is not possible.
  • No se produce ningún bloqueo en las bases de datos de solo lectura.No locking occurs in read-only databases. Esto puede acelerar el rendimiento de las consultas.This can cause faster query performance.

Nota

La palabra clave READONLY se quitará en una versión futura de MicrosoftMicrosoft SQL ServerSQL Server.The keyword READONLY will be removed in a future version of MicrosoftMicrosoftSQL ServerSQL Server. Evite el uso de READONLY en los nuevos trabajos de desarrollo y piense en modificar las aplicaciones que utilizan READONLY actualmente.Avoid using READONLY in new development work, and plan to modify applications that currently use READONLY. Utilice READ_ONLY en su lugar.Use READ_ONLY instead.

READ_WRITE | READWRITE Especifica que el grupo es READ_WRITE.READ_WRITE | READWRITE Specifies the group is READ_WRITE. Pueden realizarse actualizaciones en los objetos del grupo de archivos.Updates are enabled for the objects in the filegroup. Para cambiar este estado, debe tener acceso exclusivo a la base de datos.To change this state, you must have exclusive access to the database. Para obtener más información, vea la cláusula SINGLE_USER.For more information, see the SINGLE_USER clause.

Nota

La palabra clave READWRITE se quitará en una versión futura de MicrosoftMicrosoftSQL ServerSQL Server.The keyword READWRITE will be removed in a future version of MicrosoftMicrosoftSQL ServerSQL Server. Evite usar READWRITE en los nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que usan READWRITE para que empleen READ_WRITE.Avoid using READWRITE in new development work, and plan to modify applications that currently use READWRITE to use READ_WRITE instead.

Puede averiguar el estado de estas opciones si examina la columna is_read_only de la vista de catálogo sys.databases o la propiedad Updateability de la función DATABASEPROPERTYEX.The status of these options can be determined by examining the is_read_only column in the sys.databases catalog view or the Updateability property of the DATABASEPROPERTYEX function.

NotasRemarks

Para reducir el tamaño de una base de datos, use DBCC SHRINKDATABASE.To decrease the size of a database, use DBCC SHRINKDATABASE.

No se puede agregar o quitar un archivo mientras se está ejecutando una instrucción BACKUP.You cannot add or remove a file while a BACKUP statement is running.

Para cada base de datos pueden especificarse hasta 32.767 archivos y 32.767 grupos de archivos.A maximum of 32,767 files and 32,767 filegroups can be specified for each database.

EjemplosExamples

A.A. Agregar un archivo a una base de datosAdding a file to a database

En el siguiente ejemplo se agrega un archivo de datos de 5 MB a la base de datos AdventureWorks2012AdventureWorks2012.The following example adds a 5-MB data file to the AdventureWorks2012AdventureWorks2012 database.

USE master;
GO
ALTER DATABASE AdventureWorks2012
ADD FILE
(
  NAME = Test1dat2,
    SIZE = 5MB,
    MAXSIZE = 100MB,
    FILEGROWTH = 5MB
);
GO

B.B. Agregar a una base de datos un grupo de archivos con dos archivosAdding a filegroup with two files to a database

En el siguiente ejemplo se crea el grupo de archivos Test1FG1 en la base de datos AdventureWorks2012AdventureWorks2012 y se agregan dos archivos de 5 MB al grupo de archivos.The following example creates the filegroup Test1FG1 in the AdventureWorks2012AdventureWorks2012 database and adds two 5-MB files to the filegroup.

USE master
GO
ALTER DATABASE AdventureWorks2012
ADD FILEGROUP Test1FG1;
GO
ALTER DATABASE AdventureWorks2012
ADD FILE
(
    NAME = test1dat3,
    SIZE = 5MB,
    MAXSIZE = 100MB,
    FILEGROWTH = 5MB
),
(
    NAME = test1dat4,
    SIZE = 5MB,
    MAXSIZE = 100MB,
    FILEGROWTH = 5MB
)  
TO FILEGROUP Test1FG1;
GO

C.C. Quitar un archivo de una base de datosRemoving a file from a database

En el siguiente ejemplo se quita uno de los archivos agregados en el ejemplo B.The following example removes one of the files added in example B.

USE master;
GO
ALTER DATABASE AdventureWorks2012
REMOVE FILE test1dat4;
GO

D.D. Modificar un archivoModifying a file

En el siguiente ejemplo aumenta el tamaño de uno de los archivos agregados en el ejemplo B. La instrucción ALTER DATABASE con el comando MODIFY FILE solo sirve para que un archivo aumente de tamaño; si lo que necesita es reducir el tamaño, deberá usar DBCC SHRINKFILE.The following example increases the size of one of the files added in example B. The ALTER DATABASE with MODIFY FILE command can only make a file size bigger, so if you need to make the file size smaller you need to use DBCC SHRINKFILE.

USE master;
GO

ALTER DATABASE AdventureWorks2012
MODIFY FILE
(NAME = test1dat3,
SIZE = 200MB);
GO

En este ejemplo, el tamaño de un archivo de datos se reduce a 100 MB y, después, se especifica el tamaño en esa cantidad.This example shrinks the size of a data file to 100 MB, and then specifies the size at that amount.

USE AdventureWorks2012;
GO

DBCC SHRINKFILE (AdventureWorks2012_data, 100);
GO

USE master;
GO

ALTER DATABASE AdventureWorks2012
MODIFY FILE
(NAME = test1dat3,
SIZE = 200MB);
GO

E.E. Establecer un grupo de archivos como predeterminadoMaking a filegroup the default

En el siguiente ejemplo, el grupo de archivos Test1FG1 creado en el ejemplo B se establece como predeterminado.The following example makes the Test1FG1 filegroup created in example B the default filegroup. A continuación, el grupo de archivos predeterminado se restablece al grupo de archivos PRIMARY.Then, the default filegroup is reset to the PRIMARY filegroup. Tenga en cuenta que PRIMARY se debe delimitar con corchetes o comillas.Note that PRIMARY must be delimited by brackets or quotation marks.

USE master;
GO
ALTER DATABASE AdventureWorks2012
MODIFY FILEGROUP Test1FG1 DEFAULT;
GO
ALTER DATABASE AdventureWorks2012
MODIFY FILEGROUP [PRIMARY] DEFAULT;
GO

F.F. Agregar un grupo de archivos mediante ALTER DATABASEAdding a Filegroup Using ALTER DATABASE

En el ejemplo siguiente se agrega FILEGROUP a la base de datos MyDB.The following example adds a FILEGROUP to the MyDB database.

--Create and add a FILEGROUP
ALTER DATABASE MyDB
ADD FILEGROUP NewFG;
GO

--Add a file to FILEGROUP
ALTER DATABASE MyDB
ADD FILE
(
    NAME= 'MyFile',
)
TO FILEGROUP NewFG;
GO

G.G. Cambiar el grupo de archivos para que cuando un archivo de ese grupo alcance el umbral de crecimiento automático, crezcan todos los archivos del grupoChange filegroup so that when a file in the filegroup meets the autogrow threshold, all files in the filegroup grow

En el siguiente ejemplo se generan las instrucciones ALTER DATABASE necesarias para modificar grupos de archivos de lectura/escritura con la opción AUTOGROW_ALL_FILES.The following example generates the required ALTER DATABASE statements to modify read-write filegroups with the AUTOGROW_ALL_FILES setting.

--Generate ALTER DATABASE ... MODIFY FILEGROUP statements
--so that all read-write filegroups grow at the same time.
SET NOCOUNT ON;

DROP TABLE IF EXISTS #tmpdbs
CREATE TABLE #tmpdbs (id int IDENTITY(1,1), [dbid] int, [dbname] sysname, isdone bit);

DROP TABLE IF EXISTS #tmpfgs
CREATE TABLE #tmpfgs (id int IDENTITY(1,1), [dbid] int, [dbname] sysname, fgname sysname, isdone bit);

INSERT INTO #tmpdbs ([dbid], [dbname], [isdone])
SELECT database_id, name, 0 FROM master.sys.databases (NOLOCK) WHERE is_read_only = 0 AND state = 0;

DECLARE @dbid int, @query VARCHAR(1000), @dbname sysname, @fgname sysname

WHILE (SELECT COUNT(id) FROM #tmpdbs WHERE isdone = 0) > 0
BEGIN
    SELECT TOP 1 @dbname = [dbname], @dbid = [dbid] FROM #tmpdbs WHERE isdone = 0

    SET @query = 'SELECT ' + CAST(@dbid AS NVARCHAR) + ', ''' + @dbname + ''', [name], 0 FROM [' + @dbname + '].sys.filegroups WHERE [type] = ''FG'' AND is_read_only = 0;'
    INSERT INTO #tmpfgs
    EXEC (@query)

    UPDATE #tmpdbs
    SET isdone = 1
    WHERE [dbid] = @dbid
END;

IF (SELECT COUNT(ID) FROM #tmpfgs) > 0
BEGIN
    WHILE (SELECT COUNT(id) FROM #tmpfgs WHERE isdone = 0) > 0
    BEGIN
        SELECT TOP 1 @dbname = [dbname], @dbid = [dbid], @fgname = fgname FROM #tmpfgs WHERE isdone = 0

        SET @query = 'ALTER DATABASE [' + @dbname + '] MODIFY FILEGROUP [' + @fgname + '] AUTOGROW_ALL_FILES;'

        PRINT @query

        UPDATE #tmpfgs
        SET isdone = 1
        WHERE [dbid] = @dbid AND fgname = @fgname
    END
END;
GO

Consulte tambiénSee Also