提供7*24专业Sybase数据库远程及现场技术支持,Sybase ASE及Sybase SQL Anywhere数据库修复服务,
请联系电话: (微信),QQ: 289965371!
We supply technical support for Sybase ASE and Sybase SQL Anywhere, also have many years of experience in recovering data from damanged Sybase devices.
Please contact us:
Phone:
Wechat: 13811580958
QQ: 289965371 联系我们获取数据库技术支持!
Email: 289965371@qq.com
扫描下方微信,联系我们:
扫描雨翰数据恢复官方微信获取专业数据库恢复服务

 

随着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数据库技术问题需要咨询,请联系我!

  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. 实用程序指南

 


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

使用事务 ‌ ‌


begin transaction 和 commit transaction 命令指示 Adaptive Server 将任意数 量的单独命令作为单个单元进行处理。 rollback transaction 撤消事务,并 回退到起点或保存点。使用 save transaction 可在事务中定义保存点。

除将 SQL 语句组合为一个单元进行处理外,每个事务而非每个单独的 命令导致每次系统开销,因此事务可提高性能。

任何用户都可以定义事务。任何事务命令都没有权限要求。


在事务中允许使用数据定义命令 ‌

通过将 ddl in tran 数据库选项设置为 true,可以在事务中使用某些数据定 义语言命令,如 create table、 grant 和 alter table。如果在 model 数据库中 的 ddl in tran 为真,对于在 model 中将 ddl in tran 设置为真之后所创建的所 有数据库而言,允许在其事务中使用上述这些命令。要检查 ddl in tran 的 当前设置,请使用 sp_helpdb。


image

警告!应小心使用数据定义命令。唯一在事务中使用数据定义语言命令 须经调整的情况是 create schema 进行对齐。数据定义语言命令持有系统 表锁 (例如 sysobjects)。如果要在事务中使用数据定义语言命令,则 应使事务保持简短。

在事务中应避免对 tempdb 使用数据定义语言命令,否则可能导致系统 性能降低甚至停止。应始终将 tempdb 中的 ddl in tran 设置为 false。

image


要将 ddl in tran 设置为 true,请输入:

sp_dboption database_name,"ddl in tran", true

然后在该数据库中执行 checkpoint 命令。

第一个参数指定要在其中设置选项的数据库的名称。执行 sp_dboption 时, 必须使用 master 数据库。任何用户都可以执行不带参数的 sp_dboption 来 显示当前选项设置。但是,要设置选项,您必须是系统管理员或数据库 所有者。

只有 sp_dboption 的 ddl in tran 选项设置为 true 时,才允许在事务中使用以 下命令:

• create default

• create index

• create procedure

• create rule

• create schema

• create table

• create trigger

• create view

• drop default

• drop index

• drop procedure

• drop rule

• drop table

• drop trigger

• drop view

• grant

• revoke

不能在事务中使用更改 master 数据库或创建临时表的系统过程。 不要在事务中使用以下命令:

• alter database

• alter table...partition


• alter table...unpartition

• create database

• disk init

• dump database

• dump transaction

• drop database

• load transaction

• load database

• reconfigure

• select into

• update statistics

• truncate table


不允许在事务中使用的系统过程 ‌

不能在事务中使用以下系统过程:

• sp_helpdb、 sp_helpdevice、 sp_helpindex、 sp_helpjoins、 sp_helpserver、 sp_lookup 和 sp_spaceused (因为它们会创建临时表)

• sp_configure

• 更改 master 数据库的系统过程


开始和提交事务


begin transaction 和 commit transaction 命令可以包含任意数量的 SQL 语句 和存储过程。这两个语句的语法为:

begin {transaction | tran} [transaction_name]

commit {transaction | tran | work} [ transaction_name]

其中, transaction_name 是指派给事务的名称,该名称必须符合标识符 规则。


关键字 transaction、 tran 和 work (在 commit transaction 中)具有相同含 义;在使用时可以相互替换。但是, transaction 和 tran 是 Transact-SQL 扩展;只有 work 符合 SQL 标准。

例如:

begin tran

statement procedure statement

commit tran

如果事务当前不处于活动状态,则 commit transaction 不会影响 Adaptive Server。


回退和保存事务


如果提交事务之前必须取消此事务 (由于某些故障或用户更改),则必 须撤消所有已经完成的语句或过程。有关在处理期间执行回退的影响, 请参见 第 659 页的表 23-2。

在执行 commit transaction 之前,随时可以使用 rollback transaction 命令取 消或回退事务。使用保存点可以取消整个事务或部分事务。但是,不能 取消已经提交的事务。

rollback transaction 的语法为:

rollback {transaction | tran | work} [ transaction_name | savepoint_name]

保存点是用户放置在事务中的一个标记,用于表示事务可回退到的点。 在提交整个批处理之前,通过将不需要的部分回退到某个保存点,可以 只提交批处理的某些部分。

可以通过在事务中放置 save transaction 命令插入保存点:

save {transaction | tran} savepoint_name

该保存点名必须符合标识符的规则。

如果 rollback transaction 命令不带 savepoint_name 或 transaction_name,则 事务将回退到批处理中的第一个 begin transaction。


以下是使用 save transaction 和 rollback transaction 命令的方法:


begin tran

statements 组 A

save tran mytran

statements 组 B

rollback tran mytran 回退组 B

statements 组 C

commit tran 提交组 A 和组 C


发出 commit transaction 之前,只要不遇到另一个 begin transaction 语句, Adaptive Server 就会将所有后续语句视为事务的一部分。遇到该语句时, Adaptive Server 会将所有后续语句视为新的嵌套事务的一部分。请参见 第 646 页的 “嵌套事务 ”。

如果事务当前不是处于活动状态,则 rollback transaction 或 save transaction

不会影响 Adaptive Server,也不会返回错误消息。

也可以在存储过程或触发器中使用 save transaction 创建事务,这样,它 们可被回退而不影响批处理或其它过程。例如:

create proc myproc as begin tran

save tran mytran

statements

if ...

begin

rollback tran mytran

/*

** Rolls back to savepoint.

*/

commit tran

/*

** This commit needed; rollback to a savepoint

** does not cancel a transaction.

*/ end

else commit tran

/*

** Matches begin tran; either commits

** transaction (if not nested) or

** decrements nesting level.

*/


除非正向一个保存点回退,否则只能在最外层的一对 begin/commit 或

begin/rollback 语句中使用事务名。


image

警告! 在嵌套事务语句中使用事务名时,事务名可能被忽略或导致错 误。如果要在从其它事务中调用的存储过程或触发器中使用事务,则不 要使用事务名。

image


检查事务的状态


image

值 含义


全局变量 @@transtate 跟踪事务的当前状态。 Adaptive Server 通过跟踪 在语句执行之后发生的所有事务更改来确定要返回的状态。

表 23-1:@@transtate 值

image

0 事务正在进行。事务有效;已成功执行了前一语句。

image

1 事务已经成功。事务已完成且已提交其更改。

image

2 语句已中止。前一语句已中止;对事务无影响。

image

3 事务已中止。事务已中止且已回退任何更改。

image


Adaptive Server 不会清除每一语句之后的 @@transtate。在事务中,可 以使用语句之后的 @@transtate (例如 insert)来确定事务是已成功还是 被中止,从而确定事务是否有效。下面的示例在事务执行期间 (insert 成功后)以及提交事务之后检查 @@transtate:

begin transaction

insert into publishers (pub_id) values ("9999") (1 row affected)

select @@transtate

----------

0


(1 row affected)

commit transaction select @@transtate

----------

1


(1 row affected)


以下示例在 insert 不成功之后 (由于规则冲突)和事务回退之后检查

@@transtate:

begin transaction

insert into publishers (pub_id) values ("7777")

Msg 552, Level 16, State 1:

A column insert or update conflicts with a rule bound to the column.The command is aborted.The conflict occured in database ’pubs2’, table ’publishers’, rule ’pub_idrule’, column ’pub_id’.

select @@transtate

----------

2


(1 row affected)

rollback transaction select @@transtate

----------

3


(1 row affected)

Adaptive Server 只有在响应事务采取的操作时才会更改 @@transtate。 语法和编译错误不会影响 @@transtate 的值。


嵌套事务 ‌


可以在其它事务中嵌套事务。当嵌套 begin transaction 和 commit transaction 语句时,实际上由最外层对语句开始并提交事务。内部的语句对只跟踪 嵌套级别。Adaptive Server 直到发出与最外层 begin transaction 相匹配的 commit transaction 时才提交此事务。通常,当包含 begin / commit 语句对的 存储过程或触发器相互调用时,才发生这种事务 “嵌套”。‌

@@trancount 全局变量可跟踪事务的当前嵌套级别。 begin transaction 最 初隐式或显式地将 @@trancount 设置为 1。每个后续 begin transaction 将

@@trancount 递增,而 commit transaction 将其递减。触发一个触发器也 将使 @@trancount 递增,并且可用一个可以触发触发器的语句来开始事 务。除非 @@trancount 等于 0,否则不会提交嵌套事务。


例如,以下嵌套语句组直到最后的 commit transaction,才由 Adaptive Server 提交该事务:

begin tran

select @@trancount

/* @@trancount = 1 */ begin tran

select @@trancount

/* @@trancount = 2 */ begin tran

select @@trancount

/* @@trancount = 3 */ commit tran

commit tran commit tran

select @@trancount

/* @@ trancount = 0 */

如果在嵌套 rollback transaction 语句时不包括事务名或保存点名,则将回 退到最外层的 begin transaction 语句并取消该事务。


事务示例


以下示例显示指定事务的方法:

begin transaction royalty_change

/* A user sets out to change the royalty split */

/* for the two authors of The Gourmet Microwave.*/

/* Since the database would be inconsistent */

/* between the two updates, they must be grouped */

/* into a transaction.*/ update titleauthor

set royaltyper = 65

from titleauthor, titles where royaltyper = 75

and titleauthor.title_id = titles.title_id and title = "The Gourmet Microwave"

update titleauthor set royaltyper = 35

from titleauthor, titles where royaltyper = 25

and titleauthor.title_id = titles.title_id and title = "The Gourmet Microwave"

save transaction percent_changed

/* After updating the royaltyper entries for */

/* the two authors, the user inserts the */


/* savepoint "percent_changed," and then checks */

/* to see how a 10 percent increase in the */

/* price would affect the authors’ royalty */

/* earnings.*/ update titles

set price = price * 1.1

where title = "The Gourmet Microwave"

select (price * royalty * total_sales) * royaltyper from titles, titleauthor, roysched

where title = "The Gourmet Microwave"

and titles.title_id = titleauthor.title_id and titles.title_id = roysched.title_id rollback transaction percent_changed

/* The transaction rolls back to the savepoint */

/* with the rollback transaction command.*/

/* Without a savepoint, it would roll back to */

/* the begin transaction.*/ commit transaction




--------------------------------------华丽的分割线-------------------------------------------------------------------------

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)上提取数据的非常规恢复工具
  1. 适用于所有的SQL Anywhere版本    包括:5.x,6.x,7.x,8.x,9.x,10.x,11.x,12.x,16.x,17.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使用介绍

Sybase SQL Anywhere数据库恢复工具ReadASADB适用场景

各种误操作:

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

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的主要功能:

  1. 被勒索病毒加密数据文件及备份文件情况下的恢复;
  2. 系统崩溃只剩下数据文件的情况下的恢复,甚至数据库文件不存在而只有损坏的备份文件情况下的恢复;
  3. 因断电、硬盘坏道等造成数据库文件损坏情况下的恢复;
  4. delete数据恢复、误update数据恢复、误删除表(drop)恢复、误truncate表恢复 等;
  5. 各种Sybase内部系统表损坏、索引错误的修复;
  6. master数据库损坏而无法正常运行情况下的恢复;
  7. Sybase数据库被标记为可疑,不可用等情况的恢复;
  8. Sybase数据库中数据文件内部出现坏块情况下的恢复;
  9. Sybase数据库无数据文件但有日志文件的情况下的恢复;
  10. Sybase数据库只有数据文件无任何日志文件的情况下的恢复;
  11. Sybase数据文件被误删除情况下的碎片提取恢复;
  12. 磁盘阵列上的Sybase数据库被误格式化情况下的数据库恢复;
  13. 数据库sysobjects等系统表损坏无法正常应用情况下的恢复;
  14. Sybase数据库还原数据库出现失败情况下的恢复;
  15. 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.x


-------------------------------------------------------------------------------------------

SQL Server数据库恢复工具SQLRescue:

一个不依赖数据库管理系统、直接从SQL Server数据库文件上提取数据的业内领先的恢复工具!
能够从损坏的SQL Server数据库文件(.mdf)上提取数据的非常规恢复工具。

SQL Server数据库恢复工具SQLRescue的主要功能:

  1. 系统崩溃只剩下数据文件的情况下的恢复,即无日志文件或者日志文件损坏情况下的恢复;
  2. 断电导致数据库文件损坏情况下的恢复;
  3. 硬盘坏道造成数据库损坏情况下的恢复;
  4. 数据文件内部存在坏页情况下的恢复;
  5. 企业管理器误删除数据表记录,管理软件误删除数据表记录的恢复;
  6. 并闩锁错误、格式化、误删除后导致软件不能使用的情况;
  7. 无法读取并闩锁页sysindexes失败情况下的修复;
  8. 数据文件被误删除情况下的碎片提取恢复;
  9. 系统表损坏、索引错误、误删除数据库表、删除记录的数据找回;
  10. master数据库损坏而无法正常运行情况下的恢复;
  11. 数据文件无法附加情况下的数据恢复;
  12. 数据库被标记为可疑,质疑,不可用等情况的恢复;
  13. 数据库sysobjects等系统表损坏情况下的恢复;
  14. 数据被误(drop、delete、truncate)删除表数据的恢复,误update后的数据恢复等;
  15. 还原时报一致性错误,错误823等情况下的数据恢复,各种错误提示的数据库文件修复;
  16. 数据库被误格式化等情况下的数据库恢复;
  17. 日志收缩造成数据库损坏情况下的恢复;
  18. 仅剩损坏的备份文件情况下的恢复。

SQL Server数据库恢复工具SQLRescue技术特点:

只要SQL Server数据库的数据文件存在,我们就有办法帮您从数据文件中找回重要数据。
  1. 从数据文件中直接恢复数据
  2. 不能附加时直接恢复数据并生成新的数据库
  3. 系统表损坏的数据库修复
  4. 快速修复SQL 823错误、连接中断错误

SQL Server数据库恢复工具SQLRescue支持的版本:

Microsoft SQL Server 7.0, 2000, 2005, 2008, 2008R2, 2012, 2014, 2016, 2017,2019。
+-------------------------------------华丽的分割线-------------------------------------------------------------------------