OSQL用法

使用:OSQL.EXE和SQLCMD.EXE工具:他们都在
SQL server2008在C:\Program Files\Microsoft SQL Server\100\Tools\Binn,有的可能在
C:\Program Files\Microsoft SQL Server\90\Tools\Binn,你自己找找。

然后看看PATH路径中有没有path=
C:\Program Files\Microsoft SQL Server\100\Tools\Binn
默认你安装了MS server就会有。
如果是sql2000的话.那么就用osql连接,如以下例子,osql -S Localhost -U sa -P 123 注意大小写 "select count(*) from sysobjects" 如果在sql2005及以上版本下,把上面脚本的OSQL改为sqlcmd是可以运行的。

我使用2008使用OSQL会出现,用SQLCMD代替的提示:

-----使用工具OSQL:

C:\Users\Administrator>osql -? //查看osql用法
C:\Users\Administrator>osql -S ZLQ-PC -U sa -P 123 ?
Microsoft (R) SQL Server Command Line Tool
Version 10.0.1600.22 NT INTEL X86
Copyright (c) Microsoft Corporation. All rights reserved.

Note: osql does not support all features of SQL Server 2008.
Use sqlcmd instead. See SQL Server Books Online for details.usage: osql [-U login id] [-P password]
[-S server] [-H hostname] [-E trusted connection]
[-d use database name] [-l login timeout] [-t query timeout]
[-h headers] [-s colseparator] [-w columnwidth]
[-a packetsize] [-e echo input] [-I Enable Quoted Identifiers]
[-L list servers] [-c cmdend] [-D ODBC DSN name]
[-q "cmdline query"] [-Q "cmdline query" and exit]
[-n remove numbering] [-m errorlevel]
[-r msgs to stderr] [-V severitylevel]
[-i inputfile] [-o outputfile]
[-p print statistics] [-b On error batch abort]
[-X[1] disable commands [and exit with warning]]
[-O use Old ISQL behavior disables the following]
<EOF> batch processing
Auto console width scaling
Wide messages
default errorlevel is -1 vs 1
[-? show syntax summary]

解释

参数-?

显示 osql 开关的语法摘要。

-L

列出在本地配置的服务器和在网络上广播的服务器的名称。

-U login_id

用户登录 ID。登录 ID 区分大小写。

-P password

是用户指定的密码。如果未使用 -P 选项,osql 将提示输入密码。如果在命令提示符的末尾使用 -P 选项而不带密码,osql 使用默认密码 (NULL)。密码区分大小写。

OSQLPASSWORD 环境变量使您得以为当前会话设置默认密码。因此,不需要通过硬编码来在批处理文件中设置密码。

如果没有为 -P 选项指定密码,osql 首先检查 OSQLPASSWORD 变量。如果未设置值,osql 使用默认密码 (NULL)。以下示例在命令提示符处设置 OSQLPASSWORD 变量,然后访问 osql 实用工具:

C:\>SET OSQLPASSWORD=abracadabra
C:\>osql

-E

使用信任连接而不请求密码。

-S server_name[\instance_name]

指定要连接的 Microsoft&reg; SQL Server&#8482; 2000 实例。在该服务器上指定 server_name 以连接到 SQL Server 的默认实例。在该服务器上指定 server_name\instance_name 以连接到一个已命名的 SQL Server 2000 的实例。如果未指定服务器,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

连接到用 Microsoft SQL Server 的 ODBC 驱动程序定义的 ODBC 数据源。osql 连接使用该数据源中指定的选项。



说明 该选项不适用于其它驱动程序定义的数据源。


-c cmd_end

指定命令终止符。默认情况下,通过单独在一行中输入 GO 来终止命令并将其发送到 SQL Server 2000。在重置命令终止符时,不要使用对操作系统有特殊含义的 Transact-SQL 保留字或字符,无论其前面是否有反斜杠。

-q "query"

启动 osql 时执行查询,但是在查询完成时不退出 osql。(注意查询语句不应包含 GO)。如果从批处理文件中发出查询,请使用 %variables 或环境 %variables%。例如:

SET table = sysobjects
osql /q "Select * from %table%"

将查询用双引号引起来,将查询中嵌入的任何内容用单引号引起来。

-Q "query"

执行查询并立即退出 osql。将查询用双引号引起来,将查询中嵌入的任何内容用单引号引起来。

-n

从输入行中删除编号和提示符号 (>)。

-m error_level

自定义错误信息的显示。显示指定的或更高严重级别错误的消息数、状态和错误级别。不显示严重级别低于指定级别的错误的任何信息。用 -1 指定与消息一起返回所有标题,即使是信息类的消息。如果用 –1,则在参数和设置之间不能有空格(可以是 -m-1,不能是 -m -1)。

-r {0 | 1}

将消息输出重定向到屏幕 (stderr)。如果未指定参数,或指定参数为 0,则仅重定向严重级别为 17 或更高的错误信息。如果指定参数为 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 错误信息的严重级别为 10 或更高时,返回给 DOS ERRORLEVEL 变量的值为 1;否则返回 0。Microsoft MS-DOS&reg; 批处理文件可以测试 DOS ERRORLEVEL 的值并适当处理错误。

-u

指定 output_file 存储为 Unicode 格式,而不管 input_file 为何种格式。

-R

指定在将货币、日期和时间数据转换为字符数据时 SQL Server ODBC 驱动程序使用客户端设置。

-O

为与 isql 的早期版本行为匹配,指定停用某些 osql 功能。下列功能停用:

EOF 批处理


控制台宽度自动调整


宽信息
同时还将 DOS ERRORLEVEL 的默认值设置为 –1。

注释
osql 实用工具从操作系统直接启动,并且使用本文中列出的区分大小写的选项。启动后,osql 接受 SQL 语句并将它们交互地发送到 SQL Server。结果被格式化并显示在屏幕上 (stdout)。可使用 QUIT 或 EXIT 退出 osql。

如果启动 osql 时未指定用户名,SQL Server 2000 将检查环境变量并使用它们,例如 osqluser=(user) 或 osqlserver=(server)。如果未设置环境变量,则使用工作站用户名。如果未指定服务器,则使用工作站名称。

如果 -U 或 -P 选项都没有使用,则 SQL Server 2000 将尝试使用 Windows 身份验证模式进行连接。身份验证基于运行 osql 的 Microsoft Windows NT&reg; 用户帐户。交互性使用 osql
若要交互性使用 osql,请在命令提示符处键入 osql 命令(以及任何选项)。

可以通过键入类似下行的命令,在包含由 osql 执行的查询的文件(例如 Stores.qry)中进行读取:

osql /U alma /P /i stores.qry

该文件必须包含命令终止符。

可以通过键入类似下行的命令,在包含查询的文件(例如 Titles.qry)中进行读取并将结果导向另一文件:

osql /U alma /P /i titles.qry /o titles.res

交互性使用 osql 时,为把操作系统文件读入到命令缓冲区,可使用:r file_name。不要在文件中包含命令终止符;在完成编辑后交互输入终止符。
举例:

C:\Users\Administrator>osql -S ZLQ-PC -U sa -P 123 -q "select count(*) as count
from sysobjects"
count
-----------
1999

(1 row affected)

//如果想继续执行SQL查询,输入关键字go

C:\Users\Administrator>osql -S ZLQ-PC -U sa -P 123 -d test1 -q "select * from
student"
sno sname sage ssex
----------- -------------------- ----------------------- ----
1 张三 1980-01-23 00:00:00.000 男
2 李四 1982-12-12 00:00:00.000 女
3 张飒 1981-09-09 00:00:00.000 男
4 莉莉 1983-03-23 00:00:00.000 女
5 王弼 1982-06-21 00:00:00.000 男
6 王丽 1984-10-10 00:00:00.000 女
7 刘香 1980-12-22 00:00:00.000 女

(7 rows affected)

1> select * from teacher
2> go // go 是立即执行该缓存语句
tno tname
----------- --------------------
1 张老师
2 王老师
3 李老师
4 赵老师
5 刘老师
6 向老师
7 李文静
8 叶平

(8 rows affected)
1>



-----使用工具SQLCMD:

使用sqlcmd:

C:\Users\Administrator>sqlcmd -?
Microsoft (R) SQL Server Command Line Tool
Version 10.0.1600.22 NT INTEL X86
Copyright (c) Microsoft Corporation. All rights reserved.

usage: Sqlcmd [-U login id] [-P password]
[-S server] [-H hostname] [-E trusted connection]
[-d use database name] [-l login timeout] [-t query timeout]
[-h headers] [-s colseparator] [-w screen width]
[-a packetsize] [-e echo input] [-I Enable Quoted Identifiers]
[-c cmdend] [-L[c] list servers[clean output]]
[-q "cmdline query"] [-Q "cmdline query" and exit]
[-m errorlevel] [-V severitylevel] [-W remove trailing spaces]

[-u unicode output] [-r[0|1] msgs to stderr]
[-i inputfile] [-o outputfile] [-z new password]
[-f <codepage> | i:<codepage>[,o:<codepage>]] [-Z new password and exit]
[-k[1|2] remove[replace] control characters]
[-y variable length type display width]
[-Y fixed length type display width]
[-p[1] print statistics[colon format]]
[-R use client regional setting]
[-b On error batch abort]
[-v var = "value"...] [-A dedicated admin connection]
[-X[1] disable commands, startup script, enviroment variables [and exit]]
[-x disable variable substitution]
[-? show syntax summary]

举例:

C:\Users\Administrator>sqlcmd -S zlq-pc -U sa -P 123 -d test1
1> select * from teacher
2> go
tno tname
----------- --------------------
1 张老师
2 王老师
3 李老师
4 赵老师
5 刘老师
6 向老师
7 李文静
8 叶平

(8 rows affected)
1>


C:\Users\Administrator>sqlcmd -S zlq-pc -U sa -P 123
1> use test1
2> select top 10 * from sc
3> go
Changed database context to 'test1'.
sno cno score
----------- ----------- -----------
1 1 80
1 2 86
1 3 83
1 4 89
2 1 50
2 2 36
2 4 59
3 1 50
3 2 96
3 4 69

(10 rows affected)
1>


sqlcmd详细介绍在:

http://blog.163.com/llsh2010@126/blog/static/1691895692011615113838734/

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值