SQL Server 2000 基础(3)——连接
来源:互联网 发布:亚马逊和淘宝市值 编辑:程序博客网 时间:2024/06/06 05:07
一、如何断开用户连接
1.1、停掉SQL SERVER服务
此操作对整个SQL SERVER服务器都生效,有如下几种方法:
(1)SQL Server服务管理器;
(2)控制面板>>管理工具>>服务,或者,运行services.msc;
(3)命令提示行下的net stop mssqlserver /y命令,在SQL SERVER中可这样写:
(4)SQL语句:ShutDown,虽然也是最终停掉SQL SERVER服务,不过这个命令有一些参数可供选择(如:WITH NOWAIT),更加人性化一些,详见SQL SERVER BOL;
或者exec master..xp_cmdshell 'net stop mssqlserver /y'
1.2、设置单用户模式
SINGLE_USER 每次允许一个用户连接到数据库,所有其它用户连接均中断。
中断连接的时间段由 ALTER DATABASE 语句的WITH <termination>子句控制,如果省略了 termination 子句,那么将允许事务自主提交或回滚。
新的连接尝试将被拒绝。即使设置此选项的用户注销,数据库仍保持 SINGLE_USER 模式。这时,其他用户(但只能是一个)可以连接到数据库。
此操作只对当前数据库生效,语句如下:
alter database db_name set single_user
把用户模式设回数据库默认状态,语句如下:
alter database db_name set multi_user
错误方法:
脱机,因为当前有连接在线,而脱机是一个要求无连接的操作,
在企业管理器中给数据库脱机,出现如下错误:
错误5070:如果其他用户正在使用数据库“test”,则数据库状态不能更改
ALTE DATABASE语句失败。
sp_dboption命令失败。
在查询分析器中,在master运行alter database语句,出现如下错误:
ALTER DATABASE 语句失败。
有关数据库选项设置的细节,请见《SQL Server 2000 管理——选项设置》series。
1.3、KILL
此操作对整个SQL SERVER服务器都生效,但可以根据查看的SPID,有选择的KILL掉需要断开的连接,注意KILL是不能取消自己的进程的,如果需要自己也断开,退出连接即可。方法如下:
exec sp_who
--或者
exec sp_who2
--或者
select * from master..sysprocesses
--然后
kill 111 --假如要kill的连接SPID为111
1.4、物理方法
此操作对整个SQL SERVER服务器都生效。
比如:拨掉网线,禁用网卡,关掉所在网络的交换机等一切可以断开网络的方法都行。
二、SQL SERVER连接限制
(1)设置SQL SERVER的最大连接数,就是建立的连接数(connection)
企业管理器>服务器>属性>连接,0为默认设置(即不受限,32767);
或者
exec sp_configure N'user connections',0 —-需要重启服务生效
注意:这里的连接数是指不大于等于,即小于设置的值。
将连接最大数设为1,重启SQL SERVER,连接时提示“一般网络性错误,ConnectionOpen(PreLoginHandshake()),请验证SQL SERVER 是否在运行...”,这样就出现自己也连不上的情况,最大为1,也就是连接数只能是小于1的整数,那就是0个。解决方法如下:
1、停止sql服务
2、用单用户模式启动SQL SERVER
在命令行模式下输入sqlservr –c -f -m或者输入sqlservr -m
sqlservr.exe在SQL SERVER安装目录下,可以搜一下,我的是在如下路径:
C:/Program Files/Microsoft SQL Server/MSSQL.1/MSSQL/Binn
3、用osql登录重新配置:
osql /U"sa" /P"密码" /Q"exec sp_configure N'user connections', 0"
4、然后重新启动操作系统。
(2)设置SQL SERVER的最大线程数,连接或者其他SQL SERVER操作(比如select),都是以线程的形式在工作的(多线程)。
有关服务器选项设置的细节,请见《SQL Server 2000 管理——选项设置》series。
(3)假设SQL SERVER服务器只允许最多10个客户端联接,超过10个则不允许连接,如何控制?
这种情况只出现在两层的时候,三层是通过中间的一个或几个CONN来实现的,不能达到连接限制的,当然可以通过程序以计数的形式来控制,但不是通过SQL SERVER。
(4)查年SQL Server当前连接数
以下各种方法都无法准确地获取到SQL Server的当前ACTIVE连接数,不知道在SQL Server 2005中这样的情况有没有改善。
1、系统变量:
SQL Server提供了一些系统变量返回连接值,个人觉得,很容易产生误解。
@@CONNECTIONS 返回自上次启动SQL Server以来连接或试图连接的次数。
@@MAX_CONNECTIONS 返回SQL Server上允许的同时用户连接的最大数。返回的数不必为当前配置的数值。
2、系统存储过程
SP_WHO /SP_WHO2
提供关于当前SQL Server 用户和进程的信息。可以筛选返回的信息,如下:
列出所有活动的用户:SP_WHO 'active'
列出某个特定用户的信息:SP_WHO 'sa'
3、系统表
sysprocesses
sysprocesses 表中保存关于运行在SQL Server上的进程的信息。这些进程可以是客户端进程或系统进程。连接与进程是一以多的关系,而且这个系统表中的系统是个累计量,而不是最新的统计量。
sysperfinfo
包括一个SQL Server表示法的内部性能计数器,可通过 Windows NT 性能监视器显示。
同样,这里得到的信息也只是所有时间内的累计量。
- SQL Server 2000 基础(3)——连接
- JAVA基础应用——连接Sql server
- SQL Server 2000 基础(1)——安装
- SQL Server 2000 基础(2)——访问
- SQL Server 2000 基础(6)——系统函数
- SQL Server 2000 基础(7)——DBCC命令
- SQL Server 2000 基础——系统函数 (转帖)
- SQL Server调优系列基础篇(常用运算符总结——三种物理连接方式剖析)
- SQL Server调优系列基础篇(常用运算符总结——三种物理连接方式剖析)
- Java连接SQL Server 2000(转)
- 解决方案—SQL Server 远程连接失败
- SQL基础——内连接/外连接/交叉连接
- SQL Server 2000初识—管理工具与设计基础
- 配置服务器--连接失败 — Java连接SQL Server 2005
- SQL server语言基础(二)—— select 总结
- 管理SQL Server AlwaysOn(1)——基础维护
- SQL Server初探——数据库基础
- JSP连接SQL Server 2000
- 用C#获取当前的路径
- oracle 中取年月日
- [转]ASP.NET基础概念之事件
- 冬天真的来了
- 转个Dbus文章(有些不错的例子程式)
- SQL Server 2000 基础(3)——连接
- [转]ASP.NET基础概念之委托
- 管道重定向符“|”
- 享购网订单状态
- sybase ODBC配置
- [转]Gridview中数据操作技巧
- 用一个按钮把英文首字母全大写
- Tomcat之Context元素的配置介绍
- 重要的基础课程