zoukankan      html  css  js  c++  java
  • [推荐] (SqlServer)分离所有用户数据库

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

     

  • 相关阅读:
    OpenCV用读取矩阵,访问图像数据
    OpenCV_Add方法
    OpenCV_颜色直方图的计算、显示、处理、对比及反向投影
    sift算法研究_无匹配
    OpenCV_轮廓例子
    OpenCV_用鼠标在窗口画方形
    【转】数字图像处理中的形态学
    OpenCV_ 滑动条模拟按钮
    OpenCV_轮廓的查找、表达、绘制、特性及匹配
    图像的膨胀与腐蚀、细化
  • 原文地址:https://www.cnblogs.com/huyong/p/2323552.html
Copyright © 2011-2022 走看看