当前位置:文章写作网 >日记 >日记 >sql 2005 SqlCmd 连接参数

sql 2005 SqlCmd 连接参数

2008-04-24 16:11 作者:tshfang 阅读量:12271 推荐24次 | 我要投稿

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 行受影响)

其他人在看啥

    《sql 2005 SqlCmd 连接参数》的评论 (共 0 条)

    • Guest::like
    • Guest::luguo
    • Guest::manfen