[推荐] (SqlServer)分离所有用户数据库
[推荐](SqlServer)分离所有用户数据库
——通过知识共享树立个人品牌。
在实际应用中,有时我们需要一次性分离所有用户数据库,下面给出代码,供大家参考。
GO
IF EXISTS ( SELECT *
FROM sys.objects
WHERE [object_id] = OBJECT_ID(N'[dbo].[spDetachAllUserDatabases]')
AND type IN ( N'P', N'PC' ) )
DROP PROCEDURE [dbo].[spDetachAllUserDatabases]
GO
CREATE PROCEDURE [dbo].[spDetachAllUserDatabases]
AS
BEGIN
--Declare Variables
DECLARE @DatabaseName VARCHAR(100)
DECLARE @MinDatabaseID INT
DECLARE @MaxDatabaseID INT
DECLARE @SQL VARCHAR(4000)
--Check for temporary table and drop it if it exists
IF OBJECT_ID('tempDB.dbo.#Database') IS NOT NULL
DROP TABLE [#Database];
--Create temporary table
CREATE TABLE #Database
(
ID INT IDENTITY(1, 1),
DatabaseName VARCHAR(100)
)
--Check for existing user databases
IF EXISTS ( SELECT name
FROM sys.databases
WHERE database_id > 4
AND name NOT IN ( 'SQLDBA', 'ReportServer',
'ReportServerTempDB',
'distribution' ) )
BEGIN
--Insert all database names into a temporary table
INSERT INTO #Database ( DatabaseName )
SELECT name
FROM sys.databases
WHERE database_id > 4
AND name NOT IN ( 'SQLDBA', 'ReportServer',
'ReportServerTempDB',
'distribution' )
--Set Variables for the detach database loop
SELECT @MinDatabaseID = MIN(ID),
@MaxDatabaseID = MAX(ID)
FROM #Database
--Begin loop to detach databases
WHILE @MinDatabaseID <= @MaxDatabaseID
BEGIN
--Get DatabaseName
SELECT @DatabaseName = DatabaseName
FROM #Database
WHERE ID = @MinDatabaseID
--Build Detach Database Command
SET @SQL = 'EXEC sp_detach_db ' + '''' + @DatabaseName
+ '''' + ';'
--Try Catch block to execute SQL and handle errors
BEGIN TRY
--Detach Database
EXEC ( @SQL
)
PRINT 'Detached ' + @DatabaseName
END TRY
BEGIN CATCH
SELECT @DatabaseName,
message_id,
severity,
[text],
@SQL
FROM sys.messages
WHERE message_id = @@ERROR
AND language_id = 1033 --British English
END CATCH
--Get the next DatabaseName ID
SET @MinDatabaseID = @MinDatabaseID + 1
--End Loop
END
END
END
GO
作者:
RDIF
出处:
http://www.cnblogs.com/huyong/
Email:
406590790@qq.com
QQ:
406590790
微信:
13005007127(同手机号)
框架官网:
http://www.guosisoft.com/
http://www.rdiframework.net/
框架其他博客:
http://blog.csdn.net/chinahuyong
http://www.cnblogs.com/huyong
国思RDIF开发框架
,
给用户和开发者最佳的.Net框架平台方案,为企业快速构建跨平台、企业级的应用提供强大支持。
关于作者:系统架构师、信息系统项目管理师、DBA。专注于微软平台项目架构、管理和企业解决方案,多年项目开发与管理经验,曾多次组织并开发多个大型项目,在面向对象、面向服务以及数据库领域有一定的造诣。现主要从事基于
RDIF
框架的技术开发、咨询工作,主要服务于金融、医疗卫生、铁路、电信、物流、物联网、制造、零售等行业。
如有问题或建议,请多多赐教!
本文版权归作者和CNBLOGS博客共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过微信、邮箱、QQ等联系我,非常感谢。