[推荐] (SqlServer)分离所有用户数据库

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/7204980   [推荐](SqlServer)分离所有用户数据库——通过知识共享树立个人品牌。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/7204980
  

[推荐] (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( 11),
     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

 

 

© 2011  EricHu

原创作品,转贴请注明作者和出处,留此信息。

 

------------------------------------------------

cnBlobs:http://www.cnblogs.com/huyong/
CSDNhttp://blog.csdn.net/chinahuyong 

 

作者:EricHuDBC\SB\SWebServiceWCFPM等)
出处:http://www.cnblogs.com/huyong/

Q Q80368704   E-Mail: 80368704@qq.com
本博文欢迎大家浏览和转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,在『参考』的文章中,我会表明参考的文章来源,尊重他人版权。若您发现我侵犯了您的版权,请及时与我联系。
更多文章请看 [置顶]索引贴——(不断更新中)

相关文章
|
3月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
846 152
|
3月前
|
SQL 人工智能 Linux
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
435 5
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
|
3月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
4月前
|
SQL 人工智能 Linux
SQL Server 2025 RC0 发布 - 从本地到云端的 AI 就绪企业数据库
SQL Server 2025 RC0 发布 - 从本地到云端的 AI 就绪企业数据库
303 5
|
3月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
|
SQL 数据库
如何快速备份还原Sql Server 数据库
备份数据库 选择你要备份的数据库,鼠标右键单击,选择任务-备份   弹出备份数据库窗口,选择添加    弹出选择备份目标窗口,点击浏览,选择存放备份数据库的目录,输入文件名,后缀名输入.bak,点击确定,确定,备份完成     还原数据库  鼠标右键单击数据库,选择还原文件和文件   ...
1514 0
|
数据库 SQL 数据安全/隐私保护

热门文章

最新文章