sql 2005 SqlCmd 连接参数
sqlcmd 通过 OLE DB 数据访问界面与 SQL Server 数据引擎沟通,可以让用户互动地执
行 SQL 语法,或是指定 T-SQL 脚本文件交互执行,可以周期性在后台批处理地执行,一些
日常营运维护的工作将会需要此种方式完成。想要利用 SQL Server 2005 保留的“专用管
理连接线(Dedicated Administrator Connection DAC)接到 SQL Server 时,也一定要通过
SqlCmd.exe 命令行工具程序。
点击:开始-程序-sql 2005-配置工具-Notification Services 命令提示。
输入sqlcmd /?回车,会显示出sqlcmd的使用参数。下面分别介绍各种参数:
1、A 利用SQL Server 2005为管理者保留的“专用管理员连接(DAC) ”来登录。
在Notification Services 命令提示(以后简称命令提示符)下输入sqlcmd -A,出现提示符1〉
我们可以在此输入T-sql语句。
我们看看-A参数的作用。
首先在SQL Server Management Studio执行下面脚本
use AdventureWorks
select * from sys.sysfiles1
我们得出消息:
消息 208,级别 16,状态 1,第 1 行
对象名 'sys.sysfiles1' 无效。
sql2005 隐藏了系统表,我们没有办法察看。
我们在名利提示符中执行以下,必须以-A连接
1〉use AdventureWorks
2〉select * from sys.sysfiles1
3〉回车
执行结果:
status fileid name filename
2 1 AdventureWorks_DataC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdf
66 2 AdventureWorks_LogC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_Log.ldf
(2 行受影响)
在先前的版本若 SQL Server 实例的资源用尽,管理员无法利用任何方式创建新的连接以
进入 SQL Server 实例做补救的操作,例如,杀掉一些耗资源的连接工作。在这一版可以通过
SqlCmd 使用 SQL Server 2005 保留的“专用管理员连接” ,完成一些补救或清除的工作。
2、d 数据库名 使用SQL Server信任的Windows账号来登录,不需要设置用户账号/密码,默认采用此选项。
例如:sqlcmd -dmaster
3、E 使用 SQL Server 信任的 Windows 账号登录, 默认采用此选项。
例如:sqlcmd -e
4、i 输入文件名[, 文件名2...] 设置包含SQL 表达式的纯文本文件,通过 SqlCmd 执行。可以同时指定多 个文件,文件名称之间不能有空格。SqlCmd 会依照顺序来读取和处理,并在执行前先检查指定的文件是否全部存在。如果有一个以上文件不存在,sqlcmd 会结束操作。
例如:在d盘建立b.sql 然后输入
use AdventureWorks
select top 1 * from sys.sysobjects
保存后到命令提示符中输入如下命令:
sqlcmd -id:\b.sql
执行结果返回sys.sysobjects第一条记录。
5、O输出文件名 接收 sqlcmd 输出的文件。如果有指定文件 u参数,输出文件会以 Unicode
格式存储。若文件名称包含空格,必须用引号括住。如果定义了无效的文件名称,则会产生错误信息并退出执行。
例如:首先在d盘建立a.txt文件,也支持.xls.word没有测试。
在名利提示符中输入如下命令:
c:\Program Files\Microsoft SQL Server\90\NotificationServices\9.0.242\Bin>sqlcmd -od:\a.txt
1> use master
2> select top 1 * from sys.sysobjects
3> go
1> use model
2> select top 1 * from sys.sysobjects
3> go
我们打开a.txt,结果如下:
已将数据库上下文更改为 'master'。
name id xtype uid info status base_schema_ver replinfo parent_obj crdate ftcatid schema_ver stats_schema_ver type userstat sysstat indexdel refdate version deltrig instrig updtrig seltrig category cache
-------------------------------------------------------------------------------------------------------------------------------- ----------- ----- ------ ------ ----------- --------------- ----------- ----------- ----------------------- ------- ----------- ---------------- ---- -------- ------- -------- ----------------------- ----------- ----------- ----------- ----------- ----------- ----------- ------
sp_MSalreadyhavegeneration -1073624922 P 4 0 0 0 0 0 2007-02-10 00:34:31.667 0 0 0 P 0 4 0 2007-02-10 00:34:31.667 0 0 0 0 0 2 0
(1 行受影响)
已将数据库上下文更改为 'model'。
name id xtype uid info status base_schema_ver replinfo parent_obj crdate ftcatid schema_ver stats_schema_ver type userstat sysstat indexdel refdate version deltrig instrig updtrig seltrig category cache
-------------------------------------------------------------------------------------------------------------------------------- ----------- ----- ------ ------ ----------- --------------- ----------- ----------- ----------------------- ------- ----------- ---------------- ---- -------- ------- -------- ----------------------- ----------- ----------- ----------- ----------- ----------- ----------- ------
sysrowsetcolumns 4 S 4 0 0 0 0 0 2005-10-14 01:36:15.923 0 0 0 S 1 1 0 2005-10-14 01:36:15.923 0 0 0 0 0 2 0
(1 行受影响)
排版可能有点乱。呵呵!
6、P 密码 搭配 U 所指定的帐号所使用的密码。如果没有指定 -U 和 -P 这两个选项,
sqlcmd 会利用当前用户的 Windows 账号来连接 SQL Server 实例。
7、Q “SQL语法” 功能与下面的 q 相同,只是执行完查询后会自动关闭 sqlcmd 应用程序。
8、q “SQL语法” 启动 sqlcmd 连线后连接查询,但查询完成不退出 sqlcmd。你可以简单地
直接执行如下的语法:
c:\Program Files\Microsoft SQL Server\90\NotificationServices\9.0.242\Bin>sqlcmd -q"select top 1 * from master.sys.sysobjects"
name id xtype uid info status base_schema_ver replinfo
parent_obj crdate ftcatid schema_ver stats_schema_ver type userstat sysstat indexdel refdate version deltrig instrig updtrig seltrig category
cache
-------------------------------------------------------------------------------------------------------------------------------- ----------- ----- ------ ------ ----------- --------------- ----------
----------- ----------------------- ------- ----------- ---------------- ---- -------- ------- -------- ----------------------- ----------- ----------- ----------- ----------- ----------- ----------
------
sp_MSalreadyhavegeneration -1073624922 P 4 0 0 0
0 2007-02-10 00:34:31.667 0 0 0 P 0 4 0 2007-02-10 00:34:31.667 0 0 0 0 0
0
(1 行受影响)
9、S 服务器名 指定要连接SQL Server 实例,如果未指定此选项sqlcmd 会连接本机的默例名认实例。
10、U SQL_Server_ 账号 指定 SQL 自身的登录账号
例如:
c:\Program Files\Microsoft SQL Server\90\NotificationServices\9.0.242\Bin>sqlcmd -Usa -Pfang123456
1>
11、v 变量名称=“值”[变量名称="值"]
定义 sqlcmd 所载装的脚本文件所定义的变量。如果该值包含字符,则将其用引号引起来,则需要用引号括住该值。可同时指定多个变量="值" 如果指定的任何值发生错误,sqlcmd 会产生报错信息并退出执行。
脚本文件如下:
use AdventureWorks
select * from sys.sysobjects
where name=$(abc)
执行如下命令:
c:\Program Files\Microsoft SQL Server\90\NotificationServices\9.0.242\Bin>sqlcmd -v abc='store' -i d:\b.sql
已将数据库上下文更改为 'AdventureWorks'。
name id xtype uid info status base_schema_ver replinfo
parent_obj crdate ftcatid schema_ver stats_schema_ver type userstat sysstat indexdel refdate version deltrig instrig updtrig seltrig category
cache
-------------------------------------------------------------------------------------------------------------------------------- ----------- ----- ------ ------ ----------- --------------- -----------
----------- ----------------------- ------- ----------- ---------------- ---- -------- ------- -------- ----------------------- ----------- ----------- ----------- ----------- ----------- -----------
------
Store 2130106629 U 9 0 0 0 0
0 2005-10-14 01:58:37.147 0 0 0 U 1 3 0 2005-10-14 01:58:37.147 0 0 2075154438 2091154495 0 0
0
(1 行受影响)