远程Sybase数据库技术支持,联系手机:13811580958,QQ:289965371!

 

随着Sybase被完全整合到SAP下,Sybase原来的支持网站被SAP Support Portal取代。
只有购买了SAP服务的用户才能使用账号登录SAP Support Portal进行介质下载、补丁升级、报Incident等。
目前,原Sybase所有产品(包括:Adaptive Server Enterprise、Sybase IQ、Replication Server、PowerDesigner等)的官方手册仍然可以从http://infocenter.sybase.com/help/index.jsp进行浏览或下载。暂不清楚该网站http://infocenter.sybase.com/help/index.jsp何时会被完全迁移到SAP Support上!
Sybase官方手册英文版有html和pdf两种格式,而中文版手册只有pdf一种格式。为了国内Sybase用户更方便、快捷地搜索Sybase常见产品的官方手册内容,特将中文版Sybase官方手册转为html格式!
Sybase产品官方手册中文版的html格式所有内容的版权归SAP公司所有!本博客站长是Sybase数据库的铁杆粉丝!

如有Sybase数据库技术问题需要咨询,请联系我!

  QQ :289965371 点击这里给我发消息
  Email:

以下官方手册为ASE 15.7 ESD#2中文版:

  1. 新增功能公告 适用于 Windows、Linux 和 UNIX 的 Open Server 15.7 和 SDK 15.7
  2. 新增功能摘要
  3. 新增功能指南
  4. ASE 15.7 发行公告
  5. 配置指南(windows)
  6. 安装指南(windows)
  7. 参考手册:构件块
  8. 参考手册:命令
  9. 参考手册:过程
  10. 参考手册:表
  11. Transact-SQL® 用户指南
  12. 系统管理指南,卷 1
  13. 系统管理指南,卷 2
  14. 性能和调优系列:基础知识
  15. 性能和调优系列:锁定和并发控制
  16. 性能和调优系列:监控表
  17. 性能和调优系列:物理数据库调优
  18. 性能和调优系列:查询处理和抽象计划
  19. 性能和调优系列:使用 sp_sysmon 监控 Adaptive Server
  20. 性能和调优系列:利用统计分析改进性能
  21. 程序员参考 jConnect for JDBC 7.0.7
  22. Adaptive Server Enterprise 中的 Java
  23. 组件集成服务用户指南
  24. Ribo 用户指南
  25. 内存数据库用户指南
  26. Sybase Control Center for Adaptive Server® Enterprise
  27. 安全性管理指南
  28. 实用程序指南

 


< 上一个 | 内容 | 下一步 >

raiserror

说明 在用户屏幕上输出用户定义的错误消息并设置系统标记来记录发生了错 误这一情况。

语法 raiserror error_number

[{ format_string | @local_variable}] [, arg_list] [with errordata restricted_select_list]

参数 error_number

是值大于 17,000 的局部变量或整数。如果 error_number 介于 17,000 19,999 之间,并且 format_string 缺失或为空 (""),则 Adaptive Server master 数据库的 sysmessages 表中检索错误消息文本。这些错误消息 主要供系统过程使用。

如果 error_number 等于或大于 20,000,且 format_string 缺失或为空,则 raiserror 从最初发出该查询或存放该存储过程的数据库中的 sysusermessages 表中检索消息文本。 Adaptive Server 尝试用 @@langid 的当前设置所定义的语言从 sysmessages sysusermessages 检索消息。

format_string

是一个最大长度为 1024 字节的字符串。可以选择用局部变量声明

format_string,并在 raiserror 中使用该变量 (请参见 @local_variable)。

raiserror 可识别要输出的字符串中的占位符。格式字符串最多可包含 20 个任意顺序的唯一占位符。将消息文本发送到客户端时,使用 format_string 后接参数的格式化内容替换这些占位符。

为了在用其它语法结构将格式字符串转换为某种语言时,可以对参数 重新排序,要对占位符进行编号。参数所用占位符的显示形式如下: “%nn!”— 一个百分比符号 (%),后接一个 1 20 之间的整数,后面 再接一个感叹号 (!)。整数表示参数列表中字符串中的参数编号。 “%1!”“%1!”是原始版本中的第一个参数,“%2!”是第二个参数, 依此类推。

用这种方法指示参数的位置可以使转换正确,即使参数出现在目标语 言中的顺序与其在原始语言中的顺序不同也是如此。

例如,假定以下是一条英文消息:

%1! is not allowed in %2!.

此消息的德语版本是:


%1! ist in %2!

此消息的日语版本是:

image


在此示例中,“ %1!”在所有三种语言中都表示同一参数,“%2!”也 是如此。此示例显示了翻译格式中有时需要对参数重新排序。

@local_variable

是一个包含 format_string 值的局部变量。它必须是 char varchar 类 型,且必须在使用它的批处理或过程中予以声明。

arg_list

是一系列由逗号分隔的变量或常量。 arg_list 是可选的,除非提供了包 含“% nn !”形式的占位符的格式字符串。参数可以是除 text image 以外的任何数据类型;在出现在最终的字符串中之前,它将被转换为 char 数据类型。

如果参数求值结果为 NULLAdaptive Server 会将它转换成零长度的

char 字符串。

with errordata

Client-Library™ 程序提供扩展错误数据。

restricted_select_list

包含一个或多个下列项目:

*”,表示按 create table 顺序排列的所有列。

按您希望的查看顺序排列的列名称列表。当选择现有的 IDENTITY 列时,可使用由表名限定的 syb_identity 关键字在必要 的地方替代实际的列名。

向结果表中添加新 IDENTITY 列的规范:

column_name = identity (precision)

缺省列标题 (列名)的替代内容,格式如下:

column_heading = column_name column_name column_heading


column_name as column_heading

在所有这些格式中,都可以将列标题用引号引起来。如果标题不 是有效的标识符 (即标题是保留字、标题以特殊字符开始或者标 题包含空格或标点符号),就必须用引号引起来。

表达式 (列名、常量、函数、任何由算术运算符或逐位运算符连 接起来的列名、常量和函数的组合,也可以是子查询)。

内置函数或集合。

上面所列项目的任意组合。

restricted_select_list 也可以按如下形式执行变量赋值:

@variable = expression

[, @variable = expression ...]

restricted_select_list 的限制包括:

不能将变量赋值与任何其它 restricted_select_list 选项合并。

不能在 restricted_select_list 中使用 fromwhere 或其它 select 子句。

不能在 restricted_select_list 中使用 “*”表示所有列。 请参见 《Transact-SQL 用户指南》。

示例 示例 1 如果没有找到用 @ tabname 参数提供的表,则该示例存储过程将 返回一个错误:

create procedure showtable_sp @tabname varchar (18) as

if not exists (select name from sysobjects where name = @tabname)

begin

raiserror 99999 "Table %1! not found.",

@tabname

end else

begin

select sysobjects.name, type, crdate, indid from sysindexes, sysobjects

where sysobjects.name = @tabname and sysobjects.id = sysindexes.id

end

示例 2 本示例在 sysusermessages 中添加一条消息,然后使用 raiserror 测 试该消息,并提供替换参数:

sp_addmessage 25001,

"There is already a remote user named '%1!'


for remote server '%2!'."


raiserror 25001, jane, myserver

示例 3 本示例使用 with errordata 选项将扩展错误数据 column server 返 回给客户端应用程序,以说明涉及的列和所用的服务器:

raiserror 20100 "Login must be at least 5 characters long" with errordata "column" = "login", "server" = @@servername

用法 用户定义的消息可以即席生成 (如示例 1 和示例 3),或者可以将 其添加到系统表 sysusermessages 中供所有应用程序使用 (如示例 2)。可使用 sp_addmessage 将消息添加到 sysusermessages 中;使用 sp_getmessage 检索消息以供 print raiserror 使用。

用户定义的错误消息的错误号必须大于 20,000。最大值为 2,147,483,647 (231 -1)

所有用户定义错误消息的严重级都是 16。这表示用户已经犯了非致 命错误。

替换后, format_string 加上所有参数的最大输出字符串长度是

1024 个字节。

如果在格式字符串中使用占位符,请记住:对于字符串中的每个占 位符 n,占位符 1 n-1 也必须存在于同一字符串中,不过它们不必 以数值顺序出现。例如,不允许将占位符 1 3 放在一个格式字符

串中,却不把占位符 2 也放在此字符串中。如果在格式字符串中省 略了一个数字,则执行 raiserror 时会生成错误消息。

如果相对于 format_string 中的占位符来说参数太少,Adaptive Server 会显示一条错误消息并中止当前执行的语句,但不中止任何打开的 事务。但是,如果此错误发生在存储过程中, Adaptive Server 会继 续在名为 raiserror 的行执行下一个语句,任何打开的事务仍然打 开。如果此过程发生在 SQL 代码批处理中, Adaptive Server 会中止 该批处理,任何打开的事务仍然打开。

若要在错误消息中包括实际的百分号,请在 format_string 中使用两 个百分号 (“%%”)。如果 format_string 中包括不是用作占位符的 单个百分号 (“%”), Adaptive Server 将返回错误消息。

如果参数求值结果为 NULL,它将被转换成零长度的 char 字符串。 如果不希望输出中出现零长度字符串,可使用 isnull 函数。

当执行 raiserror 时,错误号放置在全局变量 @@error 中,该变量存 储系统最新生成的错误号。


如果希望将错误号存储在 @@error 中,请使用 raiserror,而不要使 用 print

若要在 raiserror 中包括 arg_list,请在 error_number 后加一个逗号,或 者在第一个参数前加上 format_string。若要包括扩展错误数据,请用 空格 (不是逗号)将 extended_value error_numberformat_string arg_list 隔开。

标准 符合 ANSI SQL 的级别Transact-SQL 扩展。

权限 使用 raiserror 无需任何权限。

另请参见 命令 declare, print.

系统过程 sp_addmessage, sp_getmessage.




--------------------------------------华丽的分割线-------------------------------------------------------------------------
之前就已经研发成功了能够从Sybase SQL Anywhere的DB文件中恢复数据的工具:ReadASADB。
此工具支持ASA v5.0,v6.0,v7.0,v8.0,v9.0,v10.0,v11.0,v12.0等版本。
恢复Sybase SQL Anywhere的工具在国内应该算首创。

ReadASADB功能
能够从损坏的SQL Anywhere数据文件(.db)和UltraLite数据文件(.udb)上提取数据的非常规恢复工具

  1. 适用于所有的SQL Anywhere版本    包括:5.x,6.x,7.x,8.x,9.x,10.x,11.x,12.x
  2. 适用于所有的UltraLite版本
  3. 能够恢复出来表结构和数据
  4. 能够恢复自定义数据类型
  5. 能够恢复存储过程等对象的语法
  6. 能够导出到目标数据库
  7. 能够导出到SQL文件并生成导入脚本
  8. 支持多种字符集  包括:cp850、cp936、gb18030、utf8等
  9. 能够恢复未加密或者简单加密类型的数据
  10. 简单易用
  11. 限制:不支持AES加密的数据文件
请参考:研发成功了从Sybase SQL Anywhere的DB文件上恢复数据的工具
            SQL Anywhere数据库非常规恢复工具ReadASADB使用介绍

ReadASADB适用场景

各种误操作:

  1. 误截断表(truncate table)
  2. 误删除表(drop table)
  3. 错误的where条件误删数据
  4. 误删除db或log文件
  5. 误删除表中的字段

本工具的应用场景:

1.因为物理磁盘故障、操作系统、系统软件方面或者掉电等等原因导致的Sybase SQL Anywhere数据库无法打开的情况;
2.误操作,包括truncate table,drop table,不正确的where条件导致的误删除等;
Sybase SQL Anywhere无法打开时,比较常见的错误是:Assertion failed。
如:
1、Internal database error *** ERROR *** Assertion failed:201819 (8.0.1.2600) Checkpoint log: invalid bitmap page -- transaction rolled back
2、Internal database error *** ERROR *** Assertion failed:201819 (8.0.1.2600) Page number on page does not match page requested -- transaction rolled back
3、Internal database error *** ERROR *** Assertion failed:200502 (9.0.2.2451) Checksum failure on page 23 -- transaction rolled back
4、File is shorter than expected
5、Internal database error *** ERROR *** Assertion failed: 201116 Invalid free list index page found while processing checkpoint log -- transaction rolled back
6、*** ERROR *** Assertion failed: 51901 Page for requested record not a table page or record not present on page等等。
+-------------------------------------华丽的分割线-------------------------------------------------------------------------