[推荐] (sqlServer)分离所有用户数据库
——通过知识共享树立个人品牌。
在实际应用中,有时我们需要一次性分离所有用户数据库,下面给出代码,供大家参考。
USE [ master ]
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 ',
' 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
© 2011 EricHu
原创作品,转贴请注明作者和出处,留此信息。
------------------------------------------------
cnBlobs:http://www.cnblogs.com/huyong/
CSDN:http://blog.csdn.net/chinahuyong
作者:EricHu(DB、C\S、B\S、WebService、WCF、PM等)
出处:http://www.cnblogs.com/huyong/
Q Q:80368704 E-Mail: [email protected]
本博文欢迎大家浏览和转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,在『参考』的文章中,我会表明参考的文章来源,尊重他人版权。若您发现我侵犯了您的版权,请及时与我联系。
更多文章请看 [置顶]索引贴——(不断更新中)
以上是内存溢出为你收集整理的[推荐] (SqlServer)分离所有用户数据库全部内容,希望文章能够帮你解决[推荐] (SqlServer)分离所有用户数据库所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)