Opções de arquivo e grupos de arquivos de ALTER DATABASE (Transact-SQL)ALTER DATABASE (Transact-SQL) File and Filegroup Options

Modifica os arquivos e grupos de arquivos associados ao banco de dados.Modifies the files and filegroups associated with the database. Adiciona ou remove arquivos e grupos de arquivos de um banco de dados e altera os atributos de um banco de dados ou seus arquivos e grupos de arquivos.Adds or removes files and filegroups from a database, and changes the attributes of a database or its files and filegroups. Para obter outras opções de ALTER DATABASE, confira ALTER DATABASE.For other ALTER DATABASE options, see ALTER DATABASE.

Para obter mais informações sobre as convenções de sintaxe, consulte Convenções de sintaxe Transact-SQL.For more information about the syntax conventions, see Transact-SQL Syntax Conventions.

Clique em um produto!Click a product!

Na linha a seguir, clique em qualquer nome de produto de seu interesse.In the following row, click whichever product name you are interested in. O clique exibe conteúdo diferente aqui nesta página da Web, apropriado para qualquer produto no qual você clicar.The click displays different content here on this webpage, appropriate for whichever product you click.

* SQL Server *  * SQL Server *   Instância gerenciada
do Banco de Dados SQL
SQL Database
managed instance

 

SQL ServerSQL Server

SintaxeSyntax

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 o arquivo a ser adicionado, removido ou modificado.Specifies the file to be added, removed, or modified.

database_name É o nome do banco de dados a ser modificado.database_name Is the name of the database to be modified.

ADD FILE Adiciona um arquivo ao banco de dados.ADD FILE Adds a file to the database.

TO FILEGROUP { filegroup_name } Especifica o grupo de arquivos ao qual adicionar o arquivo especificado.TO FILEGROUP { filegroup_name } Specifies the filegroup to which to add the specified file. Para exibir os grupos de arquivos atuais e qual grupo de arquivos é o padrão atual, use a exibição do 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 Adiciona um arquivo de log ao banco de dados especificado.ADD LOG FILE Adds a log file be added to the specified database.

REMOVE FILE logical_file_name Remove a descrição do arquivo lógico de uma instância de SQL ServerSQL Server e exclui o arquivo físico.REMOVE FILE logical_file_name Removes the logical file description from an instance of SQL ServerSQL Server and deletes the physical file. O arquivo não pode ser removido, a menos que esteja vazio.The file cannot be removed unless it is empty.

logical_file_name É o nome lógico usado no SQL ServerSQL Server ao fazer referência ao arquivo.logical_file_name Is the logical name used in SQL ServerSQL Server when referencing the file.

Aviso

A remoção de um arquivo de banco de dados que tem backups de FILE_SNAPSHOT associados a ele terá êxito, mas os instantâneos associados não serão excluídos para evitar a anulação dos backups que referenciam o arquivo de banco de dados.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. O arquivo será truncado, mas não será fisicamente excluído para manter os backups de FILE_SNAPSHOT intactos.The file will be truncated, but will not be physically deleted in order to keep the FILE_SNAPSHOT backups intact. Para obter mais informações, veja Backup e restauração do SQL Server com o Serviço de Armazenamento de Blobs do Microsoft Azure.For more information, see SQL Server Backup and Restore with Microsoft Azure Blob Storage Service. Aplica-se a: SQL ServerSQL Server (SQL Server 2016 (13.x)SQL Server 2016 (13.x) a 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 o arquivo que deve ser modificado.MODIFY FILE Specifies the file that should be modified. Apenas uma propriedade <filespec> pode ser alterada por vez.Only one <filespec> property can be changed at a time. NAME sempre deve ser especificado em <filespec> para identificar o arquivo a ser modificado.NAME must always be specified in the <filespec> to identify the file to be modified. Se SIZE for especificado, o novo tamanho deverá ser maior que o tamanho do arquivo atual.If SIZE is specified, the new size must be larger than the current file size.

Para modificar o nome lógico de um arquivo de dados ou de um arquivo de log, especifique o nome do arquivo lógico a ser renomeado na cláusula NAME e especifique o novo nome lógico para o arquivo na 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 exemplo:For example:

MODIFY FILE ( NAME = logical_file_name, NEWNAME = new_logical_name )

Para mover um arquivo de dados ou de log para um novo local, especifique o nome do arquivo lógico atual na cláusula NAME e especifique o novo caminho e o nome do arquivo do sistema operacional na 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 exemplo:For example:

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

Quando você move um catálogo de texto completo, especifique somente o novo caminho na cláusula FILENAME.When you move a full-text catalog, specify only the new path in the FILENAME clause. Não especifique o nome do arquivo do sistema operacional.Do not specify the operating-system file name.

Para obter mais informações, consulte Mover arquivos de bancos de dados.For more information, see Move Database Files.

Para um grupo de arquivos FILESTREAM, NAME pode ser modificado online.For a FILESTREAM filegroup, NAME can be modified online. FILENAME pode ser modificado online; entretanto, a operação não entra em vigor até que o contêiner seja fisicamente realocado e o servidor seja desligado e reiniciado.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.

Você pode definir um arquivo FILESTREAM como OFFLINE.You can set a FILESTREAM file to OFFLINE. Quando um arquivo FILESTREAM estiver offline, seu grupo de arquivos pai será internamente marcado como offline; portanto, haverá falha em todo acesso aos dados FILESTREAM naquele grupo de arquivos.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.

Observação

<add_or_modify_files> As opções não estão disponíveis em um Banco de Dados Independente.<add_or_modify_files> options are not available in a Contained Database.

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

Controla as propriedades do arquivo.Controls the file properties.

NAME logical_file_name Especifica o nome lógico do arquivo.NAME logical_file_name Specifies the logical name of the file.

logical_file_name É o nome lógico usado em uma instância do SQL ServerSQL Server ao referenciar o arquivo.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 um novo nome lógico para o arquivo.NEWNAME new_logical_file_name Specifies a new logical name for the file.

new_logical_file_name É o nome para substituir o nome de arquivo lógico existente.new_logical_file_name Is the name to replace the existing logical file name. O nome deve ser exclusivo dentro do banco de dados e obedecer às regras de identificadores.The name must be unique within the database and comply with the rules for identifiers. O nome pode ser uma constante de caractere ou Unicode, um identificador comum ou 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 o nome de arquivo (físico) do sistema operacional.FILENAME { 'os_file_name' | 'filestream_path' | 'memory_optimized_data_path'} Specifies the operating system (physical) file name.

' os_file_name ' Para um grupo de arquivos padrão (ROWS), esse é o caminho e o nome do arquivo usado pelo sistema operacional quando você cria o arquivo.' 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. O arquivo deve residir no servidor no qual o SQL ServerSQL Server está instalado.The file must reside on the server on which SQL ServerSQL Server is installed. O caminho especificado deve existir antes da execução da instrução ALTER DATABASE.The specified path must exist before executing the ALTER DATABASE statement.

Observação

Os parâmetros SIZE, MAXSIZE e FILEGROWTH não podem ser definidos quando um caminho UNC está especificado para o arquivo.SIZE, MAXSIZE, and FILEGROWTH parameters cannot be set when a UNC path is specified for the file.

Bancos de dados do sistema não podem residir em diretórios de compartilhamento UNC.System databases cannot reside in UNC share directories.

Arquivos de dados não devem ser colocados em sistemas de arquivos compactados, a não ser que os arquivos sejam secundários e somente leitura ou que o banco de dados seja somente leitura.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. Arquivos de log nunca devem ser colocados em sistemas de arquivos compactados.Log files should never be put on compressed file systems.

Se o arquivo estiver em uma partição bruta, os_file_name deverá especificar apenas a letra da unidade de uma partição bruta existente.If the file is on a raw partition, os_file_name must specify only the drive letter of an existing raw partition. Apenas um arquivo de dados pode ser colocado em cada partição bruta.Only one file can be put on each raw partition.

' filestream_path ' Para um grupo de arquivos FILESTREAM, FILENAME faz referência a um caminho em que os dados FILESTREAM serão armazenados.' filestream_path ' For a FILESTREAM filegroup, FILENAME refers to a path where FILESTREAM data will be stored. O caminho até a última pasta deve existir e a última pasta não deve existir.The path up to the last folder must exist, and the last folder must not exist. Por exemplo, se você especificar o caminho C:\MyFiles\MyFilestreamData, C:\MyFiles deverá existir antes de você executar ALTER DATABASE, mas a pasta MyFilestreamData não deverá 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.

Observação

As propriedades SIZE e FILEGROWTH não se aplicam a um grupo de arquivos FILESTREAM.The SIZE and FILEGROWTH properties do not apply to a FILESTREAM filegroup.

' memory_optimized_data_path ' Para um grupo de arquivos com otimização de memória, FILENAME refere-se a um caminho em que os dados com otimização de memória serão armazenados.' memory_optimized_data_path ' For a memory-optimized filegroup, FILENAME refers to a path where memory-optimized data will be stored. O caminho até a última pasta deve existir e a última pasta não deve existir.The path up to the last folder must exist, and the last folder must not exist. Por exemplo, se você especificar o caminho C:\MyFiles\MyData, C:\MyFiles deverá existir antes de você executar ALTER DATABASE, mas a pasta MyData não deverá 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.

O grupo de arquivos e o arquivo (<filespec>) devem ser criados na mesma instrução.The filegroup and file (<filespec>) must be created in the same statement.

Observação

As propriedades SIZE e FILEGROWTH não se aplicam a um grupo de arquivos MEMORY_OPTIMIZED_DATA.The SIZE and FILEGROWTH properties do not apply to a MEMORY_OPTIMIZED_DATA filegroup.

Para obter mais informações sobre grupos de arquivos otimizados para memória, confira O grupo de arquivos otimizados para memória.For more information on memory-optimized filegroups, see The Memory Optimized Filegroup.

SIZE size Especifica o tamanho do arquivo.SIZE size Specifies the file size. SIZE não se aplica a grupos de arquivos FILESTREAM.SIZE does not apply to FILESTREAM filegroups.

size É o tamanho do arquivo.size Is the size of the file.

Quando especificado com ADD FILE, size é o tamanho inicial do arquivo.When specified with ADD FILE, size is the initial size for the file. Quando especificado com MODIFY FILE, size é o novo tamanho do arquivo e deve ser maior que o tamanho do arquivo atual.When specified with MODIFY FILE, size is the new size for the file, and must be larger than the current file size.

Quando o tamanho do arquivo primário não é informado, o SQL ServerSQL Server usa o tamanho do arquivo primário no modelo de banco de dados.When size is not supplied for the primary file, the SQL ServerSQL Server uses the size of the primary file in the model database. Quando um arquivo de dados ou arquivo de log secundário for especificado, mas size não for, o Mecanismo de Banco de DadosDatabase Engine torna o arquivo em um arquivo de 1 MB.When a secondary data file or log file is specified but size is not specified for the file, the Mecanismo de Banco de DadosDatabase Engine makes the file 1 MB.

Os sufixos KB, MB, GB e TB podem ser usados para especificar quilobytes, megabytes, gigabytes ou terabytes.The KB, MB, GB, and TB suffixes can be used to specify kilobytes, megabytes, gigabytes, or terabytes. O padrão é MB.The default is MB. Especifique um número inteiro e não inclua um decimal.Specify a whole number and do not include a decimal. Para especificar uma fração de um megabyte, converta o valor em kilobytes multiplicando o número por 1024.To specify a fraction of a megabyte, convert the value to kilobytes by multiplying the number by 1024. Por exemplo, especifique 1536 KB em vez de 1,5 MB (1,5 x 1024 = 1536).For example, specify 1536 KB instead of 1.5 MB (1.5 x 1024 = 1536).

Observação

SIZE não pode ser definido:SIZE cannot be set:

  • Quando um caminho UNC está especificado para o arquivoWhen a UNC path is specified for the file
  • Para grupos de arquivos FILESTREAM e MEMORY_OPTIMIZED_DATAFor FILESTREAM and MEMORY_OPTIMIZED_DATA filegroups

MAXSIZE { max_size| UNLIMITED } Especifica o tamanho de arquivo máximo até o qual o arquivo pode crescer.MAXSIZE { max_size| UNLIMITED } Specifies the maximum file size to which the file can grow.

max_size É o tamanho de arquivo máximo.max_size Is the maximum file size. Os sufixos KB, MB, GB e TB podem ser usados para especificar quilobytes, megabytes, gigabytes ou terabytes.The KB, MB, GB, and TB suffixes can be used to specify kilobytes, megabytes, gigabytes, or terabytes. O padrão é MB.The default is MB. Especifique um número inteiro e não inclua um decimal.Specify a whole number and do not include a decimal. Se max_size não for especificado, o tamanho do arquivo aumentará até que o disco fique cheio.If max_size is not specified, the file size will increase until the disk is full.

UNLIMITED Especifica que o arquivo crescerá até que o disco esteja cheio.UNLIMITED Specifies that the file grows until the disk is full. No SQL ServerSQL Server, um arquivo de log especificado com crescimento ilimitado tem um tamanho máximo de 2 TB, e um arquivo de dados tem um tamanho máximo 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. Não há nenhum tamanho máximo quando essa opção é especificada para um contêiner FILESTREAM.There is no maximum size when this option is specified for a FILESTREAM container. Ele continua crescendo até que o disco esteja cheio.It continues to grow until the disk is full.

Observação

MAXSIZE não pode ser definido quando um caminho UNC está especificado para o arquivo.MAXSIZE cannot be set when a UNC path is specified for the file.

FILEGROWTH growth_increment Especifica o incremento de crescimento automático do arquivo.FILEGROWTH growth_increment Specifies the automatic growth increment of the file. A configuração de FILEGROWTH de um arquivo não pode exceder a configuração de MAXSIZE.The FILEGROWTH setting for a file cannot exceed the MAXSIZE setting. FILEGROWTH não se aplica a grupos de arquivos FILESTREAM.FILEGROWTH does not apply to FILESTREAM filegroups.

growth_increment É a quantidade de espaço adicionada ao arquivo sempre que novo espaço é necessário.growth_increment Is the amount of space added to the file every time new space is required.

O valor pode ser especificado em MB, KB, GB, TB ou porcentagem (%).The value can be specified in MB, KB, GB, TB, or percent (%). Se um número for especificado sem um sufixo MB, KB, ou %, o padrão será MB.If a number is specified without an MB, KB, or % suffix, the default is MB. Quando % está especificada, o tamanho do incremento de crescimento é a porcentagem especificada do tamanho do arquivo no momento em que ocorre o incremento.When % is specified, the growth increment size is the specified percentage of the size of the file at the time the increment occurs. O tamanho especificado é arredondado para o mais próximo de 64 KB.The size specified is rounded to the nearest 64 KB.

Um valor 0 indica que o crescimento automático está definido como off e nenhum espaço adicional é permitido.A value of 0 indicates that automatic growth is set to off and no additional space is allowed.

Se FILEGROWTH não é especificado, os valores padrão são:If FILEGROWTH is not specified, the default values are:

VersãoVersion Valores padrãoDefault values
A partir do SQL Server 2016 (13.x)SQL Server 2016 (13.x)Starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x) Dados 64 MB.Data 64 MB. Arquivos de log 64 MB.Log files 64 MB.
A partir do SQL Server 2005 (9.x)SQL Server 2005 (9.x)Starting with SQL Server 2005 (9.x)SQL Server 2005 (9.x) Dados 1 MB.Data 1 MB. Arquivos de log 10%.Log files 10%.
Antes do SQL Server 2005 (9.x)SQL Server 2005 (9.x)Prior to SQL Server 2005 (9.x)SQL Server 2005 (9.x) Dados 10%.Data 10%. Arquivos de log 10%.Log files 10%.

Observação

FILEGROWTH não pode ser definido:FILEGROWTH cannot be set:

  • Quando um caminho UNC está especificado para o arquivoWhen a UNC path is specified for the file
  • Para grupos de arquivos FILESTREAM e MEMORY_OPTIMIZED_DATAFor FILESTREAM and MEMORY_OPTIMIZED_DATA filegroups

OFFLINE Define o arquivo como offline e torna todos os objetos no grupo de arquivos inacessíveis.OFFLINE Sets the file offline and makes all objects in the filegroup inaccessible.

Cuidado

Só use essa opção quando o arquivo estiver corrompido e puder ser restaurado.Use this option only when the file is corrupted and can be restored. Um arquivo definido como OFFLINE só pode ser definido como online por meio da restauração do arquivo do backup.A file set to OFFLINE can only be set online by restoring the file from backup. Para obter mais informações sobre como restaurar um único arquivo, consulte RESTORE.For more information about restoring a single file, see RESTORE.

As opções <filespec> não estão disponíveis em um Banco de Dados Independente.<filespec> options are not available in a Contained Database.

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

Adiciona, modifica ou remove um grupo de arquivos do banco de dados.Add, modify, or remove a filegroup from the database.

ADD FILEGROUP filegroup_name Adiciona um grupo de arquivos no banco de dados.ADD FILEGROUP filegroup_name Adds a filegroup to the database.

CONTAINS FILESTREAM Especifica que o grupo de arquivos armazena BLOBs (objetos binários grandes) FILESTREAM no sistema de arquivos.CONTAINS FILESTREAM Specifies that the filegroup stores FILESTREAM binary large objects (BLOBs) in the file system.

CONTAINS MEMORY_OPTIMIZED_DATACONTAINS MEMORY_OPTIMIZED_DATA

Aplica-se ao: SQL ServerSQL Server (SQL Server 2014 (12.x)SQL Server 2014 (12.x) até 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 o grupo de arquivos armazena dados com otimização de memória no sistema de arquivos.Specifies that the filegroup stores memory optimized data in the file system. Para obter mais informações, veja OLTP In-Memory – Otimização In-Memory.For more information, see In-Memory OLTP - In-Memory Optimization. Apenas um grupo de arquivos MEMORY_OPTIMIZED_DATA é permitido por banco de dados.Only one MEMORY_OPTIMIZED_DATA filegroup is allowed per database. Para criar tabelas com otimização de memória, o grupo de arquivos não pode estar vazio.For creating memory optimized tables, the filegroup cannot be empty. Deve haver pelo menos um arquivo.There must be at least one file. filegroup_name se refere a um caminho.filegroup_name refers to a path. O caminho até a última pasta deve existir e a última pasta não deve existir.The path up to the last folder must exist, and the last folder must not exist.

REMOVE FILEGROUP filegroup_name Remove um grupo de arquivos do banco de dados.REMOVE FILEGROUP filegroup_name Removes a filegroup from the database. O grupo de arquivos não pode ser removido, a menos que esteja vazio.The filegroup cannot be removed unless it is empty. Remova todos os arquivos do grupo de arquivos primeiro.Remove all files from the filegroup first. Para obter mais informações, consulte "REMOVE FILE logical_file_name", anteriormente neste tópico.For more information, see "REMOVE FILE logical_file_name," earlier in this topic.

Observação

A menos que o Coletor de Lixo de FILESTREAM tenha removido todos os arquivos de um contêiner FILESTREAM, haverá falha e um erro será retornado na operação ALTER DATABASE REMOVE FILE para remover um contêiner FILESTREAM.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. Veja a seção Remover um contêiner FILESTREAM mais adiante neste tópico.See the Removing a FILESTREAM Container section later in this topic.

MODIFY FILEGROUP filegroup_name { <filegroup_updatability_option> | DEFAULT | NAME = new_filegroup_name } Modifica o grupo de arquivos definindo o status como READ_ONLY ou READ_WRITE, transformando o grupo de arquivos no grupo de arquivos padrão para o banco de dados ou alterando o nome do grupo de arquivos.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> Define a propriedade somente leitura ou leitura/gravação para o grupo de arquivos.<filegroup_updatability_option> Sets the read-only or read/write property to the filegroup.

DEFAULT Altera o grupo de arquivos do banco de dados padrão para filegroup_name.DEFAULT Changes the default database filegroup to filegroup_name. Apenas um grupo de arquivos no banco de dados pode ser o grupo de arquivos padrão.Only one filegroup in the database can be the default filegroup. Para obter mais informações, consulte Database Files and Filegroups.For more information, see Database Files and Filegroups.

NAME = new_filegroup_name Altera o nome do grupo de arquivos para o new_filegroup_name.NAME = new_filegroup_name Changes the filegroup name to the new_filegroup_name.

AUTOGROW_SINGLE_FILE Aplica-se a: SQL ServerSQL Server (SQL Server 2016 (13.x)SQL Server 2016 (13.x) até 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)

Quando um arquivo no grupo de arquivos atinge o limite de aumento automático, apenas esse arquivo aumenta.When a file in the filegroup meets the autogrow threshold, only that file grows. Esse é o padrão.This is the default.

AUTOGROW_ALL_FILESAUTOGROW_ALL_FILES

Aplica-se ao: SQL ServerSQL Server (SQL Server 2016 (13.x)SQL Server 2016 (13.x) até 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)

Quando um arquivo no grupo de arquivos atingir o limite de crescimento automático, todos os arquivos no grupo de arquivos crescerão.When a file in the filegroup meets the autogrow threshold, all files in the filegroup grow.

Observação

Este é o valor padrão de TempDB.This is the default value for TempDB.

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

Define a propriedade somente leitura ou leitura/gravação para o grupo de arquivos.Sets the read-only or read/write property to the filegroup.

READ_ONLY | READONLY Especifica o grupo de arquivos é somente leitura.READ_ONLY | READONLY Specifies the filegroup is read-only. Não são permitidas atualizações nos objetos.Updates to objects in it are not allowed. O grupo de arquivos primário não pode ser somente leitura.The primary filegroup cannot be made read-only. Para alterar esse estado, é necessário ter acesso exclusivo ao banco de dados.To change this state, you must have exclusive access to the database. Para obter mais informações, consulte a cláusula SINGLE_USER.For more information, see the SINGLE_USER clause.

Como um banco de dados somente leitura não permite modificações de dados:Because a read-only database does not allow data modifications:

  • A recuperação automática é ignorada na inicialização do sistema.Automatic recovery is skipped at system startup.
  • Não é possível reduzir o banco de dados.Shrinking the database is not possible.
  • Não ocorrem bloqueios em bancos de dados somente leitura.No locking occurs in read-only databases. Isso pode acelerar o desempenho das consultas.This can cause faster query performance.

Observação

A palavra-chave READONLY será removida em uma versão futura do MicrosoftMicrosoftSQL ServerSQL Server.The keyword READONLY will be removed in a future version of MicrosoftMicrosoftSQL ServerSQL Server. Evite usar READONLY em novos projetos de desenvolvimento e planeje modificar os aplicativos que utilizam READONLY atualmente.Avoid using READONLY in new development work, and plan to modify applications that currently use READONLY. Em vez disso, use READ_ONLY .Use READ_ONLY instead.

READ_WRITE | READWRITE Especifica o grupo é READ_WRITE.READ_WRITE | READWRITE Specifies the group is READ_WRITE. As atualizações são habilitadas para os objetos no grupo de arquivos.Updates are enabled for the objects in the filegroup. Para alterar esse estado, é necessário ter acesso exclusivo ao banco de dados.To change this state, you must have exclusive access to the database. Para obter mais informações, consulte a cláusula SINGLE_USER.For more information, see the SINGLE_USER clause.

Observação

A palavra-chave READWRITE será removida em uma versão futura do MicrosoftMicrosoftSQL ServerSQL Server.The keyword READWRITE will be removed in a future version of MicrosoftMicrosoftSQL ServerSQL Server. Evite usar READWRITE em um novo trabalho de desenvolvimento e planeje modificar os aplicativos que atualmente usam READWRITE para usar READ_WRITE em seu lugar.Avoid using READWRITE in new development work, and plan to modify applications that currently use READWRITE to use READ_WRITE instead.

Dica

O status dessas opções pode ser determinado examinando a coluna is_read_only na exibição do catálogo sys.databases ou a propriedade Updateability da função 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.

RemarksRemarks

Para diminuir o tamanho de um banco de dados, use DBCC SHRINKDATABASE.To decrease the size of a database, use DBCC SHRINKDATABASE.

Não é possível adicionar ou remover um arquivo enquanto uma instrução BACKUP está em execução.You cannot add or remove a file while a BACKUP statement is running.

Um máximo de 32.767 arquivos e 32.767 grupos de arquivos pode ser especificado para cada banco de dados.A maximum of 32,767 files and 32,767 filegroups can be specified for each database.

Começando pelo SQL Server 2005 (9.x)SQL Server 2005 (9.x), o estado de um arquivo de banco de dados (por exemplo, online ou offline) é mantido independentemente do estado do banco de dados.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 obter mais informações, consulte Estados de arquivo.For more information, see File States.

  • O estado dos arquivos dentro de um grupo de arquivos determina a disponibilidade de todo o grupo.The state of the files within a filegroup determines the availability of the whole filegroup. Para que um grupo de arquivos fique disponível, todos os seus arquivos devem estar online.For a filegroup to be available, all files within the filegroup must be online.
  • Se um grupo de arquivos estiver offline, qualquer tentativa de acessá-lo por meio de uma instrução SQL falhará com erro.If a filegroup is offline, any try to access the filegroup by an SQL statement will fail with an error. Quando você cria planos de consulta para instruções SELECT, o otimizador de consulta evita índices não clusterizados e exibições indexadas que residem em grupos de arquivos offline.When you build query plans for SELECT statements, the query optimizer avoids nonclustered indexes and indexed views that reside in offline filegroups. Isso permite que essas instruções tenham êxito.This enables these statements to succeed. Porém, se o grupo de arquivos offline contiver o heap ou índice clusterizado da tabela de destino, as instruções SELECT falharão.However, if the offline filegroup contains the heap or clustered index of the target table, the SELECT statements fail. Além disso, qualquer instrução INSERT, UPDATE ou DELETE que modifica uma tabela com um índice em um grupo de arquivos offline falhará.Additionally, any INSERT, UPDATE, or DELETE statement that modifies a table with any index in an offline filegroup will fail.

Os parâmetros SIZE, MAXSIZE e FILEGROWTH não podem ser definidos quando um caminho UNC está especificado para o arquivo.SIZE, MAXSIZE, and FILEGROWTH parameters cannot be set when a UNC path is specified for the file.

Os parâmetros SIZE e FILEGROWTH não podem ser definidos para grupos de arquivos otimizados para memória.SIZE and FILEGROWTH parameters cannot be set for memory optimized filegroups.

A palavra-chave READONLY será removida em uma versão futura do MicrosoftMicrosoftSQL ServerSQL Server.The keyword READONLY will be removed in a future version of MicrosoftMicrosoftSQL ServerSQL Server. Evite usar READONLY em novos projetos de desenvolvimento e planeje modificar os aplicativos que utilizam READONLY no momento.Avoid using READONLY in new development work, and plan to modify applications that currently use READONLY. Em vez disso, use READ_ONLY .Use READ_ONLY instead.

A palavra-chave READWRITE será removida em uma versão futura do MicrosoftMicrosoftSQL ServerSQL Server.The keyword READWRITE will be removed in a future version of MicrosoftMicrosoftSQL ServerSQL Server. Evite usar READWRITE em um novo trabalho de desenvolvimento e planeje modificar os aplicativos que atualmente usam READWRITE para usar READ_WRITE em seu lugar.Avoid using READWRITE in new development work, and plan to modify applications that currently use READWRITE to use READ_WRITE instead.

Movendo arquivosMoving Files

Você pode mover dados do sistema ou definidos pelo usuário e arquivos de log especificando o novo local em FILENAME.You can move system or user-defined data and log files by specifying the new location in FILENAME. Isso pode ser útil nos seguintes cenários:This may be useful in the following scenarios:

  • Recuperação de falha.Failure recovery. Por exemplo, o banco de dados está em modo suspeito ou desligado por falha no hardware.For example, the database is in suspect mode or shutdown caused by hardware failure.
  • Realocação planejada.Planned relocation.
  • Realocação para manutenção de disco programada.Relocation for scheduled disk maintenance.

Para obter mais informações, consulte Mover arquivos de bancos de dados.For more information, see Move Database Files.

Inicializando arquivosInitializing Files

Por padrão, arquivos de dados e de log são inicializados por meio do preenchimento com zeros quando você executa uma das seguintes operações:By default, data and log files are initialized by filling the files with zeros when you perform one of the following operations:

  • Criar um banco de dados.Create a database.
  • Adicionar arquivos a um banco de dados existente.Add files to an existing database.
  • Aumentar o tamanho de um arquivo existente.Increase the size of an existing file.
  • Restaurar um banco de dados ou grupo de arquivos.Restore a database or filegroup.

Arquivos de dados podem ser inicializados instantaneamente.Data files can be initialized instantaneously. Isso permite uma execução rápida dessas operações de arquivo.This enables for fast execution of these file operations. Para obter mais informações, consulte Inicialização de arquivos de bancos de dados.For more information, see Database File Initialization.

Removendo um contêiner FILESTREAMRemoving a FILESTREAM Container

Embora o contêiner FILESTREAM possa ter sido esvaziado por meio da operação "DBCC SHRINKFILE", o banco de dados ainda pode precisar manter referências aos arquivos excluídos por várias razões de manutenção do 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 executará o Coletor de Lixo de FILESTREAM para remover esses arquivos quando for seguro fazê-lo.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 o Coletor de Lixo de FILESTREAM tenha removido todos os arquivos de um contêiner FILESTREAM, a operação ALTER DATABASE REMOVE FILE não poderá remover um contêiner FILESTREAM e um erro será retornado.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. O processo a seguir é recomendado para remover um contêiner FILESTREAM.The following process is recommended to remove a FILESTREAM container.

  1. Execute DBCC SHRINKFILE com a opção EMPTYFILE para mover o conteúdo ativo desse contêiner para outros contêineres.Run DBCC SHRINKFILE with the EMPTYFILE option to move the active contents of this container to other containers.
  2. Verifique se foram executados backups de log no modelo de recuperação FULL ou BULK_LOGGED.Ensure that Log backups have been taken, in the FULL or BULK_LOGGED recovery model.
  3. Verifique se o trabalho do leitor de log de replicação foi executado, se pertinente.Ensure that the replication log reader job has been run, if relevant.
  4. Execute sp_filestream_force_garbage_collection para forçar o coletor de lixo a excluir os arquivos que não são mais necessários nesse contêiner.Run sp_filestream_force_garbage_collection to force the garbage collector to delete any files that are no longer needed in this container.
  5. Execute ALTER DATABASE com a opção REMOVE FILE para remover este contêiner.Execute ALTER DATABASE with the REMOVE FILE option to remove this container.
  6. Repita as etapas 2 a 4 uma vez para concluir a coleta de lixo.Repeat steps 2 through 4 once more to complete the garbage collection.
  7. Use ALTER Database...REMOVE FILE para remover este contêiner.Use ALTER Database...REMOVE FILE to remove this container.

ExemplosExamples

A.A. Adicionando um arquivo a um banco de dadosAdding a file to a database

O exemplo a seguir adiciona um arquivo de dados de 5 MB ao banco de dados 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. Adicionando um grupo de arquivos com dois arquivos a um banco de dadosAdding a filegroup with two files to a database

O exemplo a seguir cria o grupo de arquivos Test1FG1 no banco de dados AdventureWorks2012AdventureWorks2012 e adiciona dois arquivos de 5 MB ao grupo de arquivos.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. Adicionando dois arquivos de log a um banco de dadosAdding two log files to a database

O exemplo a seguir adiciona dois arquivos de log de 5 MB ao banco de dados 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. Removendo um arquivo de um banco de dadosRemoving a file from a database

O exemplo a seguir remove um dos arquivos adicionados no exemplo 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. Modificando um arquivoModifying a file

O exemplo a seguir aumenta o tamanho de um dos arquivos adicionados no exemplo B. A instrução ALTER DATABASE com o comando MODIFY FILE só pode deixar um tamanho de arquivo maior, portanto, se você precisar diminuir o tamanho de arquivo, precisará 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

Este exemplo reduz o tamanho de um arquivo de dados para 100 MB e, em seguida, especifica o tamanho nessa quantidade.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. Movendo um arquivo para um novo localMoving a file to a new location

O exemplo a seguir move o arquivo Test1dat2 criado no exemplo A para um novo diretório.The following example moves the Test1dat2 file created in example A to a new directory.

Observação

Você deve mover o arquivo fisicamente para o novo diretório antes de executar este exemplo.You must physically move the file to the new directory before running this example. Em seguida, interrompa e reinicie a instância do SQL ServerSQL Server ou coloque o banco de dados AdventureWorks2012AdventureWorks2012 OFFLINE e, em seguida, ONLINE para implementar a alteração.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. Movendo tempdb para um novo localMoving tempdb to a new location

O exemplo a seguir move o tempdb de seu local atual no disco para outro local no disco.The following example moves tempdb from its current location on the disk to another disk location. Como o tempdb é recriado cada vez que o serviço MSSQLSERVER é iniciado, não é necessário mover fisicamente os arquivos de dados e de log.Because tempdb is re-created each time the MSSQLSERVER service is started, you do not have to physically move the data and log files. Os arquivos são criados quando o serviço é reiniciado na etapa 3.The files are created when the service is restarted in step 3. Enquanto o serviço não é reiniciado, o tempdb continua funcionando em seu local existente.Until the service is restarted, tempdb continues to function in its existing location.

  1. Determine os nomes dos arquivos lógicos do banco de dados tempdb e o seu local atual no 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. Altere o local de cada arquivo usando ALTER DATABASE.Change the location of each file by using ALTER DATABASE.

    USE master;
    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. Pare e reinicie a instância do SQL ServerSQL Server.Stop and restart the instance of SQL ServerSQL Server.

  4. Verifique a alteração do arquivo.Verify the file change.

    SELECT name, physical_name
    FROM sys.master_files
    WHERE database_id = DB_ID('tempdb');
    
  5. Exclua os arquivos tempdb.mdf e templog.ldf de seu local original.Delete the tempdb.mdf and templog.ldf files from their original location.

H.H. Tornando um grupo de arquivos o padrãoMaking a filegroup the default

O exemplo a seguir torna o grupo de arquivos Test1FG1 criado no exemplo B no grupo de arquivos padrão.The following example makes the Test1FG1 filegroup created in example B the default filegroup. Em seguida, o grupo de arquivos padrão é redefinido para o grupo de arquivos PRIMARY.Then, the default filegroup is reset to the PRIMARY filegroup. Observe que PRIMARY deve ser delimitado por colchetes ou aspas.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. Adicionando um grupo de arquivos usando ALTER DATABASEAdding a Filegroup Using ALTER DATABASE

O exemplo a seguir adiciona um FILEGROUP que contém a cláusula FILESTREAM ao banco de dados 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

O exemplo a seguir adiciona um FILEGROUP que contém a cláusula MEMORY_OPTIMIZED_DATA ao banco de dados xtp_db.The following example adds a FILEGROUP that contains the MEMORY_OPTIMIZED_DATA clause to the xtp_db database. O grupo de arquivos armazena dados otimizados para memória.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. Alterar um grupo de arquivos para que, quando um arquivo no grupo de arquivos atinja o limite de aumento automático, todos os arquivos no grupo de arquivos aumentemChange filegroup so that when a file in the filegroup meets the autogrow threshold, all files in the filegroup grow

O exemplo a seguir gera as instruções ALTER DATABASE necessárias para modificar grupos de arquivos de leitura/gravação com a configuração 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 TambémSee Also

SQL ServerSQL Server * Instância gerenciada
do Banco de Dados SQL *
* SQL Database
managed instance *

 

 

Instância gerenciada do Banco de Dados SQL do AzureAzure SQL Database managed instance

Use esta instrução com um banco de dados na instância gerenciada do Banco de Dados SQL do Azure.Use this statement with a database in Azure SQL Database managed instance.

Sintaxe para bancos de dados em uma instância gerenciadaSyntax 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 o arquivo a ser adicionado, removido ou modificado.Specifies the file to be added, removed, or modified.

database_name É o nome do banco de dados a ser modificado.database_name Is the name of the database to be modified.

ADD FILE Adiciona um arquivo ao banco de dados.ADD FILE Adds a file to the database.

TO FILEGROUP { filegroup_name } Especifica o grupo de arquivos ao qual adicionar o arquivo especificado.TO FILEGROUP { filegroup_name } Specifies the filegroup to which to add the specified file. Para exibir os grupos de arquivos atuais e qual grupo de arquivos é o padrão atual, use a exibição do 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 Remove a descrição do arquivo lógico de uma instância de SQL ServerSQL Server e exclui o arquivo físico.REMOVE FILE logical_file_name Removes the logical file description from an instance of SQL ServerSQL Server and deletes the physical file. O arquivo não pode ser removido, a menos que esteja vazio.The file cannot be removed unless it is empty.

logical_file_name É o nome lógico usado no SQL ServerSQL Server ao fazer referência ao arquivo.logical_file_name Is the logical name used in SQL ServerSQL Server when referencing the file.

MODIFY FILE Especifica o arquivo que deve ser modificado.MODIFY FILE Specifies the file that should be modified. Apenas uma propriedade <filespec> pode ser alterada por vez.Only one <filespec> property can be changed at a time. NAME sempre deve ser especificado em <filespec> para identificar o arquivo a ser modificado.NAME must always be specified in the <filespec> to identify the file to be modified. Se SIZE for especificado, o novo tamanho deverá ser maior que o tamanho do arquivo atual.If SIZE is specified, the new size must be larger than the current file size.

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

Controla as propriedades do arquivo.Controls the file properties.

NAME logical_file_name Especifica o nome lógico do arquivo.NAME logical_file_name Specifies the logical name of the file.

logical_file_name É o nome lógico usado em uma instância do SQL ServerSQL Server ao referenciar o arquivo.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 um novo nome lógico para o arquivo.NEWNAME new_logical_file_name Specifies a new logical name for the file.

new_logical_file_name É o nome para substituir o nome de arquivo lógico existente.new_logical_file_name Is the name to replace the existing logical file name. O nome deve ser exclusivo dentro do banco de dados e obedecer às regras de identificadores.The name must be unique within the database and comply with the rules for identifiers. O nome pode ser uma constante de caractere ou Unicode, um identificador comum ou delimitado.The name can be a character or Unicode constant, a regular identifier, or a delimited identifier.

SIZE size Especifica o tamanho do arquivo.SIZE size Specifies the file size.

size É o tamanho do arquivo.size Is the size of the file.

Quando especificado com ADD FILE, size é o tamanho inicial do arquivo.When specified with ADD FILE, size is the initial size for the file. Quando especificado com MODIFY FILE, size é o novo tamanho do arquivo e deve ser maior que o tamanho do arquivo atual.When specified with MODIFY FILE, size is the new size for the file, and must be larger than the current file size.

Quando o tamanho do arquivo primário não é informado, o SQL ServerSQL Server usa o tamanho do arquivo primário no modelo de banco de dados.When size is not supplied for the primary file, the SQL ServerSQL Server uses the size of the primary file in the model database. Quando um arquivo de dados ou arquivo de log secundário for especificado, mas size não for, o Mecanismo de Banco de DadosDatabase Engine torna o arquivo em um arquivo de 1 MB.When a secondary data file or log file is specified but size is not specified for the file, the Mecanismo de Banco de DadosDatabase Engine makes the file 1 MB.

Os sufixos KB, MB, GB e TB podem ser usados para especificar quilobytes, megabytes, gigabytes ou terabytes.The KB, MB, GB, and TB suffixes can be used to specify kilobytes, megabytes, gigabytes, or terabytes. O padrão é MB.The default is MB. Especifique um número inteiro e não inclua um decimal.Specify a whole number and do not include a decimal. Para especificar uma fração de um megabyte, converta o valor em kilobytes multiplicando o número por 1024.To specify a fraction of a megabyte, convert the value to kilobytes by multiplying the number by 1024. Por exemplo, especifique 1536 KB em vez 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 o tamanho de arquivo máximo até o qual o arquivo pode crescer.MAXSIZE { max_size| UNLIMITED } Specifies the maximum file size to which the file can grow.

max_size É o tamanho de arquivo máximo.max_size Is the maximum file size. Os sufixos KB, MB, GB e TB podem ser usados para especificar quilobytes, megabytes, gigabytes ou terabytes.The KB, MB, GB, and TB suffixes can be used to specify kilobytes, megabytes, gigabytes, or terabytes. O padrão é MB.The default is MB. Especifique um número inteiro e não inclua um decimal.Specify a whole number and do not include a decimal. Se max_size não for especificado, o tamanho do arquivo aumentará até que o disco fique cheio.If max_size is not specified, the file size will increase until the disk is full.

UNLIMITED Especifica que o arquivo crescerá até que o disco esteja cheio.UNLIMITED Specifies that the file grows until the disk is full. No SQL ServerSQL Server, um arquivo de log especificado com crescimento ilimitado tem um tamanho máximo de 2 TB, e um arquivo de dados tem um tamanho máximo 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 o incremento de crescimento automático do arquivo.FILEGROWTH growth_increment Specifies the automatic growth increment of the file. A configuração de FILEGROWTH de um arquivo não pode exceder a configuração de MAXSIZE.The FILEGROWTH setting for a file cannot exceed the MAXSIZE setting.

growth_increment É a quantidade de espaço adicionada ao arquivo sempre que novo espaço é necessário.growth_increment Is the amount of space added to the file every time new space is required.

O valor pode ser especificado em MB, KB, GB, TB ou porcentagem (%).The value can be specified in MB, KB, GB, TB, or percent (%). Se um número for especificado sem um sufixo MB, KB, ou %, o padrão será MB.If a number is specified without an MB, KB, or % suffix, the default is MB. Quando % está especificada, o tamanho do incremento de crescimento é a porcentagem especificada do tamanho do arquivo no momento em que ocorre o incremento.When % is specified, the growth increment size is the specified percentage of the size of the file at the time the increment occurs. O tamanho especificado é arredondado para o mais próximo de 64 KB.The size specified is rounded to the nearest 64 KB.

Um valor 0 indica que o crescimento automático está definido como off e nenhum espaço adicional é permitido.A value of 0 indicates that automatic growth is set to off and no additional space is allowed.

Se FILEGROWTH não é especificado, os valores padrão são:If FILEGROWTH is not specified, the default values are:

  • Dados de 64 MBData 64 MB
  • Arquivos de log de 64 MBLog files 64 MB

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

Adiciona, modifica ou remove um grupo de arquivos do banco de dados.Add, modify, or remove a filegroup from the database.

ADD FILEGROUP filegroup_name Adiciona um grupo de arquivos no banco de dados.ADD FILEGROUP filegroup_name Adds a filegroup to the database.

O exemplo a seguir cria um grupo de arquivos que é adicionado a um banco de dados denominado sql_db_mi e adiciona um arquivo ao grupo de arquivos.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 filegroup_name Remove um grupo de arquivos do banco de dados.REMOVE FILEGROUP filegroup_name Removes a filegroup from the database. O grupo de arquivos não pode ser removido, a menos que esteja vazio.The filegroup cannot be removed unless it is empty. Remova todos os arquivos do grupo de arquivos primeiro.Remove all files from the filegroup first. Para obter mais informações, consulte "REMOVE FILE logical_file_name", anteriormente neste tópico.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 o grupo de arquivos definindo o status como READ_ONLY ou READ_WRITE, transformando o grupo de arquivos no grupo de arquivos padrão para o banco de dados ou alterando o nome do grupo de arquivos.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> Define a propriedade somente leitura ou leitura/gravação para o grupo de arquivos.<filegroup_updatability_option> Sets the read-only or read/write property to the filegroup.

DEFAULT Altera o grupo de arquivos do banco de dados padrão para filegroup_name.DEFAULT Changes the default database filegroup to filegroup_name. Apenas um grupo de arquivos no banco de dados pode ser o grupo de arquivos padrão.Only one filegroup in the database can be the default filegroup. Para obter mais informações, consulte Database Files and Filegroups.For more information, see Database Files and Filegroups.

NAME = new_filegroup_name Altera o nome do grupo de arquivos para o new_filegroup_name.NAME = new_filegroup_name Changes the filegroup name to the new_filegroup_name.

AUTOGROW_SINGLE_FILEAUTOGROW_SINGLE_FILE

Quando um arquivo no grupo de arquivos atinge o limite de aumento automático, apenas esse arquivo aumenta.When a file in the filegroup meets the autogrow threshold, only that file grows. Esse é o padrão.This is the default.

AUTOGROW_ALL_FILESAUTOGROW_ALL_FILES

Quando um arquivo no grupo de arquivos atingir o limite de crescimento automático, todos os arquivos no grupo de arquivos crescerão.When a file in the filegroup meets the autogrow threshold, all files in the filegroup grow.

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

Define a propriedade somente leitura ou leitura/gravação para o grupo de arquivos.Sets the read-only or read/write property to the filegroup.

READ_ONLY | READONLY Especifica o grupo de arquivos é somente leitura.READ_ONLY | READONLY Specifies the filegroup is read-only. Não são permitidas atualizações nos objetos.Updates to objects in it are not allowed. O grupo de arquivos primário não pode ser somente leitura.The primary filegroup cannot be made read-only. Para alterar esse estado, é necessário ter acesso exclusivo ao banco de dados.To change this state, you must have exclusive access to the database. Para obter mais informações, consulte a cláusula SINGLE_USER.For more information, see the SINGLE_USER clause.

Como um banco de dados somente leitura não permite modificações de dados:Because a read-only database does not allow data modifications:

  • A recuperação automática é ignorada na inicialização do sistema.Automatic recovery is skipped at system startup.
  • Não é possível reduzir o banco de dados.Shrinking the database is not possible.
  • Não ocorrem bloqueios em bancos de dados somente leitura.No locking occurs in read-only databases. Isso pode acelerar o desempenho das consultas.This can cause faster query performance.

Observação

A palavra-chave READONLY será removida em uma versão futura do MicrosoftMicrosoftSQL ServerSQL Server.The keyword READONLY will be removed in a future version of MicrosoftMicrosoftSQL ServerSQL Server. Evite usar READONLY em novos trabalhos de desenvolvimento e planeje modificar os aplicativos que o utilizam atualmente.Avoid using READONLY in new development work, and plan to modify applications that currently use READONLY. Em vez disso, use READ_ONLY.Use READ_ONLY instead.

READ_WRITE | READWRITE Especifica o grupo é READ_WRITE.READ_WRITE | READWRITE Specifies the group is READ_WRITE. As atualizações são habilitadas para os objetos no grupo de arquivos.Updates are enabled for the objects in the filegroup. Para alterar esse estado, é necessário ter acesso exclusivo ao banco de dados.To change this state, you must have exclusive access to the database. Para obter mais informações, consulte a cláusula SINGLE_USER.For more information, see the SINGLE_USER clause.

Observação

A palavra-chave READWRITE será removida em uma versão futura do MicrosoftMicrosoftSQL ServerSQL Server.The keyword READWRITE will be removed in a future version of MicrosoftMicrosoftSQL ServerSQL Server. Evite usar READWRITE em um novo trabalho de desenvolvimento e planeje modificar os aplicativos que atualmente usam READWRITE para usar READ_WRITE em seu lugar.Avoid using READWRITE in new development work, and plan to modify applications that currently use READWRITE to use READ_WRITE instead.

O status dessas opções pode ser determinado examinando a coluna is_read_only na exibição do catálogo sys.databases ou a propriedade Updateability da função 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.

RemarksRemarks

Para diminuir o tamanho de um banco de dados, use DBCC SHRINKDATABASE.To decrease the size of a database, use DBCC SHRINKDATABASE.

Não é possível adicionar ou remover um arquivo enquanto uma instrução BACKUP está em execução.You cannot add or remove a file while a BACKUP statement is running.

Um máximo de 32.767 arquivos e 32.767 grupos de arquivos pode ser especificado para cada banco de dados.A maximum of 32,767 files and 32,767 filegroups can be specified for each database.

ExemplosExamples

A.A. Adicionando um arquivo a um banco de dadosAdding a file to a database

O exemplo a seguir adiciona um arquivo de dados de 5 MB ao banco de dados 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. Adicionando um grupo de arquivos com dois arquivos a um banco de dadosAdding a filegroup with two files to a database

O exemplo a seguir cria o grupo de arquivos Test1FG1 no banco de dados AdventureWorks2012AdventureWorks2012 e adiciona dois arquivos de 5 MB ao grupo de arquivos.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. Removendo um arquivo de um banco de dadosRemoving a file from a database

O exemplo a seguir remove um dos arquivos adicionados no exemplo 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. Modificando um arquivoModifying a file

O exemplo a seguir aumenta o tamanho de um dos arquivos adicionados no exemplo B. A instrução ALTER DATABASE com o comando MODIFY FILE só pode deixar um tamanho de arquivo maior, portanto, se você precisar diminuir o tamanho de arquivo, precisará 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

Este exemplo reduz o tamanho de um arquivo de dados para 100 MB e, em seguida, especifica o tamanho nessa quantidade.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. Tornando um grupo de arquivos o padrãoMaking a filegroup the default

O exemplo a seguir torna o grupo de arquivos Test1FG1 criado no exemplo B no grupo de arquivos padrão.The following example makes the Test1FG1 filegroup created in example B the default filegroup. Em seguida, o grupo de arquivos padrão é redefinido para o grupo de arquivos PRIMARY.Then, the default filegroup is reset to the PRIMARY filegroup. Observe que PRIMARY deve ser delimitado por colchetes ou aspas.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. Adicionando um grupo de arquivos usando ALTER DATABASEAdding a Filegroup Using ALTER DATABASE

O exemplo a seguir adiciona um FILEGROUP ao banco de dados 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. Alterar um grupo de arquivos para que, quando um arquivo no grupo de arquivos atinja o limite de aumento automático, todos os arquivos no grupo de arquivos aumentemChange filegroup so that when a file in the filegroup meets the autogrow threshold, all files in the filegroup grow

O exemplo a seguir gera as instruções ALTER DATABASE necessárias para modificar grupos de arquivos de leitura/gravação com a configuração 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 TambémSee Also