超过 6 个月的 SQL Server DETACH 数据库
Posted
技术标签:
【中文标题】超过 6 个月的 SQL Server DETACH 数据库【英文标题】:SQL Server DETACH databases older than 6 months 【发布时间】:2013-01-09 11:17:07 【问题描述】:我可以像这样检索超过 6 个月前创建的数据库列表:-
-- all databases over 6 months old
select name, crdate
from sys.sysdatabases
where crdate <= DATEADD(month, -6, GETDATE())
AND name not in ('master','model','msdb','tempdb','distribution')
给出如下结果:-
name crdate
db1 2008-06-25 09:01:11.747
db2 2008-06-25 09:01:50.967
我可以像这样分离数据库:-
-- detach database
EXEC master.dbo.sp_detach_db @dbname = N'db1',
@keepfulltextindexfile = N'true'
我需要为第一个查询返回的每个数据库运行sp_detach_db
。
最好的方法是什么?
【问题讨论】:
【参考方案1】:您可以为任务使用光标:
declare cur cursor for
select name
from sys.sysdatabases
where crdate <= DATEADD(month, -6, GETDATE())
and name not in ('master','model','msdb','tempdb','distribution')
declare @name nvarchar(200)
open cur
fetch next from cur into @name
while @@FETCH_STATUS = 0
begin
EXEC master.dbo.sp_detach_db @dbname = @name, @keepfulltextindexfile = N'true'
fetch next from cur into @name
end
close cur
deallocate cur
【讨论】:
以上是关于超过 6 个月的 SQL Server DETACH 数据库的主要内容,如果未能解决你的问题,请参考以下文章