Как сделать так, чтобы данные попадали во вновь созданный файл ndf в SQL Server - PullRequest
1 голос
/ 15 марта 2019

У меня очень большая база данных, и ее .MDF и .LDF файлы хранятся на разных дисках (скажем, на дисках D и E);теперь на диске D с файлом .MDF не хватает места, поэтому я создал новый файл .NDF на другом новом диске (скажем, на диске H), но после запуска некоторых сценариев вставки / обновления он все еще показывает, что естьнет места на диске DКак заставить вновь созданный .NDF использовать измененные данные для выделения в нем?

Ответы [ 2 ]

2 голосов
/ 15 марта 2019

Сделать вновь созданный файл .ndf как файл данных по умолчанию. Как ниже:

USE master;
GO
ALTER DATABASE AdventureWorks2012
MODIFY FILEGROUP Test1FG1 DEFAULT;
GO
ALTER DATABASE AdventureWorks2012
MODIFY FILEGROUP [PRIMARY] DEFAULT;
GO
0 голосов
/ 15 марта 2019

Это может быть достигнуто установкой свойства MAXSIZE файла MDF, равного текущему размеру:

ALTER DATABASE [yourDB] MODIFY FILE ( NAME = N'yourDB_mdf', SIZE = 500MB , MAXSIZE = 500MB )

В этом случае все новые страницы данных будут выделены и записаны в новый NDF. Второй файл данных, конечно, не должен иметь никаких ограничений MAXSIZE.


Однако не существует простого способа сбалансировать существующие данные. Один из подходов:

  • создать новую FILEGROUP с несколькими файлами
  • перестроить индексы, используя CREATE INDEX … WITH (DROP_EXISTING=ON) плюс указав новую файловую группу
  • Уменьшите или удалите старую файловую группу, чтобы освободить место на диске.

Другой подход: Разделить файловую группу на несколько файлов данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...