本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
添加和平衡数据文件
随附的 SQL Server 数据库通常 EnterpriseOne 可以从其他文件中受益。其他文件可在存储和处理器内核之间实现最佳平衡。平衡文件是一个多步骤过程。其中许多步骤都需要对数据库对象的独占访问权限,因此您必须让其他系统脱机访问数据库。 EnterpriseOne
完成文件大小计算
要找到合适数据库文件的大小,首先使用以下查询检查当前 ROW 数据的大小。
USE JDE_PRIST920 SELECT SUM(CAST(FILEPROPERTY(name, 'SpaceUsed') AS INT)/128.0) AS SpaceUsedMB FROM sys.database_files WHERE type IN (0,1) AND type_desc = 'ROWS'
然后完成以下计算并填写您的值一列:
行 | 名称 | 示例 | 您的值 | 描述 |
---|---|---|---|---|
1 | 该行的当前大小 | 1TB | 上次查询的结果。 | |
2 | 计划的增长 | 20% | 未来几个月的预期增长,包括安全裕度。 | |
3 | 所需大小 | 1.2TB | 第 1 行乘以第 2 行。 | |
4 | 文件数量 | 8 | 目标文件数。 | |
5 | 每个文件的大小 | 150GB | 第 3 行除以第 4 行。 | |
6 | 自动生长百分比 | 10% | 自动增长的大小。为了最大限度地减少碎片化,10% 是一个不错的目标。 | |
7 | 自动生长大小 | 15 GB | 第 5 行乘以第 6 行。 |
创建新的文件
使用以下脚本作为模板向数据库添加文件。修改以下参数:
-
改变您要向其添加文件的数据库名称的
JDE-PRIST920
。 -
对于
NAME
,请指定要添加的每个文件的逻辑名称。 -
对于
FILENAME
,请指定要添加的每个文件的实体名称。 -
对于
FILEGROWTH
,请使用您在上表第 7 行中计算的值。 -
对于
SIZE
,请指定上表第 5 行中的值。
USE master; GO ALTER DATABASE JDE_PRIST920 MODIFY FILE (NAME = JDE_PRIST920_Data, FILEGROWTH = 15GB); GO ALTER DATABASE JDE_PRIST920 ADD FILE (NAME = JDE_PRIST920_Data2, FILENAME = 'M:\DATA\PRIST920_Data2.ndf', SIZE=150GB, FILEGROWTH = 15GB), (NAME = JDE_PRIST920_Data3, FILENAME = 'M:\DATA\PRIST920_Data3.ndf', SIZE=150GB, FILEGROWTH = 15GB), (NAME = JDE_PRIST920_Data4, FILENAME = 'M:\DATA\PRIST920_Data4.ndf', SIZE=150GB, FILEGROWTH = 15GB), (NAME = JDE_PRIST920_Data5, FILENAME = 'M:\DATA\PRIST920_Data5.ndf', SIZE=150GB, FILEGROWTH = 15GB), (NAME = JDE_PRIST920_Data6, FILENAME = 'M:\DATA\PRIST920_Data6.ndf', SIZE=150GB, FILEGROWTH = 15GB), (NAME = JDE_PRIST920_Data7, FILENAME = 'M:\DATA\PRIST920_Data7.ndf', SIZE=150GB, FILEGROWTH = 15GB), (NAME = JDE_PRIST920_Data8, FILENAME = 'M:\DATA\PRIST920_Data8.ndf', SIZE=150GB, FILEGROWTH = 15GB), (NAME = JDE_PRIST920_TEMP, FILENAME = 'M:\DATA\PRIST920_TEMP.ndf', SIZE=150GB, FILEGROWTH = 15GB) GO
暂时清空 MDF 文件
创建文件之后,通过对每个文件运行以下命令将数据从 MDF 迁移到 NDF 文件。调整文件名以反映数据库中的文件名。
USE JDE_PRIST920 DBCC SHRINKFILE (JDE_PRIST920_Data, EMPTYFILE)
EMPTYFILE
命令会生成错误,因为某些内容无法移动到 NDF 文件。您可以忽略该错误消息。

调整 MDF 文件的大小
要将 MDF 文件的大小减至目标大小,请运行以下命令。调整文件大小以反映表格中计算结果第 5 行的值。
JDE_PRIST920 DBCC SHRINKFILE (JDE_PRIST920_Data, 150000);
SHRINKFILE
命令偶尔也会失败,因为放置了无法移动到 NDF 文件的内容。在这种情况下,您可能需要运行 DBCC DBREINDEX
命令,重新运行该进程以清空文件,然后再次尝试 SHRINKFILE
操作。
清理
创建目标文件并且已正确调整 MDF 文件的大小后,使用以下命令将数据从 TEMP 文件迁移回 MDF 文件。调整文件名以反映数据库中的文件名。
DBCC SHRINKFILE (JDE_PRIST920_TEMP, EMPTYFILE)
当文件为空时,请使用以下命令将其删除:
ALTER DATABASE JDE_PRIST920; REMOVE FILE JDE_PRIST920_TEMP;
验证结果
要查看平衡后数据库当前磁盘空间利用率,请运行以下脚本。
USE JDE_PRIST920 SELECT DB_NAME() AS DbName, type_desc, CAST(FILEPROPERTY(name, 'SpaceUsed') AS INT)/128.0 AS SpaceUsedMB FROM sys.database_files WHERE type IN (0,1) AND type_desc = 'ROWS'; SELECT SUM(CAST(FILEPROPERTY(name, 'SpaceUsed') AS INT)/128.0) AS TotalSpaceUsedMB FROM sys.database_files WHERE type IN (0,1) AND type_desc = 'ROWS'
该输出值应该类似于以下内容。这些文件很少会完美平衡,因为有些内容只能存在于 MDF 文件中。
