使用 osql 实用工具,可以输入 Transact-SQL 语句、系统过程和脚本文件。 此实用工具通过 ODBC 与服务器通信。
语法
osql [-?] | [-L] | [ { {-Ulogin_id [-Ppassword]} | –E } [-Sserver_name[\instance_name]] [-Hwksta_name] [-ddb_name] [-ltime_out] [-ttime_out] [-hheaders] [-scol_separator] [-wcolumn_width] [-apacket_size] [-e] [-I] [-D data_source_name] [-ccmd_end] [-q "query"] [-Q"query"] [-n] [-merror_level] [-r {0 | 1}] [-iinput_file] [-ooutput_file] [-p] [-b] [-u] [-R] [-O] ]
参数
-S server_name[/instance_name] 指定要连接到的 Microsoft SQL Server 实例。指定 server_name 将连接到该服务器上 SQL Server 的默认实例。指定 server_name/instance_name 将连接到该服务器上 SQL Server 的某个命名实例。如果未指定服务器,osql 将连接到本地计算机上的 SQL Server 默认实例。从网络上的远程计算机执行 osql 时,此选项是必需的。 -H wksta_name 工作站名称。工作站名称存储在 sysprocesses.hostname 中,并按 sp_who 显示。如果不指定此选项,则采用当前计算机名称。 -d db_name 启动 osql 时发出一个 USE db_name 语句。 -l time_out 指定 osql 登录超时之前的秒数。登录 osql 的默认超时时间为 8 秒。 -t time_out 指定命令超时之前的秒数。如果不指定 time_out 值,则命令不会超时。 -h headers 指定要在列标题之间打印的行数。默认为每一组查询结果打印一次标题。使用 -1 可指定不打印标题。如果使用 -1,则在参数和设置之间一定不能有空格(可以是 -h-1,不能是 -h -1)。 -s col_separator 指定列分隔符字符,默认值为空格。若要使用对操作系统有特殊含义的字符(例如 | ; & < >),请将该字符用双引号 (") 括起来。 -w column_width 允许用户设置屏幕输出的宽度。默认为 80 个字符。当输出行达到其最大屏幕宽度时,会拆分为多行。 -a packet_size 允许您请求不同大小的数据包。packet_size 的有效值在 512 到 65535 之间。osql 的默认值为服务器的默认值。执行较大的脚本时,各个 GO 命令之间的 SQL 语句的数量是庞大的,因此增大数据包可以提高性能。Microsoft 的测试表明大容量复制操作的最快设置通常为 8192。可以请求更大的数据包,但如果请求不能得到批准,则 osql 会将此值默认为服务器的默认值。 -e 回显输入。 -I 将 QUOTED_IDENTIFIER 连接选项设置为开启。 -D data_source_name 连接到用 ODBC 驱动程序为 Microsoft SQL Server 定义的 ODBC 数据源。osql 连接使用该数据源中指定的选项。 注意: 此选项不适用于为其它驱动程序定义的数据源。 -c cmd_end 指定命令终止符。默认情况下,可以在行中输入一个单独的 GO 来终止命令,并将该命令发送到 SQL Server。如果要重置命令终止符,请勿使用对操作系统有特殊含义的 Transact-SQL 保留字或字符,无论其前面是否有反斜杠。 -q " query " 启动 osql 时执行查询,但在查询完成时不退出 osql。(注意查询语句不应包含 GO)。如果从批处理文件中发出查询,请使用 %variables 或环境 %variables%。例如: 复制代码 SET table=sys.objects osql -E -q "select name, object_id from %table%" 将查询用双引号括起来,将查询中嵌入的任何内容用单引号括起来。 -Q " query " 执行查询并立即退出 osql。将查询用双引号括起来,将查询中嵌入的任何内容用单引号括起来。 -n 从输入行中删除编号和提示符号 (>)。 -m error_level 自定义错误信息的显示。显示指定的或更高严重级别的错误的消息数、状态和错误级别。不显示低于指定级别的错误的信息。使用 -1 可以指定返回所有标题及其消息,即使是信息型消息。如果使用 -1,则在参数和设置之间不能有空格(可以是 -m-1,不能是 -m -1)。 -r {0 | 1} 将消息输出重定向到屏幕 (stderr)。如果不指定参数,或指定参数为 0,则仅重定向严重级别为 11 或更高的错误信息。如果指定参数为 1,则将重定向所有消息输出(包括“print”)。 -i input_file 标识包含一批 SQL 语句或存储过程的文件。小于 (<) 比较运算符可以代替 -i 使用。 -o output_file 标识从 osql 接收输出的文件。大于 (>) 比较运算符可以代替 -o 使用。 如果 input_file 不是 Unicode,并且未指定 -u,则 output_file 将存储为 OEM 格式。如果 input_file 是 Unicode,或指定了 -u,则 output_file 将存储为 Unicode 格式。 -p 打印性能统计信息 -b 指定发生错误时,osql 退出并返回一个 DOS ERRORLEVEL 值。如果 SQL Server 错误消息的严重级别为 11 或更高,DOS ERRORLEVEL 变量返回的值为 1;否则,返回的值为 0。Microsoft MS-DOS 批处理文件可以测试 DOS ERRORLEVEL 的值,并进行适当的处理。 -u 指定 output_file 存储为 Unicode 格式,而不考虑 input_file 的格式。 -R 指定在将货币、日期和时间数据转换为字符数据时,SQL Server ODBC 驱动程序使用客户端设置。 -O 指定为与 isql 的早期版本行为匹配,停用某些 osql 功能。下列功能停用: EOF 批处理 自动调整控制台宽度 宽消息 同时还将 DOS ERRORLEVEL 的默认值设置为 -1。
命令
命令 | 说明 |
---|---|
GO | 执行上一个 GO 命令之后输入的所有语句。 |
RESET | 清除已输入的所有语句。 |
QUIT 或 EXIT( ) | 退出 osql。 |
Ctrl+C | 结束查询但不退出 osql。 |
例子
osql -E -d 数据库 -i SqlScript.sql -r 1 -b -w 1000 -n osql -S zx\SQLSERVER2008 -U sa -P sa -d 数据库 -i SqlScript.sql -r 1 -b -w 1000 -n
注意:在 SQL Server 的未来版本中将删除此功能。 请避免在新的开发工作中使用此功能,并计划修改当前使用此功能的应用程序。 请改用 sqlcmd。
详细资料:http://msdn.microsoft.com/zh-cn/library/ms162806.aspx