我想将我数据库中的所有文件组更改为AutoGrow_all_Files,但只有在当前为AutoGrow_Single_File的情况下,如下所示:
ALTER DATABASE mydatabase MODIFY FILEGROUP [myfilegroup] AUTOGROW_ALL_FILES如何检查此数据库属性?
发布于 2016-08-12 14:01:07
sys.filegroups包含一个列is_autogrow_all_files,该列指示该设置是否已为所讨论的文件组打开。
这将显示可以运行的alter语句列表:
DECLARE @cmd NVARCHAR(2000);
DECLARE cur CURSOR LOCAL FORWARD_ONLY STATIC
FOR
SELECT '
select ''ALTER DATABASE ' + QUOTENAME(d.name) + ' MODIFY FILEGROUP '' + QUOTENAME(ds.name) + '' AUTOGROW_ALL_FILES;''
from ' + QUOTENAME(d.name) + '.sys.data_spaces ds
INNER JOIN ' + QUOTENAME(d.name) + '.sys.filegroups fg ON ds.data_space_id = fg.data_space_id
WHERE fg.is_autogrow_all_files = 0;
'
FROM sys.databases d;
OPEN cur;
FETCH NEXT FROM cur INTO @cmd;
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT (@cmd);
FETCH NEXT FROM cur INTO @cmd;
END
CLOSE cur;
DEALLOCATE cur;代码将显示一组语句,您可以为实例上的每个数据库运行一组语句,以修改每个文件组。
生成的语句的示例是:
select 'ALTER DATABASE [msdb] MODIFY FILEGROUP ' + QUOTENAME(ds.name) + ' AUTOGROW_ALL_FILES;'
from [msdb].sys.data_spaces ds
INNER JOIN [msdb].sys.filegroups fg ON ds.data_space_id = fg.data_space_id
WHERE fg.is_autogrow_all_files = 0;发布于 2016-08-12 14:19:12
补充麦克斯和肯尼斯的答案。
我建议你申请服务器2016 CU1,因为有已知的错误AUTOGROW_ALL_FILES属性 -
该属性在数据库或服务器重新启动后不会保留。sys.filegroups视图仍然显示属性的对应列(is_autogrow_all_files和is_read_only)设置为1,但是它实际上并不有效。
另外,重要的是要注意,在Server 2016您不需要TF 1117中,因为is_autogrow_all_files等同于TF1117
发布于 2016-08-12 14:00:34
设置为每个文件组。你可以在sys.filegroups看看。
SELECT is_autogrow_all_files, * FROM sys.filegroupssys.filegroups bol:https://msdn.microsoft.com/en-us/library/ms187782.aspx
https://dba.stackexchange.com/questions/146628
复制相似问题