最近看了几天的Sql Server 2005 的联机帮助丛书,收获还是比较大,新的sqlcmd取代了Sql Server 2000的osql,以前一直没有注意能通过osql来列出本地网内的Sql Server 服务器列表。使用参数有两种显示方式。
<1>sqlcmd -L
C:/Documents and Settings/Administrator>sqlcmd -L
服务器:
DATA11
DFC12
H2DATA
SYC/NBJG
SYC/SQLEXPRESS
ZHHAIF
ZHENGZUO
C:/Documents and Settings/Administrator>
<2> sqlcmd –Lc
C:/Documents and Settings/Administrator>sqlcmd -Lc
DATA11
DFC12
H2DATA
SYC/NBJG
SYC/SQLEXPRESS
ZHHAIF
ZHENGZUO
C:/Documents and Settings/Administrator>
比较两种方式,可以看出带-Lc参数列出的服务器列表更适合与进行代码分析。通过代码获取列表可以参考我以前写的
文章。
一下内容是联机丛书对该命令项的描述,也是我们使用过程中需要引起注意的:
-L [ c ]
列出在本地配置的服务器和在网络上广播的服务器的名称。此参数不能与其他参数结合使用。可以列出的服务器的最大数目是 3000。如果服务器列表由于缓冲区大小而被截断,则会显示错误消息。
由于网络广播的本质,sqlcmd 可能无法及时接收到所有服务器的响应,因此,每次调用此选项时,返回的服务器列表可能会有所不同。
如果指定可选参数 c,则输出不会显示 Servers: 标题行,且列出的每个服务器行都没有前导空格。这称为清除输出。清除输出可以提高脚本语言的处理性能。
CMD快速启动和停止sql服务
启动sql服务 net start mssqlserver
停止sql服务 net stop mssqlserver
制作一个bat文件方便自己快速停止和启动
@echo off
for /f "skip=3 tokens=4" %%i in (\'sc query MSSQLSERVER\') do set "zt=%%i" &goto :next
:next
if /i "%zt%"=="RUNNING" (
echo 已经发现该服务在运行,开始停止
net stop MSSQLSERVER
echo sc config MSSQLSERVER start = DISABLED 禁用服务
) else (
echo 该服务现在处理停止状态,开始启动
echo sc config MSSQLSERVER start = Manual 设置服务手动
net start MSSQLSERVER
)
pause
要说明的几点:
1、把以上的代码拷到记事本中,把后缀名改为bat。
2、\'sc query MSSQLSERVER\' 这句中的MSSQLSERVER,是你的SQL的服务的名字,

看图.如果你不确定你的sql的服务名,你还可以做这样的一个测试,打开cmd,用命令:net stop MSQQLSERVER,如果能正常关闭sql的话,就说明你的服务名字是MSSQLSERVER。