gpt4 book ai didi

sql-server - SQL Server多次收缩操作

转载 作者:行者123 更新时间:2023-12-04 00:53:47 26 4
gpt4 key购买 nike

我正在尝试缩小SQL Server 2008 R2中的所有数据库(文件和日志)。

我已经完成了脚本,但是问题是当我遍历所有数据库并执行查询以执行shrink file前3或4个收缩工作时,它们却出现此错误:


信息0,级别11,状态0,行0
当前命令发生严重错误。结果(如果有)
应该丢弃。


剧本 :

declare @db_name as varchar(30)
declare @db_recorvery_model as varchar(30)
declare @db_files_name as varchar(250)
declare @db_files_physical_name as varchar(250)

declare get_files cursor for
select b.name, a.name
from sys.master_files as a,
sys.databases as b
where a.database_id = b.database_id
order by b.name

open get_files

fetch next from get_files into @db_files_name, @db_files_physical_name

set @db_files_name = (select @db_files_name)
set @db_files_physical_name = (select @db_files_physical_name)

DECLARE @Command as nvarchar(max)
set @Command=''

while(@@FETCH_STATUS=0)
BEGIN
if (@db_files_name='master' or @db_files_name='msdb' or @db_files_name='tempdb' or @db_files_name='model')
BEGIN
print 'Bases de dados do sql server: '+@db_files_name
END
ELSE
BEGIN
set @Command = 'USE ' + '[' + @db_files_name + '] DBCC SHRINKFILE ("'+@db_files_physical_name+'", 1 )'
EXEC sp_executesql @Command
print @Command
END

fetch next from get_files into @db_files_name, @db_files_physical_name

set @db_files_name = (select @db_files_name)
set @db_files_physical_name = (select @db_files_physical_name)
END

close get_files
deallocate get_files


有人有什么想法吗?

PS:我知道我不应该收缩,但是这是一个非常特殊的环境并且没有生产力。

最佳答案

您可以确定哪个数据库标记了错误吗?您是否可以尝试在有问题的单个数据库上运行脚本,并查看它是否始终是触发错误的同一数据库?也许这是您错过的特殊数据库,无法以这种方式进行缩减。

我有一个类似的环境,其中包含不用于长期存储的临时数据库,并且我使用了以下脚本,该脚本对于数百个数据库均适用

CREATE procedure [dbo].[ShrinkLog]
@DB varchar(200)
as

declare @LogFile varchar(200)
declare @Sql varchar(500)

SELECT @LogFile = name
FROM sys.master_files
where type_desc = 'LOG'
and db_name(database_id) = @DB


set @Sql = '
Use [' + @DB + ']
DBCC SHRINKFILE([' + @LogFile + '], 1)
'
print(@sql)
exec(@sql)


还请记住,除非您的服务器也具有足够的硬盘驱动器/内存空间,否则您不希望运行此命令。

最好的祝福,

关于sql-server - SQL Server多次收缩操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7405078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com