首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

在Sql Server 2005中,怎么使用sql语句分离系统数据库以外的数据库

2012-04-07 
在Sql Server 2005中,如何使用sql语句分离系统数据库以外的数据库?如题,跪求解。最近公司在做数据库迁移工

在Sql Server 2005中,如何使用sql语句分离系统数据库以外的数据库?
如题,跪求解。
最近公司在做数据库迁移工作,有一台服务器上的有很多的数据库都需要迁移,我想写成sql脚本批量先去分离,如下:?
EXEC sp_msforeachdb N'?
IF N''?'' IN(N''master'', N''model'', N''msdb'', N''tempdb'')
return
ALTER DATABASE [?] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
EXEC master.dbo.sp_detach_db @dbname = N''?'', @keepfulltextindexfile=N''true''
'
虽说可以分离,但总是提示:
消息 5058,级别 16,状态 5,第 4 行
在数据库 'master' 中无法设置选项 'SINGLE_USER'。
消息 5058,级别 16,状态 4,第 4 行
在数据库 'tempdb' 中无法设置选项 'SINGLE_USER'。
这是为什么?

[解决办法]
--sql 2005

use master

declare @dbname as varchar(50)
while exists(select 1 from sys.databases where name not in ('master' ...那几个系统库和示例库,自己写完))
begin
? set @dbname = (select top 1 name from sys.databases where name not in ('master' ...那几个系统库和示例库,自己写完))
? exec master.dbo.sp_detach_db @dbname, 'false' ?
end

热点排行