您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

isql Interactive SQL 实用程序

isql 实用程序是使用 Open Client API 的命令行 Interactive SQL 实用程序。

您不能在 isql 中创建用户定义的数据库选项。如果需要添加自己的数据库选项,请改用 dbisql Interactive SQL 实用程序。

语法

isql 

[-b] [-e] [-F] [-p] [-n] [-v] [-W] [-X] [-Y] [-Q]

[-a display_charset]

[-A packet_size]

[-c cmdend]

[-D database]

[-E editor]

[-h header]

[-H hostname]

[-i inputfile]

[-I interfaces_file]

[-J client_charset]

[-K keytab_file]

[-l login_timeout]

[-m errorlevel]

[-o outputfile]

[-P password]

[-R remote_server_principal]

[-s colseparator]

[-S server_name]

[-t timeout]

-U username

[-V [security_options]]

[-w columnwidth]

[-z locale_name]

[-Z security_mechanism]

[--conceal]

[--URP]

参数

下表列出了 isql 实用程序的可用选项。

isql 选项选项说明-b禁用表头输出的显示内容。-e回写输入。-F启用 FIPS 标记。指定 -F 参数后,服务器会在遇到非标准 SQL 命令时返回一条消息。此选项不会禁用 SQL 扩展。发出非 ANSI SQL 命令时,处理完成。 -p打印性能统计信息。-n与 -e 结合使用时,可从输出文件中的回写输入行内移除编号和提示符号 (>)。 -v打印 isql 的版本号和版权消息,然后退出。 -X启动到服务器的带客户端口令加密的登录连接。-X 启用扩展口令加密连接和口令加密连接,而不使用明文口令重新连接。isql(客户端)向服务器指定,需要口令加密。服务器将返回一个加密密钥,isql 使用该密钥为您的口令加密,服务器则在需要时使用该密钥验证您的口令。 如果 isql 崩溃,系统会创建一个含有您的口令的核心文件。如果未使用加密选项,则口令在文件中以纯文本格式显示。如果使用加密选项,则口令不可读 -W禁用扩展口令和口令加密协商。-Y让 Adaptive Server 使用链接事务。-Q为客户端提供故障转移属性。-a从某终端运行 isql,该终端的字符集不同于运行 isql 的计算机的字符集。使用 -a 和 -J 指定转换所需的字符集转换文件(.xlt 文件)。仅当客户端字符集与缺省字符集相同时,才能单独使用 -a 而不使用 -J。 注意ascii_7 字符集与所有字符集均兼容。如果将 Adaptive Server 字符集或客户端字符集设置为 ascii_7,那么任何 7 位 ASCII 字符都能在客户端与服务器间来回传递而不发生变化。其它字符则可能产生转换错误。-A指定用于此 isql 会话的网络包大小。例如,下列命令将此 isql 会话的包大小设置为 4096 字节:isql -A 4096若要检查网络包大小,请输入:SELECT * FROM sysprocesses值显示在 network_pktsz 标题下。 必须介于 default network packet size 参数值和 maximum network packet size configuration 参数值之间,并且必须是 512 的倍数。 使用大于缺省包大小的包大小来执行 readtext 或 writetext 等 I/O 密集型操作。 设置或更改 Adaptive Server 的包大小不影响远程过程调用的包大小。-c更改命令终结符。缺省情况下,可通过输入独占一行的“go”来终止命令并发送它们。更改命令终结符时,不要使用 SQL 保留字或控制字符。-D<database>选择用于启动 isql 会话的数据库。 -E指定一个除缺省编辑器 vi 之外的编辑器。要调用该编辑器,请在 isql 中输入其名称,作为某一行的第一个单词。 -h指定列标题间要打印的行数。缺省情况下,每组查询结果的标头只显示一次。-H指定列标题间要打印的行数。缺省情况下,每组查询结果的标头只显示一次。-i指定连接到 Adaptive Server 时要搜索的接口文件的名称和位置。如果没有指定 -l,isql 将在 IQ 环境变量所指定的目录中查找名为 interfaces 的文件。 -J指定用于客户端的字符集。-J 请求将 Adaptive Server 字符集与客户端上使用的字符集 进行相互转换。过滤器在 和 Adaptive Server 字符集之间转换输入内容。 不含参数的 -J 将字符集转换设置为 NULL。这样不会发生任何转换。若客户端与服务器使用相同的字符集,则使用该设置。 省略 -J 可将字符集设置为平台的缺省字符集。缺省字符集不必是客户端正在使用的字符集。有关字符集和关联标记的详细信息,请参见《Adaptive Server Enterprise 系统管理指南,卷 1》中的“配置客户端/服务器字符集转换”。 -K指定在 DCE 中进行验证所用的 keytab 文件的路径。-l指定连接到 Adaptive Server 时允许的最大超时值。缺省值为 60 秒。此值仅影响 isql 等待服务器响应登录尝试的时间。若要为命令处理指定超时时间,请使用 -t 参数。 -m自定义错误消息显示。对于指定严重级或更高严重级的错误,只显示消息号、状态和错误级别,而不显示错误文本。如果错误级别低于指定级别,则不显示任何内容。-o指定用于存储 isql 中输出内容的操作系统文件的名称。将参数指定为 -o outputfile 与指定为 > outputfile 相似。 -P指定您的 Adaptive Server 口令。如果未指定 -P 标记,isql 会提示输入口令。如果口令为 NULL,请使用不需输入口令的 -P 标记。 -R按照安全机制的定义为服务器指定主体名。缺省情况下,服务器的主体名与服务器的网络名一致,后者是使用 -S 参数或 DSQUERY 环境变量指定的。如果服务器的主体名和网络名不同,请使用 -R 参数。 -s重置缺省为空的列分隔符。若要使用对操作系统有特殊意义的字符(如“|”、“;”、“&”、“<”、“>”),则必须为这些字符加上引号或在其前面加反斜杠。-S指定要连接的 Adaptive Server 的名称。isql 在 interfaces 文件中查找此名称。如果指定 -S 而不指定参数,isql 会查找名为 IQ 的服务器。如果不指定 -S,isql 会查找由 DSQUERY 环境变量指定的服务器。 -t指定 SQL 命令超时的秒数。如果不指定超时,则命令将无限期运行。这会影响 isql 中发出的命令,但不影响连接时间。登录到 isql 的缺省超时值为 60 秒。 -U指定登录名。登录名区分大小写。--URP允许您为 SAP IQ 服务器提供登录重定向字符串。以下示例指定逻辑服务器、数据库、节点类型和重定向设置: isql -Usa –P -–URP “LS=salogsrv;dbname=dbone; node=writer;redirect=no”或者允许为访问 Adaptive Server 的客户端设置通用远程口令 。此应用程序可设置通用远程口令。例如,ctlib 使用 ct_remote_pwd(),而 jConnect 使用 setRemotePassword 方法。 -V指定基于网络的用户验证。使用此选项时,用户必须在运行实用程序之前登录到网络的安全系统。在这种情况下,用户必须以 -U 选项提供网络用户名;以 -P 选项提供的任何口令均将被忽略。 您可在 -V 后加上关键字母选项的字符串 ,以启用附加安全服务。这些关键字母包括: -c – 启用数据保密服务 -i – 启用数据完整性服务 -m – 启用连接建立过程中的互相验证 -o – 启用数据源时间戳服务 -q – 启用失序检测 -r – 启用数据重放检测 -w设置用于输出的屏幕宽度。缺省值为 80 个字符。输出行达到其最大屏幕宽度时换行。-z指定用于显示 isql 提示和消息的替代语言的正式名称。如果未指定 -z,isql 将使用服务器的缺省语言。可在安装期间或安装后,使用 langinstall 实用程序(Windows 中的 langinst)或 sp_addlanguage 存储过程向 Adaptive Server 添加语言。 -Z指定连接上所用的安全机制的名称。 安全机制名在 libtcl.cfg 配置文件中定义,该文件位于 IQ 安装目录下的 ini 子目录中。如果不提供 名称,则使用缺省机制。有关安全机制名的详细信息,请参见《Open Client 和 Open Server 配置指南》中 libtcl.cfg 文件的说明。 --conceal在 isql 会话期间隐藏输入。输入口令等敏感信息时,--conceal 选项十分有用。--conceal 选项的语法是: isql --conceal [':?' | 'wildcard'] 是一个 32 字节的变量,最大长度为 80 个字符。 注意在批处理模式下,会以静默方式忽略 --conceal。 

用法

如果正在使用线程驱动程序,请将此语法用于 isql_r。

如果正在 IBM 平台中使用线程驱动程序,请将此语法用于 isql。

必须首先将 IQ 环境变量设置为 Adaptive Server 的当前版本所在位置,然后才能使用 isql。

下表列出可在交互式 isql 中执行的命令:

isql 中的可用命令命令说明:r filename将操作系统文件读入命令缓冲区。不要在文件中包含命令终结符;一旦完成编辑后,必须在单独一行上以交互方式输入终结符。:R filename将操作系统文件读入命令缓冲区,然后显示该文件。不要在文件中包含命令终结符;一旦完成编辑后,必须在单独一行上以交互方式输入终结符。use database_name更改当前数据库。!! os_command 执行操作系统命令。位于行开头。> file_name 将 T-SQL 命令的输出重定向到 。以下示例将服务器版本插入 中: select @@version go > file_name >> file_name 将 T-SQL 命令的输出附加到 。以下示例将服务器版本附加到 中: select @@version go >> file_name | command 通过管道将 T-SQL 命令的输出传送到外部命令。以下示例将在 sp_who 生成的列表中查找 "sa" 的所有实例: sp_who go | grep savi (UNIX) edit (Windows) 调用缺省编辑器。reset清除查询缓冲区。quit 或 exit退出 isql。 

登录或发出 use database 命令后,将不再显示 5701(“数据库已更改”)服务器消息。

错误消息格式不同于早期版本的 isql。如果有根据这些消息的值执行例程的脚本,则需要对它们进行重写。

如果将 -X 参数包括在内,启用口令的连接的执行情况将视服务器的能力而定:

  • 如果服务器能够处理扩展口令加密和口令加密,则使用扩展口令加密协商。

  • 如果服务器只能处理口令加密,则使用口令加密协商。

  • 如果服务器无法处理口令加密或扩展口令加密,则首次连接尝试将会失败,而客户端会使用明文口令尝试重新连接。

    要以交互方式使用 isql,请在操作系统提示符处写入命令 isql(以及任意可选参数)。isql 程序接受 SQL 命令并将命令发送至 Adaptive Server。按标准输出为结果设置格式并进行显示。使用 quit 或 exit 退出 isql。

    通过在某一行的开头键入缺省命令终结符 go(如果使用 -c 参数,则可键入其它命令终结符),终止某条命令。可以在命令终结符后加一个整数来指定命令运行的次数。例如,若要执行该命令 100 次,请输入:

    select x = 1
    

    go 100

    结果在执行完毕后显示一次。

    如果在命令行多次输入一个选项,则 isql 使用最后一个值。例如,如果输入下面的命令,-c 的第二个值 "send" 将替换第一个值 ".":

    isql -c"." -csend

    这允许您覆盖您设置的所有别名。

    若要调用当前查询缓冲区中的编辑器,请将其名称作为行中的第一个单词输入。通过用 EDITOR 环境变量指定,定义首选的可调用编辑器。如果未定义 EDITOR,则缺省值为 vi(在 UNIX 上)和 edit(在 Windows 上)。

    例如,如果 EDITOR 环境变量设置为 "emacs",则必须从 isql 中调用它,并将 "emacs" 作为行中的第一个词。

    若要清除已存在的查询缓冲区,可在单独一行中输入 reset。isql 将放弃任何待执行的输入。您还可在某行的任意位置按 Ctrl-c 来取消当前查询并返回至 isql 提示符。

    按如下所示读入包含供 isql 执行的查询的操作系统文件:

    isql -U alma -P password < input_file

    该文件必须包含命令终结符。结果会在终端上显示。在包含查询的操作系统文件中进行读取并将结果放入另一文件中,如下所示

    isql -U alma -P password < input_file > output_file

    isql 在小数点后仅显示 6 位 float 或 real 数据,其余部分四舍五入。

    您可在 isql 向 Adaptive Server 提交的 Transact-SQL 语句中加入注释。用 " /* " 开始一个注释,并用 " */ " 结束该注释,如下例所示:

    select au_lname, au_fname
    

    /*retrieve authors’ last and first names*/

    from authors, titles, titleauthor

    where authors.au_id = titleauthor.au_id

    and titles.title_id = titleauthor.title_id

    /*this is a three-way join that links authors

    **to the books they have written.*/

    如果要注释掉 go 命令,则不应将其置于一行的开始处。例如,使用以下方式注释掉 go 命令:

    /* 
    

    **go

    */

    不要使用下面的方法:

    /* go */

    isql 将日期格式顺序定义为月、日、年(mm dd yyyy hh:mmAM(或 PM)),不考虑区域设置环境。要更改此缺省顺序,请使用 convert 函数。

    在 isql 会话中,缺省提示标签为缺省通配符 :? 或 的值。可以通过在通配符后面提供一个单字字符串(最大长度为 80 个字符)来自定义提示标签。如果指定多字提示标签,将忽略第一个字后面的字符。

    注意在 isql 会话中,仅当 :?, 或 的值位于 isql 行的开头时,isql 才会将这些字符识别为通配符。

    示例

    打开一个可在其中编辑查询的文本文件。编写并保存文件后,返回到 isql 。随即显示查询;单独在一行上键入 "go" 来执行该查询:

    isql -Ujoe -Pabracadabra
    

    1> select *

    2> from authors

    3> where city = "Oakland"

    4> vi

    reset 清除查询缓冲区。 quit 返回到操作系统:

    isql -Ualma
    

    Password:

    1> select *

    2> from authors

    3> where city = "Oakland"

    4> reset

    1> quit

    指定将从 Macintosh 中对使用 roman8 字符集的服务器运行 isql:

    isql -a mac -J roman8

    在 pubs2 数据库的输出中使用字符“#”为存储 ID 7896 创建列分隔符:

    isql -Usa -P -s#
    

    1> use pubs2

    2> go

    1> select * from sales where stor_id = "7896"

    #stor_id#ord_num #date #

    #-------#--------------------#--------------------------#

    #7896 #124152 # Aug 14 1986 12:00AM#

    #7896 #234518 # Feb 14 1991 12:00AM#

    (2 rows affected)

    更改口令,不显示输入的口令。此示例使用“old”和“new”作为提示标签:

    $ isql -Uguest -Pguest -Smyase --conceal
    

    sp_password

    :? old

    ,

    :?:? new

    old

    new

    Confirm new

    Password correctly set.

    (Return status 0)

    激活当前用户的角色。此示例使用自定义通配符及“role”和“password”提示标签:

    $ isql -UmyAccount --conceal '*'Password:
    

    set role

    * role

    with passwd

    ** password

    on

    go

    role

    password

    Confirm password