随着Sybase被完全整合到SAP下,Sybase原来的支持网站被SAP Support Portal取代。
只有购买了SAP服务的用户才能使用账号登录SAP Support Portal进行介质下载、补丁升级、报Incident等。
目前,原Sybase所有产品(包括:Adaptive Server Enterprise、Sybase IQ、Replication Server、PowerDesigner等)的官方手册仍然可以从https://infocenter.sybase.com/help/index.jsp进行浏览或下载。暂不清楚该网站https://infocenter.sybase.com/help/index.jsp何时会被完全迁移到SAP Support上!
Sybase官方手册英文版有html和pdf两种格式,而中文版手册只有pdf一种格式。为了国内Sybase用户更方便、快捷地搜索Sybase常见产品的官方手册内容,特将中文版Sybase官方手册转为html格式!
Sybase产品官方手册中文版的html格式所有内容的版权归SAP公司所有!本博客站长是Sybase数据库的铁杆粉丝!
如有Sybase数据库技术问题需要咨询,请联系我!
以下官方手册为SAP IQ 16.0 SP03中文版:
CREATE EVENT 语句
定义事件及其关联处理程序以自动执行预定操作。另外还定义了预定操作。 快速链接:
转至参数 (第 132 页) 转至示例 (第 134 页) 转至用法 (第 135 页)
转至标准 (第 136 页) 转至权限 (第 136 页)
语法
CREATE EVENT event-name
[ WHERE trigger-condition [ AND trigger-condition ], ...]
| SCHEDULE schedule-spec, … ]
…[ ENABLE | DISABLE ]
…[ AT { CONSOLIDATED | REMOTE | ALL } ]
…[ HANDLER
BEGIN
…
END ]
BackupEnd
| “Connect”
| ConnectFailed
| DatabaseStart
| DBDiskSpace
| “Disconnect”
| GlobalAutoincrement
| GrowDB
| GrowLog
| GrowTemp
| IQMainDBSpaceFree
| IQTempDBSpaceFree
| LogDiskSpace
| “RAISERROR”
| ServerIdle
| TempDiskSpace
trigger-condition - (back to Syntax)
event_condition( condition-name )
{ =
| <
| >
| !=
| <=
| >= } value
schedule-spec - (back to Syntax) [ schedule-name ]
{ START TIME start-time | BETWEEN start-time AND end-time } [ EVERY period { HOURS | MINUTES | SECONDS } ]
[ ON { ( day-of-week, … ) | ( day-of-month, … ) } ]
[ START DATE start-date ]
参数
(返回顶部) (第 131 页)
• event-name – 事件都有创建者,即创建事件的用户。事件处理程序只能在创建者 的许可下执行。这与存储过程的执行是一样的。无法创建其他用户所拥有的事件。 通过查询系统表 SYSEVENT 可以列出事件名称。例如:
SELECT event_id, event_name FROM SYS.SYSEVENT
• event-type – 一组系统定义事件类型中的一种。事件类型不区分大小写。要指定该
event-type 触发事件的条件,请使用 WHERE 子句。
• DiskSpace – 如果数据库包含 DiskSpace 类型之一的事件处理程序,则数据库 服务器每隔 30 秒对每一个与相关文件关联的设备上的可用空间进行检查。 如果数据库有多个 dbspace 位于不同的驱动器,则 DBDiskSpace 会检查每个驱 动器并根据最低的可用空间执行操作。
• LogDiskSpace – 检查事务日志和任何事务日志镜像的位置,并根据最小的可 用空间进行报告。
• Globalautoincrement – 当表的 GLOBAL AUTOINCREMENT 缺省值低于其范 围末尾的百分之一时触发。该处理程序的典型操作可能是为 GLOBAL_DATABASE_ID 子句请求新值。
对这种事件类型,可以使用以 RemainingValues 为参数的 EVENT_CONDITION 函 数。
• ServerIdle – 如果数据库包含 ServerIdle 类型的事件处理程序,则服务器每隔 30
秒便会检查一次服务器的活动。
• WHERE 子句 – 此触发条件确定在什么情况下触发事件。例如,如果希望在含有 事务日志的磁盘上有 80% 以上已满时执行操作,请使用以下触发条件:
...
WHERE event_condition( 'LogDiskSpacePercentFree' ) < 20
...
EVENT_CONDITION 函数的参数必须对该事件类型有效。可以使用多个 AND 条 件来构成 WHERE 子句,但不能使用 OR 条件或其它条件。
• SCHEDULE – 指定调度操作发生的时间。时间序列充当事件处理程序中定义的 关联操作的一组触发条件。可以为给定事件及其关联的处理程序创建多个调度。 这样可以实现复杂的调度。存在多个调度时必须提供调度名称,而只有一个调度 时,调度名称的提供是可选的。
通过查询系统表 SYSSCHEDULE,可以列出调度名称。例如:
SELECT event_id, sched_name FROM SYS.SYSSCHEDULE
每个事件都具有唯一的事件 ID。可使用 SYSEVENT 和 SYSSCHEDULE 的 event_id 列将事件与关联的调度匹配。
在非反复出现的调度事件已过去之后,将删除其调度,但不删除事件处理程序。
调度事件的时间从调度创建时开始计算,并在事件处理程序完成执行时重新计算。 调度事件的时间从调度创建时开始计算,并在事件处理程序完成执行时重新计算。 如果指示事件处理程序在 9:00 和 5:00 之间每隔一小时运行一次,并且它需要 65
分钟来执行,则它将分别在 9:00、11:00、1:00、3:00 和 5:00 运行。如果要重叠执 行,则必须创建多个事件。
以下是调度定义的子句:
• START DATE – 调度事件开始发生的日期。缺省为当前日期。
• START TIME – 调度事件的每天中的最初调度时间。如果指定了 START DATE, 则 START TIME 引用该日期。如果未指定 START DATE,则 START TIME 在 当天(除非该时间已经过去)和随后的每一天。
• BETWEEN … AND – 一天中的一段时间,在该时间段之外,没有调度的时间。 如果指定了 START DATE ,则调度的时间直到该日期才存在。
• EVERY – 连续调度事件之间的间隔。调度的事件仅在当天的 START TIME 之 后或在 BETWEEN...AND 指定的范围内发生。
• ON – 调度事件发生日的列表。缺省值为每天。事件发生日可指定为周内某日 或月内某日。
周内某日是周一、周二等等。也可以使用日期的简写形式,如 Mon、Tue 等 等。数据库服务器可以识别以 SAP Sybase IQ 支持的所有语言表示的完整日期 名和简写日期名。
月内某日是从 0 到 31 的整数。0 值表示任何月的最后一天。 每当调度事件的处理程序完成后,都会计算下次调度时间和日期。
• 如果使用了 EVERY 子句,则查看下次调度时间是否在当天,以及是否在 BETWEEN...AND 范围结束之前。如果是,即为下次调度时间。
• 如果下一个调度时间不在当天,请查找下一个执行事件的日期。
• 查找此日期的 START TIME,或 BETWEEN...AND 范围的开始时间。
• ENABLE | DISABLE – 缺省情况下,启用事件处理程序。指定 DISABLE 后,即 使是在调度时间内或满足触发条件时,事件处理程序也不会执行。但是,TRIGGER EVENT 语句不会导致已禁用的事件处理程序被执行
• AT – 要在 SQL Remote 设置中的远程数据库或统一数据库上执行事件,请使用此 子句来限制在哪一个数据库中处理事件。缺省情况下,所有数据库均执行该事件。
• HANDLER – 每个事件都有一个处理程序。与存储过程的主体一样,处理程序是 一个复合语句。但这两者间存在一些差异:您可以在复合语句中使用 EXCEPTION 子句处理错误,但不能使用存储过程中提供的 EXCEPTION RESUME 子句。
(返回顶部) (第 131 页)
• 示例 1 – 指示数据库服务器每天 1 a.m. 执行自动增量备份:
CREATE EVENT IncrementalBackup SCHEDULE
START TIME '1:00AM' EVERY 24 HOURS HANDLER
BEGIN
BACKUP DATABASE INCREMENTAL
TO 'backups/daily.incr' END
• 示例 2 – 指示数据库服务器每 10 minutes 调用一次系统存储过程 sp_iqspaceused,然后在表中存储返回的当前日期和时间、当前数据库连接数以 及关于主 IQ 存储库和临时 IQ 存储库使用情况的当前信息:
CREATE TABLE mysummary(dt DATETIME, users INT, mainKB UNSIGNED BIGINT, mainPC UNSIGNED INT,
tempKB UNSIGNED BIGINT, tempPC UNSIGNED INT) ;
CREATE EVENT mysummary SCHEDULE sched_mysummary
START TIME '00:01 AM' EVERY 10 MINUTES HANDLER
BEGIN
DECLARE mt UNSIGNED BIGINT; DECLARE mu UNSIGNED BIGINT; DECLARE tt UNSIGNED BIGINT; DECLARE tu UNSIGNED BIGINT;
DECLARE conncount UNSIGNED INT;
SET conncount = DB_PROPERTY('ConnCount'); CALL SP_IQSPACEUSED(mt,mu,tt,tu);
INSERT INTO mysummary VALUES( NOW(),
conncount, mu, (mu*100)/mt, tu, (tu*100)/tt );
END;
• 示例 3 – 当含有事务日志文件的设备中的可用磁盘空间小于 30% 时,在服务器日 志中张贴一条消息,但执行处理程序的频率不超过每 300 秒一次。
CREATE EVENT LowTxnLogDiskSpace TYPE DBDiskSpace
WHERE event_condition( 'DBFreePercent' ) < 30 AND event_condition( 'Interval' ) >= 300 HANDLER
BEGIN
message 'Disk space for Transaction Log is low.'; END;
用法
(返回顶部) (第 131 页)
事件定义包括两个截然不同的方面。触发器条件可以是一个事件,如磁盘使用超出了 定义的阈值。调度是一组时间,其中每个时间充当一个触发器条件。当满足触发器条 件时,执行事件处理程序。事件处理程序包含一个或多个在复合语句 (BEGIN... END) 内指定的操作。
如果未提供触发条件或调度说明,则只有显式 TRIGGER EVENT 语句才能触发事件。 在开发过程中,您可能要使用 TRIGGER EVENT 来开发和测试事件处理程序,并可能 要在测试完成后添加调度或 WHERE 子句。
任何事件错误都会记录到数据库服务器控制台中。 触发事件处理程序后,服务器通过使用 EVENT_PARAMETER 函数,来使上下文信息
(例如,导致事件被触发的连接 ID)可供事件处理程序使用。
注意: 虽然事件中不允许包含返回结果集的语句,但您可以允许事件调用存储过程 并将过程结果插入临时表中。
副作用:
• 自动提交。
• 如果在执行期间未检测到任何错误,则将提交事件处理程序的操作。如果检测到 错误,将回退。
(返回顶部) (第 131 页)
• SQL - ISO/ANSI SQL 语法的服务商扩充。
• SAP Sybase 数据库产品 - 不受 Adaptive Server 支持。
(返回顶部) (第 131 页) 需要以下特权之一:
• MANAGE ANY EVENT 系统特权。
• CREATE ANY OBJECT 系统特权。
事件处理程序以事件所有者特权在一个单独的连接上执行。要使用 MANAGE ANY EVENT 系统特权以外的其它特权进行执行,可以在事件处理程序内部调用过程:使 用过程所有者的权限执行过程。此单独连接不计入个人数据库服务器只能有 10 个连 接的限制中。
另请参见
• ALTER EVENT 语句 (第 17 页)
• COMMENT 语句 (第 103 页)
• DROP 语句 (第 266 页)
• TRIGGER EVENT 语句 (第 474 页)
Sybase SQL Anywhere数据库恢复工具ReadASADB:
之前就已经研发成功了能够从Sybase SQL Anywhere的DB文件中恢复数据的工具: ReadASADB。此工具支持ASA v5.0, v6.0, v7.0, v8.0, v9.0, v10.0, v11.0, v12.0, v16.0, v17.0等版本。
能够从损坏的SQL Anywhere数据文件(.db)和UltraLite数据文件(.udb)上提取数据的非常规恢复工具。
恢复Sybase SQL Anywhere的工具在国内处于领先水平。
Sybase SQL Anywhere数据库恢复工具ReadASADB功能
能够从损坏的SQL Anywhere数据文件(.db)和UltraLite数据文件(.udb)上提取数据的非常规恢复工具
- 适用于所有的SQL Anywhere版本 包括:5.x,6.x,7.x,8.x,9.x,10.x,11.x,12.x,16.x,17.x
- 适用于所有的UltraLite版本
- 能够恢复出来表结构和数据
- 能够恢复自定义数据类型
- 能够恢复存储过程等对象的语法
- 能够导出到目标数据库
- 能够导出到SQL文件并生成导入脚本
- 支持多种字符集,包括:cp850、cp936、gb18030、utf8等
- 能够恢复未加密或者简单加密类型的数据
- 简单易用
- 限制:不支持AES加密的数据文件
SQL Anywhere数据库非常规恢复工具ReadASADB使用介绍
Sybase SQL Anywhere数据库恢复工具ReadASADB适用场景
各种误操作:
- 误截断表(truncate table)
- 误删除表(drop table)
- 错误的where条件误删数据
- 误删除db或log文件
- 误删除表中的字段
Sybase SQL Anywhere数据库恢复工具ReadASADB的应用场景:
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
7、*** ERROR *** Assertion failed: 201417 (7.0.4.3541) Invalid count or free space offset detected on a table page
8、Internal database error *** ERROR *** Assertion failed: 201425 (8.0.3.5594) Invalid count or free space offset detected on a free list page -- transaction rolled back.
9、Internal database error *** ERROR *** Assertion failed: 100702 (8.0.1.2600) Unable to modify indexes for a row referenced in rollback log -- transaction rolled back
Sybase ASE数据库恢复工具READSYBDEVICE:
一个不依赖数据库管理系统、直接从Sybase数据库设备文件上提取数据的业内领先的恢复工具!能够从损坏的Sybase ASE设备文件(.dat)上提取数据的非常规恢复工具。
Sybase ASE数据库恢复工具READSYBDEVICE的主要功能:
- 被勒索病毒加密数据文件及备份文件情况下的恢复;
- 系统崩溃只剩下数据文件的情况下的恢复,甚至数据库文件不存在而只有损坏的备份文件情况下的恢复;
- 因断电、硬盘坏道等造成数据库文件损坏情况下的恢复;
- delete数据恢复、误update数据恢复、误删除表(drop)恢复、误truncate表恢复 等;
- 各种Sybase内部系统表损坏、索引错误的修复;
- master数据库损坏而无法正常运行情况下的恢复;
- Sybase数据库被标记为可疑,不可用等情况的恢复;
- Sybase数据库中数据文件内部出现坏块情况下的恢复;
- Sybase数据库无数据文件但有日志文件的情况下的恢复;
- Sybase数据库只有数据文件无任何日志文件的情况下的恢复;
- Sybase数据文件被误删除情况下的碎片提取恢复;
- 磁盘阵列上的Sybase数据库被误格式化情况下的数据库恢复;
- 数据库sysobjects等系统表损坏无法正常应用情况下的恢复;
- Sybase数据库还原数据库出现失败情况下的恢复;
- Sybase数据库只剩下损坏的备份文件情况下的恢复。
Sybase ASE数据库恢复工具READSYBDEVICE支持的版本:
Sybase ASE 11.0.x,11.5.x,11.9.x,12.0.x,12.5.x,15.0.x,15.5.x,15.7.x,16.0.xSQL Server数据库恢复工具SQLRescue:
一个不依赖数据库管理系统、直接从SQL Server数据库文件上提取数据的业内领先的恢复工具!能够从损坏的SQL Server数据库文件(.mdf)上提取数据的非常规恢复工具。
SQL Server数据库恢复工具SQLRescue的主要功能:
- 系统崩溃只剩下数据文件的情况下的恢复,即无日志文件或者日志文件损坏情况下的恢复;
- 断电导致数据库文件损坏情况下的恢复;
- 硬盘坏道造成数据库损坏情况下的恢复;
- 数据文件内部存在坏页情况下的恢复;
- 企业管理器误删除数据表记录,管理软件误删除数据表记录的恢复;
- 并闩锁错误、格式化、误删除后导致软件不能使用的情况;
- 无法读取并闩锁页sysindexes失败情况下的修复;
- 数据文件被误删除情况下的碎片提取恢复;
- 系统表损坏、索引错误、误删除数据库表、删除记录的数据找回;
- master数据库损坏而无法正常运行情况下的恢复;
- 数据文件无法附加情况下的数据恢复;
- 数据库被标记为可疑,质疑,不可用等情况的恢复;
- 数据库sysobjects等系统表损坏情况下的恢复;
- 数据被误(drop、delete、truncate)删除表数据的恢复,误update后的数据恢复等;
- 还原时报一致性错误,错误823等情况下的数据恢复,各种错误提示的数据库文件修复;
- 数据库被误格式化等情况下的数据库恢复;
- 日志收缩造成数据库损坏情况下的恢复;
- 仅剩损坏的备份文件情况下的恢复。
SQL Server数据库恢复工具SQLRescue技术特点:
只要SQL Server数据库的数据文件存在,我们就有办法帮您从数据文件中找回重要数据。- 从数据文件中直接恢复数据
- 不能附加时直接恢复数据并生成新的数据库
- 系统表损坏的数据库修复
- 快速修复SQL 823错误、连接中断错误
SQL Server数据库恢复工具SQLRescue支持的版本:
Microsoft SQL Server 7.0, 2000, 2005, 2008, 2008R2, 2012, 2014, 2016, 2017,2019。+-------------------------------------华丽的分割线-------------------------------------------------------------------------