Параметры инструкции ALTER DATABASE для файлов и файловых групп (Transact-SQL)ALTER DATABASE (Transact-SQL) File and Filegroup Options

Изменяет файлы и файловые группы, связанные с базой данных.Modifies the files and filegroups associated with the database. Добавляет или удаляет файлы и файловые группы из базы данных и изменяет атрибуты базы данных или ее файлов и файловых групп.Adds or removes files and filegroups from a database, and changes the attributes of a database or its files and filegroups. См. дополнительные сведения о других параметрах ALTER DATABASE.For other ALTER DATABASE options, see ALTER DATABASE.

Дополнительные сведения о соглашениях о синтаксисе см. в статье Соглашения о синтаксисе в Transact-SQL.For more information about the syntax conventions, see Transact-SQL Syntax Conventions.

Выберите продукт!Click a product!

В следующей строке щелкните имя продукта, который вас интересует.In the following row, click whichever product name you are interested in. На этой веб-странице отобразится другой контент, относящийся к выбранному продукту.The click displays different content here on this webpage, appropriate for whichever product you click.

* SQL Server *  * SQL Server *   Управляемый экземпляр Базы данных SQL
SQL Database
managed instance

 

SQL ServerSQL Server

СинтаксисSyntax

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 }
}

АргументыArguments

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

Указывает файл, который будет добавлен, удален или изменен.Specifies the file to be added, removed, or modified.

database_name — имя изменяемой базы данных.database_name Is the name of the database to be modified.

ADD FILE — добавляет файл к базе данных.ADD FILE Adds a file to the database.

TO FILEGROUP { filegroup_name } — задает файловую группу, к которой необходимо добавить указанный файл.TO FILEGROUP { filegroup_name } Specifies the filegroup to which to add the specified file. Чтобы отобразить текущую файловую группу и узнать, какая файловая группа в данный момент установлена по умолчанию, используйте представление каталога sys.filegroups.To display the current filegroups and which filegroup is the current default, use the sys.filegroups catalog view.

ADD LOG FILE — добавляет файл журнала в указанную базу данных.ADD LOG FILE Adds a log file be added to the specified database.

REMOVE FILE logical_file_name — удаляет логическое описание файла из экземпляра SQL ServerSQL Server и физический файл.REMOVE FILE logical_file_name Removes the logical file description from an instance of SQL ServerSQL Server and deletes the physical file. Файл не может быть удален, если он не пуст.The file cannot be removed unless it is empty.

logical_file_name — логическое имя, используемое в SQL ServerSQL Server при обращении к файлу.logical_file_name Is the logical name used in SQL ServerSQL Server when referencing the file.

Предупреждение

Удаление файла базы данных, имеющего связанные с ним резервные копии FILE_SNAPSHOT, выполнится успешно, однако связанные моментальные снимки не будут удалены во избежание объявления недействительными резервных копий, ссылающихся на файл базы данных.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. Файл усекается, но физически не удаляется, чтобы сохранить резервные копии FILE_SNAPSHOT без изменений.The file will be truncated, but will not be physically deleted in order to keep the FILE_SNAPSHOT backups intact. Дополнительные сведения см. в разделе Резервное копирование и восстановление SQL Server с помощью службы хранилища BLOB-объектов Microsoft Azure.For more information, see SQL Server Backup and Restore with Microsoft Azure Blob Storage Service. Применимо к: SQL ServerSQL ServerSQL Server 2016 (13.x)SQL Server 2016 (13.x) по 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 — указывает файл, который должен быть изменен.MODIFY FILE Specifies the file that should be modified. Одновременно может быть изменено только одно свойство <filespec>.Only one <filespec> property can be changed at a time. Предложение NAME всегда должно быть указано в <filespec>, чтобы определить, какой файл будет изменен.NAME must always be specified in the <filespec> to identify the file to be modified. Если указано предложение SIZE, новый размер файла должен быть больше, чем текущий.If SIZE is specified, the new size must be larger than the current file size.

Чтобы изменить логическое имя файла данных или файла журнала, укажите логическое имя файла, который будет переименован, в предложении NAME, а новое логическое имя для файла — в предложении 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. Пример:For example:

MODIFY FILE ( NAME = logical_file_name, NEWNAME = new_logical_name )

Чтобы переместить файл данных или файл журнала в новое расположение, укажите текущее логическое имя файла в предложении NAME и укажите новый путь и имя файла в операционной системе в предложении 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. Пример:For example:

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

При перемещении полнотекстового каталога укажите только новый путь в предложении FILENAME.When you move a full-text catalog, specify only the new path in the FILENAME clause. Не указывайте имя файла в операционной системе.Do not specify the operating-system file name.

Дополнительные сведения см. в статье Перемещение файлов базы данных.For more information, see Move Database Files.

Для файловой группы FILESTREAM значение NAME можно изменять в режиме в сети.For a FILESTREAM filegroup, NAME can be modified online. Значение FILENAME можно изменять в режиме в сети, но внесенное изменение вступает в силу лишь после того, как будет выполнено физическое перемещение контейнера, а также остановка и последующий перезапуск сервера.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.

Можно задать значение параметра файла FILESTREAM, равное OFFLINE.You can set a FILESTREAM file to OFFLINE. Если файл FILESTREAM определен как вне сети, его родительская файловая группа отмечается внутри как вне сети, поэтому любая попытка доступа к данным FILESTREAM в пределах этой файловой группы окончится неудачей.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.

Примечание

Параметры <add_or_modify_files> недоступны в автономной базе данных.<add_or_modify_files> options are not available in a Contained Database.

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

Управляет свойствами файла.Controls the file properties.

NAME logical_file_name — задает логическое имя файла.NAME logical_file_name Specifies the logical name of the file.

logical_file_name — логическое имя, используемое в экземпляре SQL ServerSQL Server при ссылке на файл.logical_file_name Is the logical name used in an instance of SQL ServerSQL Server when referencing the file.

NEWNAME new_logical_file_name — задает новое логическое имя файла.NEWNAME new_logical_file_name Specifies a new logical name for the file.

new_logical_file_name — имя, которым будет заменено текущее логическое имя файла.new_logical_file_name Is the name to replace the existing logical file name. Имя должно быть уникальным в базе данных и соответствовать правилам для идентификаторов.The name must be unique within the database and comply with the rules for identifiers. Имя может быть символьной константой или константой Юникода, обычным идентификатором или идентификатором с разделителем.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'} — задает имя (физического) файла в операционной системе.FILENAME { 'os_file_name' | 'filestream_path' | 'memory_optimized_data_path'} Specifies the operating system (physical) file name.

'os_file_name' — для стандартной файловой группы (ROWS) этот параметр представляет собой путь и имя файла, которые использовались операционной системой при создании файла.' 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. Файл должен постоянно храниться на сервере, на котором установлен SQL ServerSQL Server.The file must reside on the server on which SQL ServerSQL Server is installed. Указанный путь должен существовать до выполнения инструкции ALTER DATABASE.The specified path must exist before executing the ALTER DATABASE statement.

Примечание

Параметры SIZE, MAXSIZE и FILEGROWTH невозможно задать, если указан UNC-путь к файлу.SIZE, MAXSIZE, and FILEGROWTH parameters cannot be set when a UNC path is specified for the file.

Системные базы данных не могут размещаться в общих каталогах UNC.System databases cannot reside in UNC share directories.

Файлы данных не должны располагаться в сжатой файловой системе, кроме случаев, когда файлы являются вторичными файлами только для чтения или база данных находится в режиме только для чтения.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. Файлы журналов ни в коем случае не должны размещаться в сжатых файловых системах.Log files should never be put on compressed file systems.

Если файл находится в необработанной секции, аргумент os_file_name должен указывать только букву диска существующей необработанной секции.If the file is on a raw partition, os_file_name must specify only the drive letter of an existing raw partition. В каждый необработанный раздел может быть помещен только один файл.Only one file can be put on each raw partition.

' filestream_path '  — для файловой группы FILESTREAM параметр FILENAME указывает путь, где будут храниться данные FILESTREAM.' filestream_path ' For a FILESTREAM filegroup, FILENAME refers to a path where FILESTREAM data will be stored. Должен существовать путь вплоть до последнего каталога, но последний каталог существовать не должен.The path up to the last folder must exist, and the last folder must not exist. Например, если указан путь C:\MyFiles\MyFilestreamData, то каталог C:\MyFiles должен существовать до выполнения инструкции ALTER DATABASE, но папка MyFilestreamData не должна существовать.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.

Примечание

Свойства SIZE и FILEGROWTH к файловой группе FILESTREAM неприменимы.The SIZE and FILEGROWTH properties do not apply to a FILESTREAM filegroup.

' memory_optimized_data_path '  — для файловой группы, оптимизированной для памяти, FILENAME указывает путь, по которому будут храниться данные, оптимизированные для памяти.' memory_optimized_data_path ' For a memory-optimized filegroup, FILENAME refers to a path where memory-optimized data will be stored. Должен существовать путь вплоть до последнего каталога, но последний каталог существовать не должен.The path up to the last folder must exist, and the last folder must not exist. Например, если указан путь C:\MyFiles\MyData, то каталог C:\MyFiles должен существовать до выполнения инструкции ALTER DATABASE, но папка MyData не должна существовать.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.

Файловую группу и файл (<filespec>) необходимо создавать в одной инструкции.The filegroup and file (<filespec>) must be created in the same statement.

Примечание

Свойства SIZE и FILEGROWTH не относятся к файловой группе MEMORY_OPTIMIZED_DATA.The SIZE and FILEGROWTH properties do not apply to a MEMORY_OPTIMIZED_DATA filegroup.

Дополнительные сведения об оптимизированных для памяти файловых группах см. в статье Оптимизированная для памяти файловая группа.For more information on memory-optimized filegroups, see The Memory Optimized Filegroup.

SIZE size — указывает размер файла.SIZE size Specifies the file size. Параметр SIZE не применяется к файловым группам FILESTREAM.SIZE does not apply to FILESTREAM filegroups.

size — размер файла.size Is the size of the file.

При использовании в инструкции ADD FILE аргумент size является начальным размером файла.When specified with ADD FILE, size is the initial size for the file. При использовании в инструкции MODIFY FILE аргумент size является новым размером файла и должен превышать текущий размер файла.When specified with MODIFY FILE, size is the new size for the file, and must be larger than the current file size.

Если для первичного файла не задан аргумент size, компонент SQL ServerSQL Serverиспользует размер первичного файла, указанный в базе данных model.When size is not supplied for the primary file, the SQL ServerSQL Server uses the size of the primary file in the model database. Когда указан вторичный файл данных или журнала, но для этого файла не указан аргумент size, компонент Компонент Database EngineDatabase Engine задает размер файла равным 1 МБ.When a secondary data file or log file is specified but size is not specified for the file, the Компонент Database EngineDatabase Engine makes the file 1 MB.

Суффиксы KB, MB, GB и TB могут использоваться для указания килобайтов, мегабайтов, гигабайтов или терабайтов.The KB, MB, GB, and TB suffixes can be used to specify kilobytes, megabytes, gigabytes, or terabytes. По умолчанию — MБ.The default is MB. Укажите целое число без десятичного разделителя.Specify a whole number and do not include a decimal. Для указания долей мегабайта преобразуйте значение в килобайты, умножив число на 1024.To specify a fraction of a megabyte, convert the value to kilobytes by multiplying the number by 1024. Например, укажите «1536 KB» вместо «1,5 MB» (1,5 x 1024 = 1536).For example, specify 1536 KB instead of 1.5 MB (1.5 x 1024 = 1536).

Примечание

SIZE невозможно задать:SIZE cannot be set:

  • если указан UNC-путь к файлу;When a UNC path is specified for the file
  • для файловых групп FILESTREAM и MEMORY_OPTIMIZED_DATA.For FILESTREAM and MEMORY_OPTIMIZED_DATA filegroups

MAXSIZE { max_size| UNLIMITED } — задает максимальное значение, до которого может увеличиваться размер файла.MAXSIZE { max_size| UNLIMITED } Specifies the maximum file size to which the file can grow.

max_size — максимальный размер файла.max_size Is the maximum file size. Суффиксы KB, MB, GB и TB могут использоваться для указания килобайтов, мегабайтов, гигабайтов или терабайтов.The KB, MB, GB, and TB suffixes can be used to specify kilobytes, megabytes, gigabytes, or terabytes. По умолчанию — MБ.The default is MB. Укажите целое число без десятичного разделителя.Specify a whole number and do not include a decimal. Если аргумент max_size не указан, то размер файла может увеличиваться до тех пор, пока диск не будет заполнен.If max_size is not specified, the file size will increase until the disk is full.

UNLIMITED — указывает, что размер файла может увеличиваться вплоть до заполнения диска.UNLIMITED Specifies that the file grows until the disk is full. В SQL ServerSQL Server файл журнала, для которого задано неограниченное увеличение размера, имеет максимальный размер 2 ТБ, а файл данных — 16 ТБ.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. Ограничения размера отсутствуют, если этот параметр указан для контейнера FILESTREAM.There is no maximum size when this option is specified for a FILESTREAM container. Размер продолжает увеличиваться до полного заполнения диска.It continues to grow until the disk is full.

Примечание

MAXSIZE невозможно задать, если указан UNC-путь к файлу.MAXSIZE cannot be set when a UNC path is specified for the file.

FILEGROWTH growth_increment — задает шаг автоматического приращения при увеличении размера файла.FILEGROWTH growth_increment Specifies the automatic growth increment of the file. Значение параметра FILEGROWTH для файла не может превосходить значение параметра MAXSIZE.The FILEGROWTH setting for a file cannot exceed the MAXSIZE setting. Параметр FILEGROWTH не применяется к файловым группам FILESTREAM.FILEGROWTH does not apply to FILESTREAM filegroups.

growth_increment — объем пространства, добавляемого к файлу каждый раз, когда требуется увеличить пространство.growth_increment Is the amount of space added to the file every time new space is required.

Значение может быть указано в килобайтах, мегабайтах, гигабайтах, терабайтах или процентах (%).The value can be specified in MB, KB, GB, TB, or percent (%). Если указано число без суффикса MB, KB или %, то по умолчанию используется MB.If a number is specified without an MB, KB, or % suffix, the default is MB. Если размер указан в процентах (%), то шаг роста — это заданная часть в процентах от размера файла во время этого файла.When % is specified, the growth increment size is the specified percentage of the size of the file at the time the increment occurs. Указанный размер округляется до ближайших 64 КБ.The size specified is rounded to the nearest 64 KB.

Значение 0 указывает, что автоматическое приращение выключено и дополнительное пространство для файла не разрешено.A value of 0 indicates that automatic growth is set to off and no additional space is allowed.

Если параметр FILEGROWTH не задан, доступны следующие значения по умолчанию.If FILEGROWTH is not specified, the default values are:

ВерсияVersion Значения по умолчаниюDefault values
Начиная с SQL Server 2016 (13.x)SQL Server 2016 (13.x)Starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x) Данные — 64 МБ.Data 64 MB. Файлы журналов — 64 МБ.Log files 64 MB.
Начиная с SQL Server 2005SQL Server 2005Starting with SQL Server 2005SQL Server 2005 Данные — 1 МБ.Data 1 MB. Файлы журналов — 10 %.Log files 10%.
До SQL Server 2005SQL Server 2005Prior to SQL Server 2005SQL Server 2005 Данные — 10 %.Data 10%. Файлы журналов — 10 %.Log files 10%.

Примечание

FILEGROWTH невозможно задать:FILEGROWTH cannot be set:

  • если указан UNC-путь к файлу;When a UNC path is specified for the file
  • для файловых групп FILESTREAM и MEMORY_OPTIMIZED_DATA.For FILESTREAM and MEMORY_OPTIMIZED_DATA filegroups

OFFLINE — переводит файл в режим "вне сети" и делает все объекты в файловой группе недоступными.OFFLINE Sets the file offline and makes all objects in the filegroup inaccessible.

Внимание!

Используйте этот параметр только в том случае, когда файл поврежден и может быть восстановлен.Use this option only when the file is corrupted and can be restored. Файл, переведенный в режим OFFLINE, может быть заново включен в режиме в сети только при восстановлении из резервной копии.A file set to OFFLINE can only be set online by restoring the file from backup. Дополнительные сведения о восстановлении отдельного файла см. в статье Инструкции RESTORE (Transact-SQL).For more information about restoring a single file, see RESTORE.

Параметры <filespec> недоступны в автономной базе данных.<filespec> options are not available in a Contained Database.

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

Добавить, изменить или удалить файловую группу из базы данных.Add, modify, or remove a filegroup from the database.

ADD FILEGROUP filegroup_name — добавляет в базу данных файловую группу.ADD FILEGROUP filegroup_name Adds a filegroup to the database.

CONTAINS FILESTREAM — указывает, что файловая группа хранит большие двоичные объекты (BLOB-объекты) FILESTREAM в файловой системе.CONTAINS FILESTREAM Specifies that the filegroup stores FILESTREAM binary large objects (BLOBs) in the file system.

CONTAINS MEMORY_OPTIMIZED_DATACONTAINS MEMORY_OPTIMIZED_DATA

Применимо к: SQL ServerSQL ServerSQL Server 2014 (12.x)SQL Server 2014 (12.x) по 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)

Указывает, что файловая группа хранит оптимизируемые для памяти данные в файловой системе.Specifies that the filegroup stores memory optimized data in the file system. Дополнительные сведения см. в статье In-Memory OLTP (оптимизация в памяти).For more information, see In-Memory OLTP - In-Memory Optimization. Для каждой базы данных можно использовать только одну файловую группу MEMORY_OPTIMIZED_DATA.Only one MEMORY_OPTIMIZED_DATA filegroup is allowed per database. Для создания таблицы, оптимизируемой для памяти, файловая группа не может быть пустой.For creating memory optimized tables, the filegroup cannot be empty. Должно быть не менее одного файла.There must be at least one file. filegroup_name содержит путь.filegroup_name refers to a path. Должен существовать путь вплоть до последнего каталога, но последний каталог существовать не должен.The path up to the last folder must exist, and the last folder must not exist.

REMOVE FILEGROUP filegroup_name — удаляет файловую группу из базы данных.REMOVE FILEGROUP filegroup_name Removes a filegroup from the database. Файловая группа не может быть удалена, пока она не пустая.The filegroup cannot be removed unless it is empty. Вначале удалите из файловой группы все файлы.Remove all files from the filegroup first. Дополнительные сведения см. выше в разделе "REMOVE FILE logical_file_name".For more information, see "REMOVE FILE logical_file_name," earlier in this topic.

Примечание

Если сборщик мусора FILESTREAM не удалил все файлы из контейнера FILESTREAM, операция ALTER DATABASE REMOVE FILE по удалению контейнера 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. См. раздел Удаление контейнера FILESTREAM далее в этой статье.See the Removing a FILESTREAM Container section later in this topic.

MODIFY FILEGROUP filegroup_name { <filegroup_updatability_option> | DEFAULT | NAME =new_filegroup_name } Изменяет файловую группу, меняя ее состояние на READ_ONLY или READ_WRITE, делая ее файловой группой по умолчанию для базы данных или изменяя имя файловой группы.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> — устанавливает свойство "только для чтения" или "чтение и запись" для файловой группы.<filegroup_updatability_option> Sets the read-only or read/write property to the filegroup.

DEFAULT — изменяет стандартную файловую группу базы данных на filegroup_name.DEFAULT Changes the default database filegroup to filegroup_name. Только одна файловая группа в базе данных может быть файловой группой по умолчанию.Only one filegroup in the database can be the default filegroup. Дополнительные сведения см. в статье Файлы и группы файлов базы данных.For more information, see Database Files and Filegroups.

NAME = new_filegroup_name — изменяет имя файловой группы на new_filegroup_name.NAME = new_filegroup_name Changes the filegroup name to the new_filegroup_name.

AUTOGROW_SINGLE_FILE — применимо к SQL ServerSQL Server (версии от SQL Server 2016 (13.x)SQL Server 2016 (13.x) до 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)

Если файл в файловой группе удовлетворяет требованиям порога автоматического увеличения, увеличивается только этот файл.When a file in the filegroup meets the autogrow threshold, only that file grows. Это значение по умолчанию.This is the default.

AUTOGROW_ALL_FILESAUTOGROW_ALL_FILES

Применимо к: SQL ServerSQL ServerSQL Server 2016 (13.x)SQL Server 2016 (13.x) по 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)

Если файл в файловой группе удовлетворяет требованиям порога автоматического увеличения, все файлы в файловой группе увеличиваются.When a file in the filegroup meets the autogrow threshold, all files in the filegroup grow.

Примечание

Это значение по умолчанию для tempdb.This is the default value for TempDB.

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

Устанавливает свойство «только для чтения» или «чтение и запись» для файловой группы.Sets the read-only or read/write property to the filegroup.

READ_ONLY | READONLY — определяет, что файловая группа доступна только для чтения.READ_ONLY | READONLY Specifies the filegroup is read-only. Изменение ее объектов запрещено.Updates to objects in it are not allowed. Первичную файловую группу перевести в состояние только для чтения нельзя.The primary filegroup cannot be made read-only. Чтобы изменить это состояние, необходимо обладать монопольным доступом к базе данных.To change this state, you must have exclusive access to the database. Дополнительные сведения см. в описании предложения SINGLE_USER.For more information, see the SINGLE_USER clause.

Поскольку база данных находится в состоянии только для чтения, невозможно производить изменения данных:Because a read-only database does not allow data modifications:

  • при запуске системы будет пропущено автоматическое восстановление;Automatic recovery is skipped at system startup.
  • сжатие базы данных невозможно;Shrinking the database is not possible.
  • в базах данных, находящихся в состоянии только для чтения, невозможны блокировки.No locking occurs in read-only databases. Это может привести к более быстрому выполнению запросов.This can cause faster query performance.

Примечание

Ключевое слово READONLY будет удалено в будущей версии MicrosoftMicrosoftSQL ServerSQL Server.The keyword READONLY will be removed in a future version of MicrosoftMicrosoftSQL ServerSQL Server. Избегайте применять READONLY в новых разработках и запланируйте внесение изменений в приложения, использующие READONLY в настоящее время.Avoid using READONLY in new development work, and plan to modify applications that currently use READONLY. Вместо этого используйте READ_ONLY .Use READ_ONLY instead.

READ_WRITE | READWRITE — определяет, что файловая группа доступна для чтения и записи.READ_WRITE | READWRITE Specifies the group is READ_WRITE. Разрешено изменять объекты в файловой группе.Updates are enabled for the objects in the filegroup. Чтобы изменить это состояние, необходимо обладать монопольным доступом к базе данных.To change this state, you must have exclusive access to the database. Дополнительные сведения см. в описании предложения SINGLE_USER.For more information, see the SINGLE_USER clause.

Примечание

Ключевое слово READWRITE будет удалено в будущей версии MicrosoftMicrosoftSQL ServerSQL Server.The keyword READWRITE will be removed in a future version of MicrosoftMicrosoftSQL ServerSQL Server. Избегайте применять READWRITE в новых разработках и запланируйте изменить приложения, использующие в настоящее время READWRITE, на использование READ_WRITE.Avoid using READWRITE in new development work, and plan to modify applications that currently use READWRITE to use READ_WRITE instead.

Совет

Состояние этих параметров может быть определено с помощью проверки значения столбца is_read_only в представлении каталога sys.databases или свойства Updateability функции 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

Чтобы уменьшить размер базы данных, используйте предложение DBCC SHRINKDATABASE.To decrease the size of a database, use DBCC SHRINKDATABASE.

Добавить или удалить файл во время выполнения инструкции BACKUP невозможно.You cannot add or remove a file while a BACKUP statement is running.

Для каждой базы данных может указываться не более 32 767 файлов и 32 767 файловых групп.A maximum of 32,767 files and 32,767 filegroups can be specified for each database.

Начиная с SQL Server 2005SQL Server 2005 и в более поздних версиях состояние файла базы данных (например, в сети или вне сети) поддерживается независимо от состояния базы данных.Starting with SQL Server 2005SQL Server 2005, the state of a database file (for example, online or offline), is maintained independently from the state of the database. Дополнительные сведения см. в разделе Состояния файлов.For more information, see File States.

  • Состояние файлов в пределах файловой группы определяет доступность файловой группы в целом.The state of the files within a filegroup determines the availability of the whole filegroup. Чтобы файловая группа была доступна, необходимо, чтобы все файлы в файловой группе находились в режиме в сети.For a filegroup to be available, all files within the filegroup must be online.
  • Если файловая группа вне сети, то любая попытка обращения к файловой группе с помощью инструкции SQL закончится ошибкой.If a filegroup is offline, any try to access the filegroup by an SQL statement will fail with an error. При создании планов запросов для инструкций SELECT оптимизатор запросов избегает некластеризованных индексов и индексированных представлений, которые находятся в файловых группах вне сети.When you build query plans for SELECT statements, the query optimizer avoids nonclustered indexes and indexed views that reside in offline filegroups. Это позволяет успешно выполнить эти инструкции.This enables these statements to succeed. Однако если файловая группа, находящаяся в режиме вне сети, содержит кучу или кластеризованный индекс целевой таблицы, инструкции SELECT не будут выполнены.However, if the offline filegroup contains the heap or clustered index of the target table, the SELECT statements fail. Кроме того, любая инструкция INSERT, UPDATE или DELETE, изменяющая таблицу с любым индексом в файловой группе, находящихся в режиме вне сети, также не будет выполнена.Additionally, any INSERT, UPDATE, or DELETE statement that modifies a table with any index in an offline filegroup will fail.

Параметры SIZE, MAXSIZE и FILEGROWTH недоступны, если путь к файлу указан в формате UNC.SIZE, MAXSIZE, and FILEGROWTH parameters cannot be set when a UNC path is specified for the file.

Параметры SIZE и FILEGROWTH невозможно задать для файловых групп, оптимизированных для памяти.SIZE and FILEGROWTH parameters cannot be set for memory optimized filegroups.

Ключевое слово READONLY будет удалено в будущей версии MicrosoftMicrosoftSQL ServerSQL Server.The keyword READONLY will be removed in a future version of MicrosoftMicrosoftSQL ServerSQL Server. Избегайте использовать READONLY в новых разработках и запланируйте изменение приложений, которые используют READONLY в настоящее время.Avoid using READONLY in new development work, and plan to modify applications that currently use READONLY. Вместо этого используйте READ_ONLY .Use READ_ONLY instead.

Ключевое слово READWRITE будет удалено в будущей версии MicrosoftMicrosoftSQL ServerSQL Server.The keyword READWRITE will be removed in a future version of MicrosoftMicrosoftSQL ServerSQL Server. Избегайте применять READWRITE в новых разработках и запланируйте изменить приложения, использующие в настоящее время READWRITE, на использование READ_WRITE.Avoid using READWRITE in new development work, and plan to modify applications that currently use READWRITE to use READ_WRITE instead.

Перемещение файловMoving Files

Системные или определенные пользователем данные и файлы журналов можно перемещать, указывая новое местоположение в параметре FILENAME.You can move system or user-defined data and log files by specifying the new location in FILENAME. Это может быть полезным в следующих случаях:This may be useful in the following scenarios:

  • Восстановление после сбоя.Failure recovery. Например, база данных находится в подозрительном режиме или завершила работу по причине сбоя оборудования;For example, the database is in suspect mode or shutdown caused by hardware failure.
  • Плановое перемещение.Planned relocation.
  • Перемещение для запланированного обслуживания дисков.Relocation for scheduled disk maintenance.

Дополнительные сведения см. в статье Перемещение файлов базы данных.For more information, see Move Database Files.

Инициализация файловInitializing Files

По умолчанию файлы данных и журналов инициализируются, заполняясь нулями, при выполнении одной из следующих операций:By default, data and log files are initialized by filling the files with zeros when you perform one of the following operations:

  • Создание базы данных.Create a database.
  • добавление файлов к существующей базе данных;Add files to an existing database.
  • увеличение размера существующего файла;Increase the size of an existing file.
  • Восстановление базы данных или файловой группы.Restore a database or filegroup.

Файлы данных могут быть инициализированы мгновенно.Data files can be initialized instantaneously. Это разрешено для быстрого выполнения этих файловых операций.This enables for fast execution of these file operations. Дополнительные сведения см. в разделе Инициализация файлов базы данных.For more information, see Database File Initialization.

Удаление контейнера FILESTREAMRemoving a FILESTREAM Container

Даже если контейнер FILESTREAM был очищен с использованием операции "DBCC SHRINKFILE", базе данных по-прежнему могут быть необходимы ссылки на удаленные файлы по различным причинам, связанным с обслуживанием системы.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 запустит сборщик мусора FILESTREAM, чтобы удалить эти файлы, когда это будет безопасно.sp_filestream_force_garbage_collection will run the FILESTREAM Garbage Collector to remove these files when it is safe to do so. Если сборщик мусора FILESTREAM не удалил все файлы из контейнера FILESTREAM, операция ALTER DATABASE REMOVE FILE по удалению контейнера FILESTREAM завершится неудачей и вернет ошибку.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. Для удаления контейнера FILESTREAM рекомендуется следующий процесс.The following process is recommended to remove a FILESTREAM container.

  1. Выполните инструкцию DBCC SHRINKFILE с параметром EMPTYFILE, чтобы переместить активное содержимое этого контейнера в другие контейнеры.Run DBCC SHRINKFILE with the EMPTYFILE option to move the active contents of this container to other containers.
  2. Убедитесь, что в модели восстановления FULL или BULK_LOGGED было выполнено резервное копирование журналов.Ensure that Log backups have been taken, in the FULL or BULK_LOGGED recovery model.
  3. Убедитесь, что было запущено задание чтения журнала репликации, если это необходимо.Ensure that the replication log reader job has been run, if relevant.
  4. Выполните хранимую процедуру sp_filestream_force_garbage_collection, чтобы сборщик мусора удалил все файлы, которые больше не нужны в этом контейнере.Run sp_filestream_force_garbage_collection to force the garbage collector to delete any files that are no longer needed in this container.
  5. Выполните инструкцию ALTER DATABASE с параметром REMOVE FILE, чтобы удалить этот контейнер.Execute ALTER DATABASE with the REMOVE FILE option to remove this container.
  6. Повторите шаги с 2 по 4, чтобы завершить сборку мусора.Repeat steps 2 through 4 once more to complete the garbage collection.
  7. Используйте инструкцию ALTER Database...REMOVE FILE, чтобы удалить этот контейнер.Use ALTER Database...REMOVE FILE to remove this container.

ПримерыExamples

A.A. Добавление файла к базе данныхAdding a file to a database

В следующем примере к базе данных AdventureWorks2012AdventureWorks2012 добавляется файл данных размером 5 МБ.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. Добавление файловой группы с двумя файлами к базе данныхAdding a filegroup with two files to a database

В следующем примере в базе данных AdventureWorks2012AdventureWorks2012 создается файловая группа Test1FG1 и добавляется два файла по 5 МБ в эту файловую группу.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. Добавление двух файлов журнала к базе данныхAdding two log files to a database

В следующем примере к базе данных AdventureWorks2012AdventureWorks2012 добавляется два файла журнала размером 5 МБ каждый.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. Удаление файла из базы данныхRemoving a file from a database

В следующем примере удаляется один из файлов, добавленных в примере Б.The following example removes one of the files added in example B.

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

Д.E. Изменение файлаModifying a file

В следующем примере увеличивается размер одного из файлов, добавленных в примере Б. Инструкция ALTER DATABASE с командой MODIFY FILE может только увеличить размер файла, поэтому, если нужно уменьшить размер файла, следует использовать 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

В этом примере показано уменьшение размера файла данных до 100 МБ и определение размера при этом объеме.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. Перемещение файла в новое расположениеMoving a file to a new location

В следующем примере файл Test1dat2, созданный в примере A, перемещается в новый каталог.The following example moves the Test1dat2 file created in example A to a new directory.

Примечание

Перед выполнением этого примера необходимо физически переместить файл в новый каталог.You must physically move the file to the new directory before running this example. После выполнения остановите и запустите экземпляр SQL ServerSQL Server или переведите базу данных AdventureWorks2012AdventureWorks2012 в состояние OFFLINE, а затем назад в ONLINE, чтобы осуществить изменения.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. Перемещение базы данных tempdb в новое расположениеMoving tempdb to a new location

В следующем примере база данных tempdb перемещается из ее текущего расположения на диске в другое расположение.The following example moves tempdb from its current location on the disk to another disk location. Так как база данных tempdb повторно создается при каждом запуске службы MSSQLSERVER, нет необходимости физически переносить файлы данных и журнала.Because tempdb is re-created each time the MSSQLSERVER service is started, you do not have to physically move the data and log files. Эти файлы создаются при запуске службы на шаге 3.The files are created when the service is restarted in step 3. Пока служба не будет запущена повторно, база данных tempdb продолжает функционировать на прежнем месте.Until the service is restarted, tempdb continues to function in its existing location.

  1. Определите логические имена файлов базы данных tempdb и их текущее расположение на диске.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. Измените местоположение каждого файла с помощью 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. Остановите и перезапустите экземпляр SQL ServerSQL Server.Stop and restart the instance of SQL ServerSQL Server.

  4. Проверьте изменение файла.Verify the file change.

    SELECT name, physical_name
    FROM sys.master_files
    WHERE database_id = DB_ID('tempdb');
    
  5. Удалите файлы tempdb.mdf и templog.ldf из их исходного расположения.Delete the tempdb.mdf and templog.ldf files from their original location.

З.H. Назначение файловой группы по умолчаниюMaking a filegroup the default

В следующем примере файловая группа Test1FG1, созданная в примере Б, назначается файловой группой по умолчанию.The following example makes the Test1FG1 filegroup created in example B the default filegroup. Затем файловая группа по умолчанию будет переназначена на файловую группу PRIMARY.Then, the default filegroup is reset to the PRIMARY filegroup. Обратите внимание, что слово PRIMARY должно быть заключено в скобки или в кавычки.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. Добавление файловой группы с помощью инструкции ALTER DATABASEAdding a Filegroup Using ALTER DATABASE

В следующем примере в базу данных FILEGROUP добавляется файловая группа FILESTREAM, содержащая предложение 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

В следующем примере в базу данных FILEGROUP добавляется файловая группа MEMORY_OPTIMIZED_DATA, содержащая предложение xtp_db.The following example adds a FILEGROUP that contains the MEMORY_OPTIMIZED_DATA clause to the xtp_db database. В файловой группе хранятся данные, оптимизированные для памяти.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. Изменение файловой группы таким образом, что если файл в файловой группе удовлетворяет требованиям порога автоматического увеличения, увеличиваются все файлы в файловой группеChange filegroup so that when a file in the filegroup meets the autogrow threshold, all files in the filegroup grow

В следующем примере создаются необходимые инструкции ALTER DATABASE для изменения файловых групп для чтения и записи с помощью параметра 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

См. также:See Also

SQL ServerSQL Server * Управляемый экземпляр Базы данных SQL
*
* SQL Database
managed instance *

 

 

Управляемый экземпляр Базы данных SQL AzureAzure SQL Database managed instance

Используйте эту инструкцию с базой данных в управляемом экземпляре Базы данных SQL Azure.Use this statement with a database in Azure SQL Database managed instance.

Синтаксис для баз данных в управляемом экземпляреSyntax 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 }
}

АргументыArguments

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

Указывает файл, который будет добавлен, удален или изменен.Specifies the file to be added, removed, or modified.

database_name — имя изменяемой базы данных.database_name Is the name of the database to be modified.

ADD FILE — добавляет файл к базе данных.ADD FILE Adds a file to the database.

TO FILEGROUP { filegroup_name } — задает файловую группу, к которой необходимо добавить указанный файл.TO FILEGROUP { filegroup_name } Specifies the filegroup to which to add the specified file. Чтобы отобразить текущую файловую группу и узнать, какая файловая группа в данный момент установлена по умолчанию, используйте представление каталога 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 — удаляет логическое описание файла из экземпляра SQL ServerSQL Server и физический файл.REMOVE FILE logical_file_name Removes the logical file description from an instance of SQL ServerSQL Server and deletes the physical file. Файл не может быть удален, если он не пуст.The file cannot be removed unless it is empty.

logical_file_name — логическое имя, используемое в SQL ServerSQL Server при обращении к файлу.logical_file_name Is the logical name used in SQL ServerSQL Server when referencing the file.

MODIFY FILE — указывает файл, который должен быть изменен.MODIFY FILE Specifies the file that should be modified. Одновременно может быть изменено только одно свойство <filespec>.Only one <filespec> property can be changed at a time. Предложение NAME всегда должно быть указано в <filespec>, чтобы определить, какой файл будет изменен.NAME must always be specified in the <filespec> to identify the file to be modified. Если указано предложение SIZE, новый размер файла должен быть больше, чем текущий.If SIZE is specified, the new size must be larger than the current file size.

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

Управляет свойствами файла.Controls the file properties.

NAME logical_file_name — задает логическое имя файла.NAME logical_file_name Specifies the logical name of the file.

logical_file_name — логическое имя, используемое в экземпляре SQL ServerSQL Server при ссылке на файл.logical_file_name Is the logical name used in an instance of SQL ServerSQL Server when referencing the file.

NEWNAME new_logical_file_name — задает новое логическое имя файла.NEWNAME new_logical_file_name Specifies a new logical name for the file.

new_logical_file_name — имя, которым будет заменено текущее логическое имя файла.new_logical_file_name Is the name to replace the existing logical file name. Имя должно быть уникальным в базе данных и соответствовать правилам для идентификаторов.The name must be unique within the database and comply with the rules for identifiers. Имя может быть символьной константой или константой Юникода, обычным идентификатором или идентификатором с разделителем.The name can be a character or Unicode constant, a regular identifier, or a delimited identifier.

SIZE size — указывает размер файла.SIZE size Specifies the file size.

size — размер файла.size Is the size of the file.

При использовании в инструкции ADD FILE аргумент size является начальным размером файла.When specified with ADD FILE, size is the initial size for the file. При использовании в инструкции MODIFY FILE аргумент size является новым размером файла и должен превышать текущий размер файла.When specified with MODIFY FILE, size is the new size for the file, and must be larger than the current file size.

Если для первичного файла не задан аргумент size, компонент SQL ServerSQL Serverиспользует размер первичного файла, указанный в базе данных model.When size is not supplied for the primary file, the SQL ServerSQL Server uses the size of the primary file in the model database. Когда указан вторичный файл данных или журнала, но для этого файла не указан аргумент size, компонент Компонент Database EngineDatabase Engine задает размер файла равным 1 МБ.When a secondary data file or log file is specified but size is not specified for the file, the Компонент Database EngineDatabase Engine makes the file 1 MB.

Суффиксы KB, MB, GB и TB могут использоваться для указания килобайтов, мегабайтов, гигабайтов или терабайтов.The KB, MB, GB, and TB suffixes can be used to specify kilobytes, megabytes, gigabytes, or terabytes. По умолчанию — MБ.The default is MB. Укажите целое число без десятичного разделителя.Specify a whole number and do not include a decimal. Для указания долей мегабайта преобразуйте значение в килобайты, умножив число на 1024.To specify a fraction of a megabyte, convert the value to kilobytes by multiplying the number by 1024. Например, укажите «1536 KB» вместо «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 } — задает максимальное значение, до которого может увеличиваться размер файла.MAXSIZE { max_size| UNLIMITED } Specifies the maximum file size to which the file can grow.

max_size — максимальный размер файла.max_size Is the maximum file size. Суффиксы KB, MB, GB и TB могут использоваться для указания килобайтов, мегабайтов, гигабайтов или терабайтов.The KB, MB, GB, and TB suffixes can be used to specify kilobytes, megabytes, gigabytes, or terabytes. По умолчанию — MБ.The default is MB. Укажите целое число без десятичного разделителя.Specify a whole number and do not include a decimal. Если аргумент max_size не указан, то размер файла может увеличиваться до тех пор, пока диск не будет заполнен.If max_size is not specified, the file size will increase until the disk is full.

UNLIMITED — указывает, что размер файла может увеличиваться вплоть до заполнения диска.UNLIMITED Specifies that the file grows until the disk is full. В SQL ServerSQL Server файл журнала, для которого задано неограниченное увеличение размера, имеет максимальный размер 2 ТБ, а файл данных — 16 ТБ.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 — задает шаг автоматического приращения при увеличении размера файла.FILEGROWTH growth_increment Specifies the automatic growth increment of the file. Значение параметра FILEGROWTH для файла не может превосходить значение параметра MAXSIZE.The FILEGROWTH setting for a file cannot exceed the MAXSIZE setting.

growth_increment — объем пространства, добавляемого к файлу каждый раз, когда требуется увеличить пространство.growth_increment Is the amount of space added to the file every time new space is required.

Значение может быть указано в килобайтах, мегабайтах, гигабайтах, терабайтах или процентах (%).The value can be specified in MB, KB, GB, TB, or percent (%). Если указано число без суффикса MB, KB или %, то по умолчанию используется MB.If a number is specified without an MB, KB, or % suffix, the default is MB. Если размер указан в процентах (%), то шаг роста — это заданная часть в процентах от размера файла во время этого файла.When % is specified, the growth increment size is the specified percentage of the size of the file at the time the increment occurs. Указанный размер округляется до ближайших 64 КБ.The size specified is rounded to the nearest 64 KB.

Значение 0 указывает, что автоматическое приращение выключено и дополнительное пространство для файла не разрешено.A value of 0 indicates that automatic growth is set to off and no additional space is allowed.

Если параметр FILEGROWTH не задан, доступны следующие значения по умолчанию.If FILEGROWTH is not specified, the default values are:

  • Данные: 64 МБ.Data 64 MB
  • Файлы журналов: 64 МБ.Log files 64 MB

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

Добавить, изменить или удалить файловую группу из базы данных.Add, modify, or remove a filegroup from the database.

ADD FILEGROUP filegroup_name — добавляет в базу данных файловую группу.ADD FILEGROUP filegroup_name Adds a filegroup to the database.

В следующем примере создается файловая группа, которая добавляется в базу данных с именем sql_db_mi, и в эту файловую группу добавляется файл.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 FILEGROUP filegroup_name Removes a filegroup from the database. Файловая группа не может быть удалена, пока она не пустая.The filegroup cannot be removed unless it is empty. Вначале удалите из файловой группы все файлы.Remove all files from the filegroup first. Дополнительные сведения см. выше в разделе "REMOVE FILE logical_file_name".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 } Изменяет файловую группу, меняя ее состояние на READ_ONLY или READ_WRITE, делая ее файловой группой по умолчанию для базы данных или изменяя имя файловой группы.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> — устанавливает свойство "только для чтения" или "чтение и запись" для файловой группы.<filegroup_updatability_option> Sets the read-only or read/write property to the filegroup.

DEFAULT — изменяет стандартную файловую группу базы данных на filegroup_name.DEFAULT Changes the default database filegroup to filegroup_name. Только одна файловая группа в базе данных может быть файловой группой по умолчанию.Only one filegroup in the database can be the default filegroup. Дополнительные сведения см. в статье Файлы и группы файлов базы данных.For more information, see Database Files and Filegroups.

NAME = new_filegroup_name — изменяет имя файловой группы на new_filegroup_name.NAME = new_filegroup_name Changes the filegroup name to the new_filegroup_name.

AUTOGROW_SINGLE_FILEAUTOGROW_SINGLE_FILE

Если файл в файловой группе удовлетворяет требованиям порога автоматического увеличения, увеличивается только этот файл.When a file in the filegroup meets the autogrow threshold, only that file grows. Это значение по умолчанию.This is the default.

AUTOGROW_ALL_FILESAUTOGROW_ALL_FILES

Если файл в файловой группе удовлетворяет требованиям порога автоматического увеличения, все файлы в файловой группе увеличиваются.When a file in the filegroup meets the autogrow threshold, all files in the filegroup grow.

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

Устанавливает свойство «только для чтения» или «чтение и запись» для файловой группы.Sets the read-only or read/write property to the filegroup.

READ_ONLY | READONLY — определяет, что файловая группа доступна только для чтения.READ_ONLY | READONLY Specifies the filegroup is read-only. Изменение ее объектов запрещено.Updates to objects in it are not allowed. Первичную файловую группу перевести в состояние только для чтения нельзя.The primary filegroup cannot be made read-only. Чтобы изменить это состояние, необходимо обладать монопольным доступом к базе данных.To change this state, you must have exclusive access to the database. Дополнительные сведения см. в описании предложения SINGLE_USER.For more information, see the SINGLE_USER clause.

Поскольку база данных находится в состоянии только для чтения, невозможно производить изменения данных:Because a read-only database does not allow data modifications:

  • при запуске системы будет пропущено автоматическое восстановление;Automatic recovery is skipped at system startup.
  • сжатие базы данных невозможно;Shrinking the database is not possible.
  • в базах данных, находящихся в состоянии только для чтения, невозможны блокировки.No locking occurs in read-only databases. Это может привести к более быстрому выполнению запросов.This can cause faster query performance.

Примечание

Ключевое слово READONLY будет удалено в будущей версии MicrosoftMicrosoftSQL ServerSQL Server.The keyword READONLY will be removed in a future version of MicrosoftMicrosoftSQL ServerSQL Server. Избегайте использования ключевого слова READONLY в новых разработках и запланируйте изменение приложений, которые сейчас его используют.Avoid using READONLY in new development work, and plan to modify applications that currently use READONLY. Вместо него используйте READ_ONLY.Use READ_ONLY instead.

READ_WRITE | READWRITE — определяет, что файловая группа доступна для чтения и записи.READ_WRITE | READWRITE Specifies the group is READ_WRITE. Разрешено изменять объекты в файловой группе.Updates are enabled for the objects in the filegroup. Чтобы изменить это состояние, необходимо обладать монопольным доступом к базе данных.To change this state, you must have exclusive access to the database. Дополнительные сведения см. в описании предложения SINGLE_USER.For more information, see the SINGLE_USER clause.

Примечание

Ключевое слово READWRITE будет удалено в будущей версии MicrosoftMicrosoftSQL ServerSQL Server.The keyword READWRITE will be removed in a future version of MicrosoftMicrosoftSQL ServerSQL Server. Избегайте применять READWRITE в новых разработках и запланируйте изменить приложения, использующие в настоящее время READWRITE, на использование READ_WRITE.Avoid using READWRITE in new development work, and plan to modify applications that currently use READWRITE to use READ_WRITE instead.

Состояние этих параметров может быть определено с помощью проверки значения столбца is_read_only в представлении каталога sys.databases или свойства Updateability функции 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

Чтобы уменьшить размер базы данных, используйте предложение DBCC SHRINKDATABASE.To decrease the size of a database, use DBCC SHRINKDATABASE.

Добавить или удалить файл во время выполнения инструкции BACKUP невозможно.You cannot add or remove a file while a BACKUP statement is running.

Для каждой базы данных может указываться не более 32 767 файлов и 32 767 файловых групп.A maximum of 32,767 files and 32,767 filegroups can be specified for each database.

ПримерыExamples

A.A. Добавление файла к базе данныхAdding a file to a database

В следующем примере к базе данных AdventureWorks2012AdventureWorks2012 добавляется файл данных размером 5 МБ.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. Добавление файловой группы с двумя файлами к базе данныхAdding a filegroup with two files to a database

В следующем примере в базе данных AdventureWorks2012AdventureWorks2012 создается файловая группа Test1FG1 и добавляется два файла по 5 МБ в эту файловую группу.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. Удаление файла из базы данныхRemoving a file from a database

В следующем примере удаляется один из файлов, добавленных в примере Б.The following example removes one of the files added in example B.

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

Г.D. Изменение файлаModifying a file

В следующем примере увеличивается размер одного из файлов, добавленных в примере Б. Инструкция ALTER DATABASE с командой MODIFY FILE может только увеличить размер файла, поэтому, если нужно уменьшить размер файла, следует использовать 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

В этом примере показано уменьшение размера файла данных до 100 МБ и определение размера при этом объеме.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. Назначение файловой группы по умолчаниюMaking a filegroup the default

В следующем примере файловая группа Test1FG1, созданная в примере Б, назначается файловой группой по умолчанию.The following example makes the Test1FG1 filegroup created in example B the default filegroup. Затем файловая группа по умолчанию будет переназначена на файловую группу PRIMARY.Then, the default filegroup is reset to the PRIMARY filegroup. Обратите внимание, что слово PRIMARY должно быть заключено в скобки или в кавычки.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. Добавление файловой группы с помощью инструкции ALTER DATABASEAdding a Filegroup Using ALTER DATABASE

В следующем примере к базе данных MyDB добавляется FILEGROUP.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. Изменение файловой группы таким образом, что если файл в файловой группе удовлетворяет требованиям порога автоматического увеличения, увеличиваются все файлы в файловой группеChange filegroup so that when a file in the filegroup meets the autogrow threshold, all files in the filegroup grow

В следующем примере создаются необходимые инструкции ALTER DATABASE для изменения файловых групп для чтения и записи с помощью параметра 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

См. также:See Also