随着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中文版:
db_backup 函数 尽管此函数提供了一种向应用程序添加备份功能的方法,但建议您使用 BACKUP DATABASE 语句来完成此任务。
语法
void db_backup( SQLCA * sqlca , int op ,
int file_num,
unsigned long page_num ,
struct sqlda * sqlda );
参数
• sqlca – 指向 SQLCA 结构的指针。
• op – 要执行的动作或操作。
• file_num – 数据库的文件数。
• page_num – 数据库的页数。0 至最大页数减 1 范围内的一个值。
• sqlda – 指向 SQLDA 结构的指针。
Authorization
必须以具有 BACKUP DATABASE 系统特权的用户身份进行连接,或者具有 SYS_RUN_REPLICATION_ROLE 系统角色。
注释
尽管此函数提供了一种向应用程序添加备份功能的方法,但建议您使用 BACKUP DATABASE 语句来完成此任务。
执行的操作取决于 op 参数的值:
• DB_BACKUP_START – 必须先调用此函数,然后才能开始备份。对于任何给定 的数据库服务器,一个数据库一次只能运行一个备份。在备份完成之前禁用数据 库检查点(直到使用 op 值 DB_BACKUP_END 调用 db_backup)。如果备份无法 启动,则 SQLCODE 为 SQLE_BACKUP_NOT_STARTED。否则,将 sqlca 的 SQLCOUNT 字段设置为数据库页的大小。一次一页地对备份进行处理。
忽略 file_num、page_num 和 sqlda 参数。
• DB_BACKUP_OPEN_FILE – 打开由 file_num 指定的数据库文件,这样便可使用 DB_BACKUP_READ_PAGE 对指定文件的页进行备份。根数据库文件和事务日志 文件的有效文件编号分别为 0 到 DB_BACKUP_MAX_FILE 和 0 到 DB_BACKUP_TRANS_LOG_FILE。如果指定的文件不存在,则 SQLCODE 为 SQLE_NOTFOUND。否则,SQLCOUNT 包含文件中的页数,SQLIOESTIMATE
包含一个标识数据库文件创建时间的 32 位值 (POSIX time_t),操作系统文件名位于 SQLCA 的 sqlerrmc 字段中。
忽略参数 page_num 和 sqlda。
• DB_BACKUP_READ_PAGE – 读取由 file_num 指定的数据库文件的一页。使用 DB_BACKUP_OPEN_FILE 操作对 db_backup 调用成功后会在 SQLCOUNT 中返回 一个页数,page_num 值应介于 0 到此页数减去一得到的数之间。否则,SQLCODE 将设置为 SQLE_NOTFOUND。sqlda 描述符应使用一个指向缓冲区的 DT_BINARY 或 DT_LONG_BINARY 类型的变量建立。使用 DB_BACKUP_START 操作调用 db_backup 时会在 SQLCOUNT 字段中返回一个大小值,该缓冲区应足以保存这一 大小的二进制数据。
DT_BINARY 数据包含一个后跟实际二进制数据的两字节长度值,因此缓冲区必 须比页大小大两个字节。
注意: 此调用会在缓冲区中制作指定数据库页的一个副本,但应由应用程序将缓 冲区保存到某种备份介质。
• DB_BACKUP_READ_RENAME_LOG – 此操作与 DB_BACKUP_READ_PAGE 只有一点不同:事务日志的最后一页返回之后,数据库服务器会重命名事务日志 并启动一个新的事务日志。
如果数据库服务器无法在当前时间重命名日志(例如,在 7.0.x 版或更早版本的数 据库中可能存在未完成的事务),则会设置 SQLE_BACKUP_CANNOT_RENAME_LOG_YET 错误。在这种情况下,不要使用 返回的页,而是要重新发出请求,直到收到 SQLE_NOERROR,然后写入页。继 续读取页,直到收到 SQLE_NOTFOUND 条件。
可能会在多个页上多次返回 SQLE_BACKUP_CANNOT_RENAME_LOG_YET 错 误。您应该在重试循环中增加延迟,以便不会因请求过多而降低服务器的速度。
当您收到 SQLE_NOTFOUND 条件时,事务日志已经成功备份且文件已经重命名。 旧日志文件的名称在 SQLCA 的 sqlerrmc 字段中返回。
您应在 db_backup 调用后检查 sqlda->sqlvar[0].sqlind 的值。如果此值大于零,则 最后一个日志页已经写入且日志文件已经重命名。新名称仍然在 sqlca.sqlerrmc 中,但 SQLCODE 值是 SQLE_NOERROR。
此后,您不应再次调用 db_backup(除非要关闭文件并完成备份),否则,您会获 得备份日志文件的第二份副本并收到 SQLE_NOTFOUND。
• DB_BACKUP_CLOSE_FILE – 处理完一个文件后必须调用此函数以关闭由
file_num 指定的数据库文件。 忽略参数 page_num 和 sqlda。
• DB_BACKUP_END – 备份结束时必须调用此函数。在此备份结束之前,任何其
它备份都无法启动。会再次启用检查点。 忽略 file_num、page_num 和 sqlda 参数。
• DB_BACKUP_PARALLEL_START – 开始并行备份。与 DB_BACKUP_START
类似,对于任何给定的数据库服务器,一个数据库一次只能运行一个备份。在备 份完成之前禁用数据库检查点(直到使用 op 值 DB_BACKUP_END 调用
db_backup)。如果备份无法启动,则将收到 SQLE_BACKUP_NOT_STARTED。 否则,将 sqlca 的 SQLCOUNT 字段设置为数据库页的大小。
file_num 参数指示数据库服务器在事务日志的最后一页返回之后重命名事务日志 并启动一个新的日志。如果此值非零,则将重命名或重新启动事务日志。否则, 不会重命名或重新启动事务日志。使用此此参数后将不必执行 DB_BACKUP_READ_RENAME_LOG 操作,并行备份操作期间不允许进行该操 作。
page_num 参数告知数据库服务器客户端缓冲区的最大大小(以数据库页为单 位)。在服务器端,并行备份读取程序会尝试读取连续页块 - 此值可告知服务器 应为这些块分配多大的内存空间:传递 nnn 值可告知服务器:客户端一次将从服 务器接收最多 nnnn 个数据库页。如果服务器无法为 nnn 页的块分配足够内存,服 务器可能会返回小于 nnn 的页块。如果客户端在调用 DB_BACKUP_PARALLEL_START 之前不清楚数据库页的大小,则可通过 DB_BACKUP_INFO 操作将此值提供给服务器。必须在首次调用前提供此值,以 便检索备份页 (DB_BACKUP_PARALLEL_READ)。
注意: 如果使用 db_backup 开始并行备份,db_backup 不会创建写入程序线程。 db_backup 的调用程序必须接收数据并充当写入程序。
• DB_BACKUP_INFO – 此参数为数据库服务器提供关于并行备份的其它信息。 file_num 参数指示所提供信息的类型,page_num 参数提供值。您可以使用 DB_BACKUP_INFO 指定以下其它信息:
• DB_BACKUP_INFO_PAGES_IN_BLOCK – page_num 参数包含应在同一块 内发回的最大页数。
• DB_BACKUP_INFO_CHKPT_LOG – 这是相当于 BACKUP DATABASE 语句的 WITH CHECKPOINT LOG 选项的客户端选项。page_num 的值 DB_BACKUP_CHKPT_COPY 指示 COPY,而值 DB_BACKUP_CHKPT_NOCOPY 指示 NO COPY。如果未提供此值,则缺省为 COPY。
• DB_BACKUP_PARALLEL_READ – 此操作从数据库服务器上读取页块。调用 此操作前,使用 DB_BACKUP_OPEN_FILE 操作打开所有要备份的文件。 DB_BACKUP_PARALLEL_READ 会忽略 file_num 和 page_num 参数。
sqlda 描述符应使用一个指向缓冲区的 DT_LONGBINARY 类型的变量建立。缓冲 区大小应足以保存 nnn 页(在 DB_BACKUP_START_PARALLEL 操作或 DB_BACKUP_INFO 操作中指定)大小的二进制数据。
服务器为特定数据库文件返回连续数据库页块。块内第一页的页码在 SQLCOUNT 字段中返回。页所属的文件号在 SQLIOESTIMATE 字段中返回,此值与在 DB_BACKUP_OPEN_FILE 调用中使用的文件号之一相匹配。返回的数据大小存 储在 DT_LONGBINARY 变量的 stored_len 字段中,并且总是数据库页面大小的倍 数。当此调用所返回的数据内包含某个给定文件的连续页块时,单独的数据块不 一定会按顺序返回,某一数据库文件的所有页也不一定会在另一数据库文件的页 之前全部返回。调用程序应该准备接收不按顺序的另一单个文件的一部分或在任 何给定调用中打开的任何数据库文件的一部分。
应用程序应该重复调用此操作,直到读取的数据大小为 0 或者 sqlda->sqlvar[0].sqlind 的值大于 0。如果备份启动时重命名/重新启动了事务日志,则 SQLERROR 可能 设置为 SQLE_BACKUP_CANNOT_RENAME_LOG_YET。在这种情况下,不要使 用返回的页,而是要重新发出请求,直到收到 SQLE_NOERROR,然后写入数据。 可能会在多个页上多次返回 SQLE_BACKUP_CANNOT_RENAME_LOG_YET 错 误。您应该在重试循环中增加延迟,以便不会因请求过多而降低数据库服务器的 速度。继续读取页,直到满足上述两个条件之一。
dbbackup 实用程序使用下面的算法。这不是 C 代码,不包括错误检查。
sqlda->sqld = 1;
sqlda->sqlvar[0].sqltype = DT_LONGBINARY
/* Allocate LONGBINARY value for page buffer. It MUST have */
/* enough room to hold the requested number (128) of database pages
*/
sqlda->sqlvar[0].sqldata = allocated buffer
/* Open the server files needing backup */ for file_num = 0 to DB_BACKUP_MAX_FILE
db_backup( ... DB_BACKUP_OPEN_FILE, file_num ... ) if SQLCODE == SQLE_NO_ERROR
/* The file exists */ num_pages = SQLCOUNT file_time = SQLE_IO_ESTIMATE
open backup file with name from sqlca.sqlerrmc end for
/* read pages from the server, write them locally */ while TRUE
/* file_no and page_no are ignored */
db_backup( &sqlca, DB_BACKUP_PARALLEL_READ, 0, 0, &sqlda );
if SQLCODE != SQLE_NO_ERROR
break;
if buffer->stored_len == 0 || sqlda->sqlvar[0].sqlind > 0 break;
/* SQLCOUNT contains the starting page number of the block */
/* SQLIOESTIMATE contains the file number the pages belong to */ write block of pages to appropriate backup file
end while
/* close the server backup files */ for file_num = 0 to DB_BACKUP_MAX_FILE
/* close backup file */
db_backup( ... DB_BACKUP_CLOSE_FILE, file_num ... ) end for
/* shut down the backup */ db_backup( ... DB_BACKUP_END ... )
/* cleanup */ free page buffer
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。+-------------------------------------华丽的分割线-------------------------------------------------------------------------