转:http://blog.csdn.net/leamonjxl/article/details/6428753
和往常一样,我们先使用 /?来看看sqlcmd的启动参数们:
C:Documents and Settingschenxie.IFLYTEK>sqlcmd.exe /?
Microsoft (R) SQL Server 命令行工具
版本 9.00.1399.06 NT INTEL X86
版权所有 (c) Microsoft Corporation。保留所有权利。
用法: Sqlcmd[-U 登录 ID][-P 密码]
[-S 服务器][-H 主机名][-E 可信连接]
[-d 使用数据库名称] [-l 登录超时值][-t 查询超时值]
[-h 标题][-s 列分隔符][-w 屏幕宽度]
[-a 数据包大小][-e 回显输入][-I 允许带引号的标识符]
[-c 命令结束][-L[c] 列出服务器[清除输出]]
[-q "命令行查询"][-Q "命令行查询" 并退出]
[-m 错误级别][-V 严重级别][-W 删除尾随空格]
[-u unicode 输出][-r[0|1] 发送到 stderr 的消息]
[-i 输入文件][-o 输出文件][-z 新密码]
[-f <代码页> | i:<代码页>[,o:<代码页>]] [-Z 新建密码并退出]
[-k[1|2] 删除[替换]控制字符]
[-y 可变长度类型显示宽度]
[-Y 固定长度类型显示宽度]
[-p[1] 打印统计信息[冒号格式]]
[-R 使用客户端区域设置]
[-b 出错时中止批处理]
[-v 变量 = "值"...][-A 专用管理连接]
[-X[1] 禁用命令、启动脚本、环境变量[并退出]]
[-x 禁用变量情况]
[-? 显示语法摘要]
呵呵,和osql没什么变化吧。下面我将仔细解释每个参数和它们的使用方法。
下面是这些参数的详细解释(注意,区分大小写):
1.首先是登陆方面的:
如果 –U -P –S都是空,比如直接在CMD下打 sqlcmd或sqlcmd.exe将使用本地账户尝试连接本地数据库
-U login_id
用户登录 ID。登录 ID 区分大小写。
如果 -U 选项和 -P 选项均未指定,sqlcmd 将尝试使用 Microsoft Windows 身份验证模式进行连接。身份验证基于运行 sqlcmd 的用户的 Windows 帐户。
如果 -U 选项与 -E 选项(在本主题的后面详细说明)一起使用,将生成错误消息。如果 –U 选项后有多个参数,将生成错误消息并退出程序。
-P passWord
用户指定的密码。密码是区分大小写的。如果未使用 -P 选项,并且未设置 SQLCMDPASSWORD 环境变量,则 sqlcmd 会提示用户输入密码。如果在命令提示符的末尾使用 -P 选项而不带密码,sqlcmd 将使用默认密码 (NULL)。
通过向控制台打印密码提示,可以显示密码提示,如下所示:
Password: |
隐藏用户输入,这意味着将不会显示任何输入的内容,光标保留原位不动。
如果将 -P 选项与 -E 选项一起使用,将生成错误消息。
如果 –P 选项后有多个参数,将生成错误消息并退出程序。
-E
使用可信连接而不是用户名和密码登录 SQL Server。默认情况下,sqlcmd 将使用可信连接选项。
-E 选项会忽略可能的用户名和密码环境变量设置,例如 SQLCMDPASSWORD。如果将 -E 选项与 -U 选项或 -P 选项一起使用,将生成错误消息。
-S server_name [ instance_name ]
指定要连接的 SQL Server 的实例。它设置 sqlcmd 脚本变量 SQLCMDSERVER
指定 server_name 将连接到该服务器中 SQL Server 的默认实例。指定 server_nameinstance_name 将连接到该服务器中 SQL Server 的命名实例。如果未指定服务器,sqlcmd 将连接到本地计算机上的 SQL Server 的默认实例。从网络上的远程计算机执行 sqlcmd 时,此选项是必需的。
如果在启动 sqlcmd 时未指定用户名,SQL Server 将检查并使用 SQLCMDSERVER 环境变量。如果未指定服务器,则使用工作站名称。
-H wksta_name
工作站的名称。此选项设置 sqlcmd 脚本变量 SQLCMDWORKSTATION。该工作站名称在 sys.PRocesses 目录视图的 hostname 列中列出,并可使用存储过程 sp_who 返回。如果未指定此选项,则使用当前计算机名称。此名称可用来标识不同的 sqlcmd 会话。
2.连接设置:
-l time_out
指定 sqlcmd 到 OLE DB 访问接口的登录超时时间。此选项设置 sqlcmd 脚本变量 SQLCMDLOGINTIMEOUT。登录 sqlcmd 的默认超时时间为 8 秒。登录超时设定必须是介于 0 和 65534 之间的数字。如果提供的值不是数值或不在此范围内,sqlcmd 将生成错误消息。该值为 0 时,则允许无限制等待。
-t time_out
指定命令(或 SQL 语句)超时的时间。此选项设置 sqlcmd 脚本变量 SQLCMDSTATTIMEOUT。如果未指定 time_out 值,则命令将不会超时。登录 time_out 必须是介于 1 和 65535 之间的数字。如果提供的值不是数值或不在此范围内,则 sqlcmd 将生成错误消息。
注:实际的超时值可能会与指定的 time_out 值相差几秒。几秒,不是几毫秒,别看错了。
-d db_name
启动 sqlcmd 时发出一个USE db_name 语句。此选项设置 sqlcmd 脚本变量 SQLCMDDBNAME。它指定初始数据库。如果数据库不存在,则生成错误消息且 sqlcmd 退出
-A
使用专用管理员连接 (DAC) 登录到 SQL Server。此类型连接用于排除服务器故障。这只适用于支持 DAC 的服务器。如果 DAC 不可用,sqlcmd 会生成错误消息,然后退出。很好的东西,下面会详细介绍。
-I
将 SET QUOTED_IDENTIFIER 连接选项设置为 ON。默认情况下,将其设定为 OFF。这与SQL Server的默认设置不同,SQL是设置默认是ON的。
小帖士:QUOTED_IDENTIFIER,分隔符使用设置。
SET QUOTED_IDENTIFIER 为 ON(默认值)时,由双引号分隔的所有字符串都被解释为对象标识符。(比如 Select * from [USER],或Select * from “USER”,这里USER就被视为非系统保留字)
因此,加引号的标识符不必符合 Transact-SQL 标识符规则。它们可以是保留关键字,并且可以包含 Transact-SQL 标识符中通常不允许的字符。不能使用双引号分隔文字字符串表达式,而必须用单引号括住文字字符串。如果单引号 (') 是文字字符串的一部分,则可以由两个单引号 (") 表示。当对数据库中的对象名使用保留关键字时,SET QUOTED_IDENTIFIER 必须为 ON。
当 SET QUOTED_IDENTIFIER 为 OFF 时,表达式中的文字字符串可以由单引号或双引号分隔。如果文字字符串由双引号分隔,则可以在字符串中包含嵌入式单引号,如省略号。
在SQL操作的时候具体,默认值为ON还是OFF请查SQLServer2005的联机手册,上面有详细描述。
3.显示设置:
-h headers
指定要在列标题之间打印的行数。系统默认为每组查询结果打印一次标题。此选项设置 sqlcmd 脚本变量 SQLCMDHEADERS。使用 -1 指定不能打印标题。如果使用 -1,则在参数和设置之间没有空格(可以是 -h-1,但不能是 -h -1)。任何无效的值都将导致 sqlcmd 生成错误消息,然后退出。
-w column_width
指定用于输出的屏幕宽度。此选项设置 sqlcmd 脚本变量 SQLCMDCOLWIDTH。该列宽必须是介于 8 和 65536 之间的数字。如果指定的列宽不在此范围内,则 sqlcmd 将生成错误消息。默认宽度为 80 个字符。在输出行超出指定的列宽时,将转到下一行。
-e
将输入脚本打印到标准输出设备 (stdout)。
-r [ 0 | 1]
将错误消息输出重定向到屏幕 (stderr)。如果未指定参数或指定参数为 0,则仅重定向严重级别为 17 或更高的错误消息。如果指定参数为 1,则将重定向所有消息输出(包括 PRINT)。
-k [ 1 | 2 ]
删除输出中的所有控制字符,例如制表符和换行符。这会在返回数据时保留列格式。如果指定了 1,则控制字符被一个空格替代。如果指定了 2,则连续的控制字符被一个空格替代。
-p [ 1 ]
打印每个结果集的性能统计信息。以下示例是性能统计信息的格式:
Network packet size (bytes): n x xact[s]: Clock Time (ms.): totalt1avgt2 (t3 xacts per sec.) |
其中
x = SQL Server 处理的事务数。
t1 = 所有事务的总时间。
t2 = 单个事务的平均时间。
t3 = 每秒的平均事务数。
所有时间均以毫秒表示。
如果指定了可选参数 1,则统计信息的输出格式为以冒号分隔的格式,此格式可以由脚本轻松导入到电子表格中或进行处理。
如果可选参数是除 1 之外的任何值,则将生成错误并且 sqlcmd 将退出。
-o output_file
标识从 sqlcmd 接收输出的文件。
如果指定了 -u,则 output_file 以 Unicode 格式存储。包含空格的文件名必须用引号引起来。如果文件名无效,将生成一个错误消息,并且 sqlcmd 将退出。sqlcmd 不支持向同一文件并发写入多个 sqlcmd 进程。文件输出将损坏或不正确。
-u
指定无论 input_file 为何种格式,output_file 都以 Unicode 格式进行存储。
4.查询配置:
-q " query "
启动 sqlcmd 时执行查询,但是在查询完成时不退出 sqlcmd。将查询用引号引起来,如下例所示。(建议不要使用这个,如果是写批处理命令或是程序自动执行,请用下面那个)
在命令提示符下,键入(不要在查询中使用 GO 终止符):
sqlcmd -d AdventureWorks-q "SELECT FirstName, LastName FROM Person.Contact WHERE LastName LIKE 'Whi%'" |
如果与此选项同时指定了 -b,sqlcmd 在遇到错误时将退出。
-Q " query "
执行查询并立即退出 sqlcmd,类上。(建议不要使用这个,除非是写批处理命令或是程序自动执行)
如果与此选项同时指定了 -b,sqlcmd 在遇到错误时将退出。
-i input_file[,input_file2...]
标识包含一批 SQL 语句或存储过程的文件。可以指定要按顺序读取和处理的多个文件。文件名之间不要使用任何空格。sqlcmd 将首先检查所有指定的文件是否都存在。如果有一个或多个文件不存在,sqlcmd 将退出。
-b
指定错误发生时 sqlcmd 退出并返回一个 DOS
新闻热点
疑难解答