zoukankan      html  css  js  c++  java
  • 快速断开当前数据库的所有连接的方法

    快速断开当前数据库的所有连接的方法

    以前我喜欢执行这个脚本,然后当要断开所有连接的时候就执行一下这个脚本,但是当我重装SQLSERVER的时候,又要在代码库里

    找到这个脚本执行觉得很不方便,实际上分离数据库也能够断开所有连接

     1 USE master
     2 GO
     3 SET ANSI_NULLS ON
     4 SET QUOTED_IDENTIFIER ON
     5 go
     6 
     7 ALTER PROC [dbo].[Sp_KillAllProcessInDB] @DbName VARCHAR(100)
     8 AS 
     9     IF DB_ID(@DbName) = NULL 
    10         BEGIN
    11             PRINT 'DataBase dose not Exist'
    12         END
    13     ELSE 
    14         BEGIN
    15             DECLARE @killspId VARCHAR(30)
    16             DECLARE TmpCursor CURSOR
    17             FOR
    18                 SELECT  'Kill ' + CONVERT(VARCHAR, spid) AS spId
    19                 FROM    master..SysProcesses
    20                 WHERE   DB_NAME(dbid) = @DbName
    21                         AND spid <> @@spid      --终止不是当前进程的进程(不等于当前进程)
    22                         AND dbid <> 0           --数据库ID不是0
    23             OPEN TmpCursor
    24             FETCH NEXT FROM TmpCursor
    25 
    26 INTO @killspId      --select into  @killspId
    27             WHILE @@FETCH_STATUS = 0 
    28                 BEGIN
    29                     EXEC (@killspId)
    30                     FETCH NEXT FROM TmpCursor
    31 INTO @killspId
    32 
    33                 END
    34 
    35             CLOSE TmpCursor
    36             DEALLOCATE TmpCursor
    37         END
    38        
    39        
    40 --exec Sp_KillAllProcessInDB '要访问的数据库'

    但是今晚我发现其实分离数据库更快,不过唯一不方便的地方是,分离数据库之后,你需要重新附加数据库

    点击“确定”就OK了,所有连接都断开

    不过,当数据库中的数据文件或者事务日志文件比较多的时候,不像我这样,只有一个数据文件和一个事务日志文件

    附加的时候就要写sql语句指定数据文件和日志文件的位置了

     1 --语法
     2 EXEC [sys].[sp_attach_db] @dbname = NULL, -- sysname
     3     @filename1 = N'', -- nvarchar(260)
     4     @filename2 = N'', -- nvarchar(260)
     5     @filename3 = N'', -- nvarchar(260)
     6     @filename4 = N'', -- nvarchar(260)
     7     @filename5 = N'', -- nvarchar(260)
     8     @filename6 = N'', -- nvarchar(260)
     9     @filename7 = N'', -- nvarchar(260)
    10     @filename8 = N'', -- nvarchar(260)
    11     @filename9 = N'', -- nvarchar(260)
    12     @filename10 = N'', -- nvarchar(260)
    13     @filename11 = N'', -- nvarchar(260)
    14     @filename12 = N'', -- nvarchar(260)
    15     @filename13 = N'', -- nvarchar(260)
    16     @filename14 = N'', -- nvarchar(260)
    17     @filename15 = N'', -- nvarchar(260)
    18     @filename16 = N'' -- nvarchar(260)
     1 --指定文件的位置
     2  EXEC [sys].[sp_attach_db] @dbname = DLGPOS, -- sysname
     3      @filename1 = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\DLGPOS.mdf', -- nvarchar(260)
     4      @filename2 = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\DLGPOS_1.ldf' -- nvarchar(260)
     5 
     6  ----------------------------------------------
     7  --或者如果数据文件和日志文件超过16个,建议使用下面这个语句
     8  CREATE DATABASE DLGPOS FOR ATTACH 
     9  on --数据文件   
    10  (   
    11    name = '', --数据文件逻辑名   
    12    filename = '',--数据文件存放路径   
    13    size = 1MB,--初始大小   
    14    maxsize = 10MB,--最大大小   
    15    filegrowth = 1MB--增长速度   
    16  )   
    17  log on --日志文件   
    18  (   
    19    name = '', --日志文件逻辑名   
    20    filename = '',--日志文件存放路径   
    21    size = 1MB,--初始大小   
    22    maxsize = 10MB,--最大大小   
    23    filegrowth = 1MB--增长速度   
    24  )

    -----------------------------------------华丽的分割线-----------------------------------------
    看来用GUI还不能解决问题,最后还是使用博客园里潇湘隐者的方法

    1 USE master
    2 GO
    3 ALTER DATABASE [GPOSDB] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
    4 GO
    5 --查看是否还有用户连接
    6 SELECT * FROM sys.[sysprocesses] WHERE DB_NAME([dbid])='gposdb'
    7 GO
    8 ALTER DATABASE [GPOSDB] SET MULTI_USER 
    9 GO

    虽然都是利用SQL语句,但是他的方法很简单,4句话就可以断开数据库所有连接了!!

    再次感谢潇湘隐者大侠提供的方法!!

      如果大家有什么需要补充的,或者文章有不正确的,欢迎大家拍砖!!

  • 相关阅读:
    Composite in Javascript
    Model Validation in Asp.net MVC
    HttpRuntime.Cache vs. HttpContext.Current.Cache
    Controller Extensibility in ASP.NET MVC
    The Decorator Pattern in Javascript
    The Flyweight Pattern in Javascript
    Model Binding in ASP.NET MVC
    Asp.net MVC
    jQuery Ajax 实例 全解析
    ASP.NET AJAX入门系列
  • 原文地址:https://www.cnblogs.com/lyhabc/p/3131403.html
Copyright © 2011-2022 走看看