[推薦] (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.rzrgm.cn/huyong/
Email:
406590790@qq.com
QQ:
406590790
微信:
13005007127(同手機號)
框架官網:
http://www.guosisoft.com/
http://www.rdiframework.net/
框架其他博客:
http://blog.csdn.net/chinahuyong
http://www.rzrgm.cn/huyong
國思RDIF開發框架
,
給用戶和開發者最佳的.Net框架平臺方案,為企業快速構建跨平臺、企業級的應用提供強大支持。
關于作者:系統架構師、信息系統項目管理師、DBA。專注于微軟平臺項目架構、管理和企業解決方案,多年項目開發與管理經驗,曾多次組織并開發多個大型項目,在面向對象、面向服務以及數據庫領域有一定的造詣。現主要從事基于
RDIF
框架的技術開發、咨詢工作,主要服務于金融、醫療衛生、鐵路、電信、物流、物聯網、制造、零售等行業。
如有問題或建議,請多多賜教!
本文版權歸作者和CNBLOGS博客共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,如有問題,可以通過微信、郵箱、QQ等聯系我,非常感謝。

在實際應用中,有時我們需要一次性分離所有用戶數據庫,下面給出代碼,供大家參考。
浙公網安備 33010602011771號