1.问题引入
在SQL Server中备份/还原/分离/脱机/删除指定数据库时, 如果有其他用户正在使用此数据库时, SQL Server为了防止数据异常, 会报错而终止你的操作.
当然, 在SQL 2005/2008里, 在做[分离/删除]数据库时提供了一个选项[关闭所以连接]供勾选(SQL 2000好像没有哦), 然而[备份/还原]操作却没有此选择, 也许你会说可以先[脱机数据库]再做[备份还原]操作, 对, 但你会发现[脱机]处理太慢了J, 那在SQL2005以及SQL 2008下有哪些方法可以解决此问题呢???
2。解决办法
在这里我只介绍一种使用自己写的存储过程来解决的方案
存储过程代码如下所示:
--关闭用户打开的进程处理
USE master
go
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[p_killspid]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
DROP PROCEDURE [dbo].[p_killspid]
go
create proc p_killspid
@dbname varchar(200) --要关闭进程的数据库名
as
declare @programName nvarchar(200),
@spid nvarchar(20)
declare cDblogin cursor for
select cast(spid as varchar(20)) AS spid from master..sysprocesses where dbid=db_id(@dbname)
open cDblogin
fetch next from cDblogin into @spid
while @@fetch_status=0
begin
--防止自己终止自己的进程
--否则会报错不能用KILL 来终止您自己的进程。
IF @spid <> @@SPID
exec( 'kill '+@spid)
fetch next from cDblogin into @spid
end
close cDblogin
deallocate cDblogin
go
--用法
exec p_killspid 'fdoam'
参考文章:
http://msdn.microsoft.com/zh-cn/library/ms179881.aspx
分享到:
相关推荐
通常情况睛,SQLServer2000正在使用的数据库(有数据库连接),是不能删除或被恢复的,可以将数据库设置为单用户模式,即可删除: ALTER DATABASE IpaddrDB SET SINGLE_USER with ROLLBACK IMMEDIATE GO DROP...
Navicat Premium 连接 SQL Server 数据库遇到问题及解决方法 Navicat Premium 是一个功能强大且功能丰富的数据库管理工具,支持多种数据库管理系统,包括 SQL Server、MySQL、Oracle 等。但是在使用 Navicat ...
当SQLSERVER数据库驱动程序遇到无法通过安全套接字层(SSL)加密与SQL Server建立安全连接的问题时,通常涉及到证书配置、驱动版本兼容性、Java安全策略或者缺少必要的库文件等问题。以下是一些解决此类问题的知识点...
1. 在SQL Server Management Studio中打开目标数据库,从右键菜单中选择“所有任务 -> 备份数据库”。 2. 选择“完全备份”模式,然后在“备份到”列表框中删除现有内容并添加新的备份目的地。 3. 在弹出的“选择...
总结来说,在Microsoft SQL Server中优化星形连接查询,不仅需要数据库管理员对SQL Server的内部工作机制有深入的理解,还需要灵活运用各种技术手段,如索引优化、查询计划调整、内存管理等,来实现数据性能的最大化...
在SQL Server中,数据库的还原是一项关键操作,特别是在你需要恢复数据、迁移数据库或者从备份文件中重建数据库的情况下。以下是一个详细的步骤指南,教你如何在SQL Server中还原一个不存在的数据库。 首先,假设你...
通过上述步骤,您可以成功地在MyEclipse中连接至SQL Server 2008 R2。在整个过程中可能会遇到各种问题,比如连接失败、驱动无法识别等,此时需要仔细检查每个步骤是否正确执行,并确保所有配置信息无误。如果仍然...
在SQL Server中,数据库的备份和恢复是至关重要的任务,确保数据的安全性和可恢复性。以下四个关键知识点将深入探讨这一主题: 1. 获取SQL Server服务器上的默认目录: SQL Server提供了一个内置函数`dbo.f_...
在日常工作中,经常需要处理不同格式的数据文件,例如将Excel表格中的数据导入到SQL Server数据库中。本文将详细介绍如何使用SQL语句实现这一操作。 #### 一、环境配置与准备工作 1. **安装必要的驱动程序**: - ...
创建数据源是为了方便后续在 Java 程序中连接数据库。 **步骤1:** 在控制面板 -> 管理工具 -> 数据源 (ODBC) 中,选择“系统 DSN”选项卡。 **步骤2:** 点击“添加”,选择 SQL Server 驱动程序。 **步骤3:** ...
SQL Server 是一款高性能的关系型数据库管理系统,在处理大量数据时能够实现高效的查询响应时间。为了提高性能,SQL Server 会尽可能地利用系统可用内存来进行数据缓存。这种内存管理策略虽然有助于提升查询效率,但...
在SQL Server中,当需要对一个数据库进行删除(DROP DATABASE)操作时,如果该数据库还有活动的连接或会话,SQL Server将不允许执行这个操作,因为这可能导致数据丢失或者破坏正在进行的事务。为了确保建库脚本能够...
从 SQL Server 备份文件导入现存数据库需要通过创建临时数据库,恢复备份文件,并将数据导入到目标数据库中。这个过程需要谨慎执行,以免出现数据丢失或损坏的情况。 知识点: * 如何从 SQL Server 备份文件导入...
本文将深入解析如何在SQL Server 2005中更改数据库的登录用户名与调整访问权限,以提升数据库的安全性和管理效率。 ### SQL Server 2005中的登录用户与权限管理 #### 1. **创建新的登录名以增强安全性** 默认情况...
- 在“分离数据库”对话框中,勾选“删除连接”选项,这将强制断开所有对数据库的连接。 - 点击“确定”,系统会开始分离数据库。分离完成后,数据库将不再出现在服务器的数据库列表中,但其数据文件和日志文件仍...
在SQL Server 2005中,通过DDL触发器和DML触发器,可以实现对数据完整性和业务规则的强制。学习如何创建、修改和删除触发器,以及如何避免触发器滥用导致的性能问题至关重要。 3. **权限管理**: 权限管理是SQL ...
在SQL Server中,可以使用CREATE TABLE语句来创建数据库表,定义字段名、数据类型和约束条件。ALTER TABLE语句用于修改已有表的结构,而DROP TABLE则用于删除不再需要的表。表间关系可通过FOREIGN KEY约束实现。 四...
SQL Server 2005是微软公司推出的一款关系型数据库管理系统,它在IT行业中广泛应用于数据存储、数据处理和数据分析。本资料旨在帮助学习者深入理解SQL Server 2005的基础概念、功能特性以及实际操作技巧,以提升在...
SQL Server 中存储过程比直接运行 SQL 语句慢的原因 在 SQL Server 中,存储过程比直接运行 SQL 语句慢的原因是 Parameter sniffing 问题。Parameter sniffing 是指 SQL Server 在执行存储过程时,使用参数的统计...