1。SQL2005中可以右键点击数据库名字/任务/脱机即可。
2。
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[killspid]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_killspid]
GO
use master
go
create proc killspid (@dbname varchar(20))
as
begin
declare @sql nvarchar(500),@temp varchar(1000)
declare @spid int
set @sql='declare getspid cursor for
select spid from sysprocesses where dbid=db_id('''+@dbname+''')'
exec (@sql)
open getspid
fetch next from getspid into @spid
while @@fetch_status < >-1
begin
set @temp='kill '+rtrim(@spid)
exec(@temp)
fetch next from getspid into @spid
end
close getspid
deallocate getspid
end
--用法
use master
exec killspid '数据库名'
3。
--没必要停掉整个 sql server
use master
--ALTER DATABASE test set online
declare @ varchar(200)
set @ = ''
select @ = @ +' kill '+ cast(spid as varchar)
from master..sysprocesses
where dbid=db_id('Test')
exec(@)
ALTER DATABASE test set offline
4。SHUTDOWN
立即停止 Microsoft® SQL Server™。
语法
SHUTDOWN [ WITH NOWAIT ]
参数
WITH NOWAIT
立即关闭 SQL Server 而不在每个数据库内执行检查点。在尝试终止所有用户进程后退出 SQL Server,并对每个活动事务执行回滚操作。
注释
除非 sysadmin 固定服务器角色成员指定 WITH NOWAIT 选项,否则 SHUTDOWN 尝试关闭 SQL Server 时的顺序方式为:
禁用登录(sysadmin 固定服务器角色成员除外)。若要查看所有当前用户的列表,请执行 sp_who。
等待当前正在执行的 Transact-SQL 语句或存储过程执行完毕。若要查看所有活动进程和锁的列表,请执行 sp_lock 和 sp_who。
在每个数据库内执行检查点。
当 sysadmin 固定服务器角色成员重新启动 SQL Server 时,使用 SHUTDOWN 语句可以将需要做的自动恢复工作减到最小。
还可以使用下面这些工具和方法停止 SQL Server。每个工具或方法都在所有数据库内执行检查点。从数据高速缓存中刷新所有提交的数据后,通过下列工具和方法停止服务器:
使用 SQL Server 企业管理器。
在命令提示符下使用 net stop mssqlserver。
使用"控制面板"中的"服务"应用程序。
使用 SQL Server 服务管理器。
如果是从命令提示符下启动的 sqlservr.exe,按 CTRL+C 键可关闭 SQL Server。然而,按 CTRL+C 键将不执行检查点。
说明 通过 Server 企业管理器、net stop、控制面板和 SQL Server 服务管理器停止 SQL Server 的方法所生成的服务控制消息与使用 SERVICE_CONTROL_STOP 停止 SQL Server 所生成的相同。
权限
SHUTDOWN 权限默认授予 sysadmin 和 serveradmin 固定服务器角色的成员且不可转让。
5。
--中断除了自己外的连接。
declare @sql varchar(100)
while 1=1
begin
select top 1 @sql = 'kill '+cast(spid as varchar(3))
from master..sysprocesses
where spid > 50 and spid <> @@spid
if @@rowcount = 0
break
exec(@sql)
end
备注:以上均未经过测试.