isql和osql

来源:互联网 发布:生命游戏 java代码 编辑:程序博客网 时间:2024/06/03 16:03
使用isql和osql建立脚本文件
isql 实用工具使您得以输入 Transact-SQL 语句、系统过程和脚本文件;并且使用 DB-Library 与 Microsoft® SQL Server™ 2000 进行通讯。 

osql 实用工具使您得以输入 Transact-SQL 语句、系统过程和脚本文件。该实用工具通过 ODBC 与服务器通讯。

两者的语法类似如下:
  isql   -S   abc   -U   sa   -P     -d   test   -i   D:/temp/Update.sql  
   
  参数说明如下:  
  -S   :服务器名称;  
  -U   :用户名;  
  -P   :密码;  
  -d   :数据库名称;  
  -i   :sql脚本路径;
(具体详尽请参阅SQL Server帮助文档)

这里要说明的是在执行同样的SQL 建立表格命令时,isql总会默认所有字段为not null,而osql则默认为null。。
切记。

[转]osql(isql) 使用说明

isql: unknown option ?
usage: isql              [-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]        [-x max text size]
  [-L list servers]      [-c cmdend]
  [-q "cmdline query"]   [-Q "cmdline query" and exit]
  [-n remove numbering]  [-m errorlevel]
  [-r msgs to stderr]
  [-i inputfile]         [-o outputfile]
  [-p print statistics]  [-b On error batch abort]
  [-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 (this screen)]

 

用法: 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> 批处理
      控制台宽度自动调整
      宽消息
      默认错误级别为 — 1 对 1
  [-? show syntax summary]


从帮助来信息来看,两个工具差不了多少,似乎osql的命令强大点,我们看看osql的帮助提示信息

osql 实用工具
osql 实用工具使您得以输入 Transact-SQL 语句、系统过程和脚本文件。该实用工具通过 ODBC 与服务器通讯。

语法

显示 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 SQL Server 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? 批处理文件可以测试 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? 用户帐户。

osql 实用工具使用 ODBC API。该实用工具使用 SQL Server 2000 SQL-92 连接选项的 SQL Server ODBC 驱动程序默认设置。有关更多信息,请参见 SQL-92 选项的效果。

有关此实用工具位置和运行方式的信息,请参见命令提示实用工具入门。

OSQL 命令
除了 osql 中使用的 Transact-SQL 语句外,下表中的命令也可用。

命令 描述
GO 执行最后一个 GO 命令之后输入的所有语句。
RESET 清除已输入的所有语句。
ED 调用编辑器。
!! command 执行操作系统命令。
QUIT 或 EXIT( ) 退出 osql。
CTRL+C 键 不退出 osql 而结束查询。


仅当命令终止符 GO(默认)、RESET、ED、!!、EXIT、QUIT 和 CTRL+C 出现在一行的开始(紧跟 osql 提示符)时才可以识别。osql 忽视同一行中这些关键字后输入的任何内容。

GO 表明一批的结束和任何已被高速缓存的 Transact-SQL 语句的执行。在每个输入行的结尾按 ENTER 键时,osql 将高速缓存此行的语句。键入 GO 后按 ENTER 键时,所有当前已缓存的语句都将作为批处理发送到 SQL Server。

当前的 osql 实用工具工作起来就好像在任何被执行的脚本结尾处都带有隐含的 GO,因而脚本中的所有语句都将执行。最后一个 GO 后的任何语句都不执行。

通过键入以命令终止符作为开始的行来结束命令。可以在命令终止符后输入一个整数来指定命令运行的次数。例如,若要执行此命令 100次,请键入:

Select x = 1
GO 100

执行结束时打印一次结果。osql 不接受每行字符数超过 1,000 的结果。长语句应当跨多个行书写。

通过在行首键入 ED,用户可以在当前查询缓冲区上调用编辑器。编辑器在 EDITOR 环境变量中定义。默认编辑器为"edit"。可以通过设置 EDITOR 环境变量来指定其它编辑器。例如,若要将默认编辑器指定为 Notepad,请在操作系统提示符处输入:

SET EDITOR=notepad

操作系统命令
通过用两个惊叹号 (!!) 开始一行,然后输入命令的方式,也可以执行操作系统命令。Windows NT 的命令撤回功能可用来撤回和修改 osql 语句。键入 RESET 可以清除现有的查询缓冲区。

在运行存储过程时,osql 在批处理中的每个结果集之间打印一个空行。此外,如果没有应用于已执行的语句,则"0 行受到影响"消息不会出现。

交互性使用 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。不要在文件中包含命令终止符;在完成编辑后交互输入终止符。

插入注释
在 osql 提交给 SQL Server 的 Transact-SQL 语句中可以包含注释。允许使用两种注释风格类型:-- 和 /*...*/。

有关更多信息,请参见使用注释。

使用 EXIT 返回 osql 结果
可以使用 Select 语句的结果作为 osql 的返回值。第一个结果行的第一列转换为 4 字节的整数(长整型)。MS-DOS 将低字节传递给父进程或操作系统错误级别。Windows NT 则传递整个 4 字节整数。语法为:

EXIT(query)

例如:

EXIT(Select @@ROWCOUNT)

EXIT(Select 5)

也可以包含 EXIT 参数,使其作为批处理文件的一部分。例如:

osql /Q "EXIT(Select COUNT(*) FROM '%1')"

osql 实用工具将圆括号 ( ) 中输入的所有内容原样传递给服务器。如果存储系统过程选择了一个集合并返回一个值,则仅返回选择的内容。在圆括号之间无参数的 EXIT( ) 语句执行批处理中此语句前的所有内容,然后退出,而不返回值。

EXIT 格式有四种:

EXIT
不执行批处理就立即退出,无返回值。

EXIT( )
执行批处理后退出,无返回值。

EXIT(query)
执行包括查询的批处理,返回查询的结果后退出。

状态为 127 的 RAISERROR。
如果在 osql 脚本中使用 RAISERROR,并且出现状态 127,则 osql 会退出并将消息 ID 返回给客户程序。例如:

RAISERROR(50001, 10, 127)

该错误会导致 osql 脚本终止并将消息 ID 50001 返回给客户程序。

SQL Server 保留介于 -1 到 -99 之间的返回值;osql 定义下列值:

-100
选择返回值前遇到的错误。

-101
选择返回值时找不到行。

-102
选择返回值时发生转换错误。

显示 money 和 smallmoney 数据类型
osql 只用两位小数位数显示 money 和 smallmoney 数据类型,但 SQL Server 用四位小数位数在内部存储这两类数据的值。请看下例:

Select CAST(CAST(10.3496 AS money) AS decimal(6, 4))

此语句的结果为 10.3496,说明该值是原样按完整的小数位存储的

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 如果京东买的显示器屏碎了怎么办 在微信上买东西退货不退钱怎么办 手机分期付款不还款被起诉了怎么办 朋友用我的花呗分期不还钱怎么办 朋友用我身份证办分期不还钱怎么办 我手机号被别人绑定信用卡了怎么办 5s用不了4g网络怎么办 红米手机返回键没了怎么办 小米手机进水了开不了机怎么办 手机返回键和菜单键失灵怎么办 苹果5s指纹按键坏了怎么办 小米手机安卓系统耗电量大怎么办? 苹果5s充不进去电怎么办 苹果手机6s返回键失灵怎么办 本人被骗同时被利用骗了别人怎么办 京东取消订单后货到了该怎么办 京东电信日租卡流量顶置了怎么办 苹果6s进水后闪光灯不亮怎么办 华为手机情景义停车事项过期怎么办 拼多多付款后商品下架了怎么办 淘宝上买化妆品买到假货了怎么办 找苹果官网解id发票丢了怎么办 客人已交订金但要取消宴席怎么办 京东买的小米电视碎屏了怎么办 京东购买的电视碎屏了怎么办 淘宝上买手机不能用不给退怎么办 天猫申请退货退款卖家不处理怎么办 在淘宝买到货到付款的假苹果怎么办 跟朋友买手机买到假货怎么办 在淘宝网上买到不合格的产品怎么办 淘宝打假师打了我的店铺怎么办 收藏品公司关门跑路员工怎么办 客户快递签收后说货物短缺怎么办 京东商城买东西商家不换货怎么办 在商场买东西过几天就降价了怎么办 天猫买东西不退货不退款怎么办 买买8p美版的怎么办 京东金条银行卡被冻结还不了怎么办 在瑞士刚买的浪琴手表不走了怎么办 刚买的手表表镜有划痕 怎么办 唯品会上买的手表有质量问题怎么办