• Sql server 使用drop database 语句,无法删除正在使用的数据库的解决办法


    使用DROP DATABASE 删除数据库  显示“无法删除数据库 ,因为该数据库当前正在使用。

    解决办法:在删除某一个数据库(下例中的“DB1”数据库)前,强制kill掉该数据库上的所有数据库连接。

    无法删除数据库 "#Test",因为该数据库当前正在使用
    
    --查询分析器中执行下面的语句就行了. 
    
    use master 
    go 
    
    declare @dbname sysname 
    set @dbname='DB1' --这个是要删除的数据库库名 
    
    declare @s nvarchar(1000) 
    declare tb cursor local for 
    select s='kill '+cast(spid as varchar) 
    from master..sysprocesses 
    where dbid=db_id(@dbname) 
    
    open tb 
    fetch next from tb into @s 
    while @@fetch_status=0 
    begin 
    exec(@s) 
    fetch next from tb into @s 
    end 
    close tb 
    deallocate tb 
    exec('drop database ['+@dbname+']')  

    如果不想用游标,也可以用循环,如下所示:

    CREATE PROCEDURE [dbo].[SP_DropDatabase]
        @databaseName nvarchar(100)
    AS
    BEGIN
        DECLARE @spid INT=NULL
    
        SELECT @SPID=spid FROM master..sysprocesses WHERE dbid=DB_ID(@databaseName) 
    
        WHILE @spid IS NOT NULL
        BEGIN
            DECLARE @killScript NVARCHAR(200)=N'KILL '+CAST(@spid AS NVARCHAR(50))
    
            EXEC sp_executesql @killScript
    
            SET @spid=NULL
            SELECT @SPID=spid FROM master..sysprocesses WHERE dbid=DB_ID(@databaseName)
        END
    
        DELETE FROM [dbo].[T_ClientScriptDetails] WHERE ClientName=@databaseName
        DELETE FROM [dbo].[T_ClientScripts] WHERE ClientName=@databaseName
    
        DECLARE @dropScript NVARCHAR(200)=N'DROP DATABASE ['+@databaseName+N']'
        EXEC sp_executesql @dropScript
    
    END
  • 相关阅读:
    只允许在input框输入文字,不能输入数字和其他字符
    阻止用户在input框输入数字
    centos 7.2安装和配置MongoDB
    Python基础
    Python小练习008
    Python小练习007
    Python小练习006
    Python错误集锦
    Python和MongoDB
    MongoDB笔记
  • 原文地址:https://www.cnblogs.com/OpenCoder/p/8716299.html
Copyright © 2020-2023  润新知