SQL Server中强制关闭数据库连接

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
简介: 1.问题引入       在SQL Server中备份/还原/分离/脱机/删除指定数据库时, 如果有其他用户正在使用此数据库时, SQL Server为了防止数据异常, 会报错而终止你的操作.      当然, 在SQL 2005里, 在做[分离/删除]数据库时提供了一个选项[关闭所以连接]...

1.问题引入

      SQL Server中备份/还原/分离/脱机/删除指定数据库时, 如果有其他用户正在使用此数据库时, SQL Server为了防止数据异常, 会报错而终止你的操作.

 

   当然, 在SQL 2005里, 在做[分离/删除]数据库时提供了一个选项[关闭所以连接]供勾选(SQL 2000好像没有哦), 然而[备份/还原]操作却没有此选择, 也许你会说可以先[脱机数据库]再做[备份还原]操作, 对, 但你会发现[脱机]处理太慢了J, 那在SQL2005以及SQL 2000下有哪些方法可以解决此问题呢???

 

2.解决方法:

1. 拔掉此机器的网线. 呵呵, 这种方法立竿见影, 但是可能对其他的连接造成影响.

2. 通知连接至此数据库的用户断开连接. 如果可能连接的用户很多或不知道哪个用户正在连接的话就不可行了.

3. SQL Server中用命令StopLogin强行断开连接.详细说明如下:

使用说明:

StopLogin @Dname

其中@Dname为要强行断开连接的数据库名称, 如果您想断开数据库’DEMO’的所有连接,则只要在查询分析器中执行[StopLogin ’DEMO’]即可, 如果您要断开所有数据库的连接进行维护的话则只要执行[StopLogin ’’]即可.

 

下面用例子说明:

EX1. 使用StopLogin强行断开连接前后SQL的执行结果对比

首先, 我们执行如下SQL语句:

USE DEMO2

GO

SELECT TOP 1 * FROM INVMB

执行结果为:

查询已成功执行

 

 

下面我们来执行如下SQL语句:

StopLogin 'DEMO2'

 

执行结果为:

由于数据库'DEMO2' 离线,无法打开该数据库。

 

3. StopLogin详细代码(写的仓促, 若有bug请谅解)

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[StopLogin]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)

    DROP PROCEDURE [dbo].[StopLogin]

GO

 

CREATE PROCEDURE StopLogin

    @Dname varchar(50)

AS

DECLARE

    @name varchar(50),

    @s varchar(1000)

BEGIN

    IF (@Dname = '')

    BEGIN

       DECLARE DataName CURSOR FOR

       SELECT name FROM sysdatabases WHERE name not in ('master')

 

       OPEN DataName

 

       FETCH NEXT FROM DataName

       INTO @name

 

       WHILE (@@FETCH_STATUS = 0)

       BEGIN  

           DECLARE tb CURSOR local    

           FOR  

           SELECT N'kill   '+CAST(spid AS varchar)  

           FROM master..sysprocesses    

           WHERE dbid=db_id(@name)  

 

           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

                        

           FETCH NEXT FROM DataName

           INTO @name

       END

 

       CLOSE DataName

       DEALLOCATE DataName

    END

    ELSE

    BEGIN

       DECLARE tb CURSOR local    

       FOR  

       SELECT N'kill   '+CAST(spid AS varchar)  

       FROM master..sysprocesses    

       WHERE dbid=db_id(@Dname)  

 

       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

    END

END

目录
相关文章
|
17天前
|
SQL 机器学习/深度学习 人工智能
从“写SQL”到“聊数据”:NL2SQL如何用自然语言解锁数据库?
本文系统性地阐述了自然语言转SQL(NL2SQL) 技术如何让非技术背景的业务分析师实现数据自助查询,从而提升数据驱动决策的效率与准确性。
从“写SQL”到“聊数据”:NL2SQL如何用自然语言解锁数据库?
|
5月前
|
SQL 数据库 数据安全/隐私保护
数据库数据恢复——sql server数据库被加密的数据恢复案例
SQL server数据库数据故障: SQL server数据库被加密,无法使用。 数据库MDF、LDF、log日志文件名字被篡改。 数据库备份被加密,文件名字被篡改。
|
2月前
|
SQL 缓存 监控
SqlRest让SQL秒变Http API,还支持20+数据库(含国产数据库)
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
|
2月前
|
SQL 存储 数据库
SQL Server Management Studio (SSMS) 21 - 微软数据库管理工具
SQL Server Management Studio (SSMS) 21 - 微软数据库管理工具
401 0
|
2月前
|
SQL XML Java
配置Spring框架以连接SQL Server数据库
最后,需要集成Spring配置到应用中,这通常在 `main`方法或者Spring Boot的应用配置类中通过加载XML配置或使用注解来实现。
207 0
|
5月前
|
SQL 关系型数据库 MySQL
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL 数据库 SQL 语句调优方法详解(2-1)
本文深入介绍 MySQL 数据库 SQL 语句调优方法。涵盖分析查询执行计划,如使用 EXPLAIN 命令及理解关键指标;优化查询语句结构,包括避免子查询、减少函数使用、合理用索引列及避免 “OR”。还介绍了索引类型知识,如 B 树索引、哈希索引等。结合与 MySQL 数据库课程设计相关文章,强调 SQL 语句调优重要性。为提升数据库性能提供实用方法,适合数据库管理员和开发人员。
|
6月前
|
SQL 数据库连接 Linux
数据库编程:在PHP环境下使用SQL Server的方法。
看看你吧,就像一个调皮的小丑鱼在一片广阔的数据库海洋中游弋,一路上吞下大小数据如同海中的珍珠。不管有多少难关,只要记住这个流程,剩下的就只是探索未知的乐趣,沉浸在这个充满挑战的数据库海洋中。
133 16
|
6月前
|
SQL 关系型数据库 MySQL
如何优化SQL查询以提高数据库性能?
这篇文章以生动的比喻介绍了优化SQL查询的重要性及方法。它首先将未优化的SQL查询比作在自助餐厅贪多嚼不烂的行为,强调了只获取必要数据的必要性。接着,文章详细讲解了四种优化策略:**精简选择**(避免使用`SELECT *`)、**专业筛选**(利用`WHERE`缩小范围)、**高效联接**(索引和限制数据量)以及**使用索引**(加速搜索)。此外,还探讨了如何避免N+1查询问题、使用分页限制结果、理解执行计划以及定期维护数据库健康。通过这些技巧,可以显著提升数据库性能,让查询更高效流畅。
|
7月前
|
SQL 数据库
数据库数据恢复—SQL Server报错“错误 823”的数据恢复案例
SQL Server数据库附加数据库过程中比较常见的报错是“错误 823”,附加数据库失败。 如果数据库有备份则只需还原备份即可。但是如果没有备份,备份时间太久,或者其他原因导致备份不可用,那么就需要通过专业手段对数据库进行数据恢复。
|
7月前
|
SQL 存储 关系型数据库
【SQL技术】不同数据库引擎 SQL 优化方案剖析
不同数据库系统(MySQL、PostgreSQL、Doris、Hive)的SQL优化策略。存储引擎特点、SQL执行流程及常见操作(如条件查询、排序、聚合函数)的优化方法。针对各数据库,索引使用、分区裁剪、谓词下推等技术,并提供了具体的SQL示例。通用的SQL调优技巧,如避免使用`COUNT(DISTINCT)`、减少小文件问题、慎重使用`SELECT *`等。通过合理选择和应用这些优化策略,可以显著提升数据库查询性能和系统稳定性。
231 9