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

 


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

子查询类型


子查询分为两种基本类型:

表达式子查询 由无修饰词的比较运算符引入,它必须返回单个值, 可用于 SQL 中几乎所有允许使用表达式的地方。

定量判定子查询对由 in 引入的列表、或由经 any all 修饰的比较运 算符引入的列表进行操作。定量判定子查询返回零个或更多的值。 此类子查询也用作存在测试 (检查子查询是否生成任何行),由 exists 引入。

每种类型的子查询或是无关的或是相关的 (重复的)。

无关子查询 可按独立查询那样进行求值。在概念上,子查询的结果 在主语句或外层查询中被替代。但这并不是 Adaptive Server 对含有 子查询的语句的实际处理方式无关子查询也可表达为连接,并由 Adaptive Server 将其作为连接来处理。

相关子查询 不可作为独立查询进行求值,但可引用外部查询的 from

列表中列出的表的列。本章最后将详细论述相关子查询。


表达式子查询


表达式子查询包括:

select 列表中的子查询 (由 in 引入)

由比较运算符 (=!=>>=<<=)连接的 where having 子 句中的子查询

表达式子查询的一般格式是:

[selectinsertupdatedelete 语句或子查询开始 ]

where expression comparison_operator (subquery)

[selectinsertupdatedelete 语句或子查询结束 ]

表达式由子查询或由算术运算符或逐位运算符连接的列名、常量和函数 的任何组合组成。


comparison_operator 为以下运算符之一:

image

运算符 含义

image

= 等于

image

> 大于

image

< 小于

image

>= 大于或等于

image

<= 小于或等于

image

!= 不等于

image

<> 不等于

image

!> 不大于

image

!< 不小于

image


如果在外层语句的 where having 子句中使用列名,应确保

subquery_select_list 中的列名与它是连接兼容的。

由无修饰词的比较运算符 (即后面没有 any all 的比较运算符)引入 的子查询必须求出一个单值。如果此类子查询返回多个值, Adaptive Server 会返回一个错误消息。

例如,假设每个出版社仅位于一个城市中。若要查找与 Algodata Infosystems 居住在同一城市的作者的姓名,可编写一个含有子查询

(由比较运算符 = 引入)的语句:

select au_lname, au_fname from authors

where city = (select city

from publishers

where pub_name = "Algodata Infosystems")

au_lname au_fname

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

Carson Cheryl

Bennet Abraham


使用标量集合函数来确保单值

由无修饰词的比较运算符引入的子查询通常包括标量集合函数,它们返 回单值。

例如,若要查找价格高于当前最低价格的书籍的书名:

select title from titles where price>

(select min(price) from titles)

title

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

The Busy Executive’s Database Guide

Cooking with Computers:Surreptitious Balance Sheets

Straight Talk About Computers Silicon Valley Gastronomic Treats But Is It User Friendly?

Secrets of Silicon Valley

Computer Phobic and Non-Phobic Individuals: Behavior Variations

Is Anger the Enemy? Life Without Fear

Prolonged Data Deprivation:Four Case Studies Emotional Security:A New Algorithm

Onions, Leeks, and Garlic:Cooking Secrets of the Mediterranean

Fifty Years in Buckingham Palace Kitchens Sushi, Anyone?


在表达式子查询中使用 group by having

因为由无修饰词的比较运算符引入的子查询必须返回一个单值,所以它 们不能包括 group by having 子句,除非已知 group by having 子句将 返回单值。

例如,以下查询查找价格高于 trad_cook 类别中最低价书的书名:

select title from titles where price>

(select min(price) from titles

group by type

having type = "trad_cook")


在表达式子查询中使用 distinct

由无修饰词的比较运算符引入的子查询通常包括 distinct 关键字,以确保 返回单值。

例如,如果不包含 distinct,以下子查询将由于返回多个值而失败:

select pub_name from publishers where pub_id =

(select distinct pub_id from titles

where pub_id = publishers.pub_id)


定量判定子查询


定量判定子查询是 where having 子句中由 anyallin exists 连接的 子查询,返回零个和更多值的列表。 any all 子查询运算符修饰比较运 算符。

定量判定子查询共分三类:

any/all 子查询。由有修饰词的比较运算符引入的子查询 (可能包括

group by having 子句)采取以下一般格式:

[selectinsertupdatedelete 语句或子查询开始 ]

where expression comparison_operator [any | all] (subquery)

[selectinsertupdatedelete 语句或子查询结束 ]

in/not in 子查询。由 in not in 引入的子查询采取以下一般格式:

[selectinsertupdatedelete 语句或子查询开始 ]

where expression [not] in (subquery)

[selectinsertupdatedelete 语句或子查询结束 ]

exists/not exists 子查询。由 exists not exists 引入的子查询是采取以 下一般格式的存在测试:

[selectinsertupdatedelete 语句或子查询开始 ]

where [not] exists (subquery)

[selectinsertupdatedelete 语句或子查询结束 ]

尽管 Adaptive Server 允许在定量判定子查询中使用关键字 distinct,但它 总是按子查询中不包括 distinct 那样对其进行处理。


any all 的子查询

关键字 all any 修饰引入子查询的比较运算符。

如果在子查询中将 any <> = 一同使用时,则当在子查询中检索 到与外层语句的 where having 子句中的值相匹配的任意值时,将返回 结果。

如果在子查询中将 all < > 一同使用,则只有在子查询中检索到与外 层语句的 where having 子句中的值相匹配的所有值时,才返回结果。

any and all 的语法为:

{where | having} [not]

expression comparison_operator {any | all} (subquery)

> 比较运算符为例:

> all 表示大于每个值,或大于最大值。例如, > all (1, 2, 3) 表示大于 3

> any 表示大于至少一个值,或大于最小值。因此, > any (1, 2, 3) 表 示大于 1

如果使用 all 引入子查询,而比较运算符不返回任何值,则整个查询将 失败。

all any 可以互相转换。例如,您可能会问 “哪些书的预付款比 New Age Books 出版的任何一本书的预付款都多?”

可这样解释这个问题,以使 SQL “转换”更清楚:“哪些书的预付款比 New Age Books 支付的最高预付款还多?”此时,需要 all 关键字,而非 any 关键字:

select title from titles

where advance > all (select advance

from publishers, titles

where titles.pub_id = publishers.pub_id and pub_name = "New Age Books")

title

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

The Gourmet Microwave

对于每个书目,外部查询从 titles 表中获取标题和预付款值,并将它们 与从子查询中返回的 New Age Books 所付预付款金额进行比较。外层查 询查找列表中的最大值,并确定所考虑的标题是否得到更多的预付款。


> all 表示大于所有值


> all 运算符表示:引入子查询的列中的值必须大于子查询为符合外层查 询条件的行返回的每个值。

例如,若要查找价格高于 mod_cook 类别中最高价书的书名:

select title from titles where price > all (select price from titles

where type = "mod_cook")

title

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

But Is It User Friendly? Secrets of Silicon Valley

Computer Phobic and Non-Phobic Individuals: Behavior Variations

Onions, Leeks, and Garlic:Cooking Secrets of the Mediterranean


(4 rows affected)

但是,如果内部查询返回的结果集中包含 NULL,则查询返回 0 行。这 是因为 NULL 代表 “未知值”,而要判断出比较的值是否大于未知值是 不可能的。

例如,若要查找价格高于 popular_comp 类别中最高价书的书名:

select title from titles where price > all (select price from titles

where type = "popular_comp")

title

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


(0 rows affected)

未返回任何行,这是因为子查询发现其中一本书 Net Etiquette 的价格为 空值。


= all 表示等于每个值


= all 运算符表示:引入子查询的列中的值必须等于子查询为符合外层查 询条件的行返回的值列表中的每个值。

例如,以下查询按邮政编码来找出居住在同一个城市的作者:

select au_fname, au_lname, city from authors

where city = all


(select city from authors

where postalcode like "946%")


> any 表示至少大于一个值


> any 表示:引入子查询的列中的值必须至少大于子查询为符合外层查 询条件的行返回的多个值中的一个。

下例由经 any 修饰的比较运算符引入。它查找预付款值大于 New Age Books 所付任意预付款金额的每本书的标题。

select title from titles

where advance > any (select advance

from titles, publishers

where titles.pub_id = publishers.pub_id and pub_name = "New Age Books")

title

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

The Busy Executive’s Database Guide

Cooking with Computers:Surreptitious Balance Sheets

You Can Combat Computer Stress! Straight Talk About Computers The Gourmet Microwave

But Is It User Friendly? Secrets of Silicon Valley

Computer Phobic and Non-Phobic Individuals: Behavior Variations

Is Anger the Enemy? Life Without Fear

Emotional Security:A New Algorithm

Onions, Leeks, and Garlic:Cooking Secrets of the Mediterranean

Fifty Years in Buckingham Palace Kitchens Sushi, Anyone?

对于外部查询选择的每个标题,内部查询都会查找 New Age Books 所付 预付款金额的列表。外层查询会查看该列表中的所有值,并确定所考虑 的标题的预款是否比这些值中的任意一个多。也就是说,本示例查找预 付款大于或等于 New Age Books 所付最低 预付款数的书籍的标题。

如果子查询不返回任何值,则整个查询失败。


= any 表示等于一些值


= any 运算符是一个存在性检查;它等效于 in。例如,若要查找与任意出 版社处于同一城市的作者,可使用 = any in

select au_lname, au_fname from authors

where city = any (select city

from publishers) select au_lname, au_fname from authors

where city in (select city

from publishers)

au_lname au_fname

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

Carson Cheryl

Bennet Abraham

但是, != any 运算符与 not in 不同。 != any 运算符表示 “not = a or not = b or not = c”;而 not in 表示 “not = a and not = b and not = c”。

例如,若要查找所居住城市无出版社的作者的姓名:

select au_lname, au_fname from authors

where city != any (select city

from publishers)

结果包括所有 23 个作者。这是因为每个作者都居住于无出版社的某个 城市,且每个作者只居住在一个城市中。

内层查询会找到有出版社的所有城市,然后外层查询为每个城市查找不 居住于此的作者。

在同一个查询中如果用 not in 替代,则会出现以下情况:

select au_lname, au_fname from authors

where city not in (select city

from publishers)

au_lname au_fname

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

White Johnson

Green Marjorie

O’Leary Michael


Straight Dick

Smith Meander

Dull Ann

Gringlesby Burt

Locksley Chastity

Greene Morningstar

Blotchet-Halls Reginald

Yokomoto Akiko

del Castillo Innes

DeFrance Michel

Stringer Dirk

MacFeather Stearns

Karsen Livia

Panteley Sylvia

Hunter Sheryl

McBadden Heather

Ringer Anne

Ringer Albert

这些正是所需的结果。其中包括除 Cheryl Carson Abraham Bennet 之 外的所有作者,这两位作者居住于 Berkeley,那里是 Algodata Infosystems 的所在地。

使用 !=all 可得到同样的结果,它等效于 not in

select au_lname, au_fname from authors

where city != all (select city

from publishers)


in 结合使用的子查询

由关键字 in 引入的子查询返回零个或更多值的列表。例如,以下查询会 查找出版过商业书籍的出版社的名称:

select pub_name from publishers where pub_id in

(select pub_id

from titles

where type = "business")

pub_name

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

New Age Books Algodata Infosystems


此语句按两个步骤执行。内层查询返回出版过商业书籍的出版社的标识 号,即 1389 0736。然后在外层查询中替代这些值,外层查询会在 publishers 表中查找与这两个标识号相匹配的名称。此查询如下所示:

select pub_name from publishers

where pub_id in ("1389", "0736")

使用子查询表达这个查询的另一种方法是:

select pub_name from publishers where "business" in

(select type

from titles

where pub_id = publishers.pub_id)

外部查询中 where 关键字之后的表达式可以是常量和列名。可以使用其 它类型的表达式,例如常量和列名的组合。

上述查询与许多其它子查询一样,也可表达为一个连接查询:

select distinct pub_name from publishers, titles

where publishers.pub_id = titles.pub_id and type = "business"

此查询及表达后的子查询都会查找出版过商业书籍的出版社。尽管可能 需要使用 distinct 关键字来消除重复项,但它们都同样正确并产生同样的 结果。

但是,使用连接查询而不使用子查询的一个好处是:连接查询在结果中 显示来自多个表的列。例如,若要在结果中包括商业书籍的标题,请使 用以下接形式:

select pub_name, title from publishers, titles

where publishers.pub_id = titles.pub_id and type = "business"

pub_name title

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

Algodata Infosystems The Busy Executive’s Database Guide Algodata Infosystems Cooking with Computers:Surreptitious

Balance Sheets

New Age Books You Can Combat Computer Stress! Algodata Infosystems Straight Talk About Computers


下面是可以用子查询或连接查询表达的语句的另一个示例:“查找居住 于加利福尼亚,并且从某本书中获得的版税低于 30% 的所有第二作者 的姓名。使用子查询时,语句为:

select au_lname, au_fname from authors

where state = "CA" and au_id in

(select au_id from titleauthor

where royaltyper < 30 and au_ord = 2)

au_lname au_fname

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

MacFeather Stearns

外部查询产生一个列表,列出 15 位居住于加利福尼亚的作者。然后, 对内部查询求值,产生一个列表,列出符合条件的作者的 ID

在内层查询和外层查询的 where 子句中都可以包含多个条件。 使用连接时,查询表达如下:

select au_lname, au_fname from authors, titleauthor where state = "CA"

and authors.au_id = titleauthor.au_id and royaltyper < 30

and au_ord = 2

连接始终可以表达为子查询。子查询通常可以表达为连接。


not in 结合使用的子查询

由关键字短语 not in 引入的子查询也返回一个 0 和更大值的列表。 not in

表示 “not = a and not = b and not = c”。

以下查询查找尚未 出版过商业书籍的出版社的名称,与 171 页的 “与 in 结合使用的子查询”中的示例相反:

select pub_name from publishers where pub_id not in

(select pub_id

from titles

where type = "business")

pub_name

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

Binnet & Hardley


not in 替代了 in 外,此查询与先前的查询相同。但是,不能将此语句 转换为连接,“不均等”连接会查找出版过非商业书籍的某一 书籍的出 版社的名称。有关解释不基于等同性的连接含义的难点的详细论述,请 参见 4 章 “连接:从若干表中检索数据


使用包含 NULL not in 的子查询

使用 not in 的子查询会为外层查询中的每一行都返回一组值。如果外部 查询中的值不在内部查询返回的结果集中,则 not in 求值结果为 TRUE, 并且外部查询将所考虑的记录放在结果中。

但是,如果内层查询返回的结果集中不包含匹配值,而是包含 NULL, 则 not in 返回 UNKNOWN。这是因为 NULL 代表 “未知值”,而要判断 出所查找的值是否在包含未知值的集合中是不可能的。外部查询会放弃 此行。例如:

select pub_name from publishers

where $100.00 not in (select price

from titles

where titles.pub_id = publishers.pub_id)

pub_name

------

New Age Books

New Age Books 是唯一未出版过价格为 100 美元的书籍的出版社。查询 结果中不包括 Binnet & Handley Algodata Infosystems,这是因为它们 都各自出版了一本价格未定的书。


exists 结合使用的子查询

exists 关键字与子查询一起使用可以测试子查询的某些结果是否存在:

{where | having} [not] exists ( subquery)

也就是说,外部查询的 where 子句会测试子查询返回的行是否存在。实际 上,此类子查询并不产生任何数据,而只是返回一个 TRUE FALSE 值。


例如,以下查询查找出版商业书籍的所有出版社的名称:

select pub_name from publishers where exists

(select *

from titles

where pub_id = publishers.pub_id and type = "business")

pub_name

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

New Age Books Algodata Infosystems

为使此查询的解析在概念上更清晰,应依次考虑每个出版社的名称。此 值是否可使子查询至少返回一行?也就是说,它是否可使存在测试的求 值结果 TRUE

在前面查询的结果中,第二个出版社的名称为 Algodata Infosystems,其 标识号为 1389titles 表中是否存在 pub_id 1389、且 type 为“business” 的任何行?如果存在,“Algodata Infosystems”应为所选值之一。为其 它每个出版社名称重复同样的过程。

exists 引入的子查询与其它子查询的不同之处在于:

关键字 exists 不优先于列名、常量或其它表达式。

exists 子查询的求值结果为 TRUE FALSE,而不返回任何数据。

子查询的选择列表通常包含星号 (*)。不需要指定列名,因为只需测 试符合子查询中指定条件的行是否存在。此外,由 exists 引入的子 查询的选择列表规则与标准选择列表规则相同。

exists 关键字非常重要,因为通常没有非子查询的表达方法可以替代它。 实际上,由 exists 引入的子查询始终为相关子查询 (请参见 179 页的 “使用相关子查询 )。

尽管不可将某些由 exists 表达的查询表示为其它任何方式,但却可用 exists 表示使用 in 或者由 any all 修饰的比较运算符的所有查询。以下 是一些关于使用 exists 的语句及其等效替代方法的示例。

以下两种方法用于查找与出版社处于同一城市的作者:

select au_lname, au_fname from authors

where city = any (select city

from publishers)


select au_lname, au_fname from authors

where exists (select *

from publishers

where authors.city = publishers.city)

au_lname au_fname

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

Carson Cheryl

Bennet Abraham

以下两个查询用于查找由位于以字母 “B”开头的城市中的出版社所出 版的书籍标题:

select title from titles where exists

(select *

from publishers

where pub_id = titles.pub_id and city like "B%")

select title from titles where pub_id in

(select pub_id from publishers

where city like "B%")

title

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

You Can Combat Computer Stress! Is Anger the Enemy?

Life Without Fear

Prolonged Data Deprivation:Four Case Studies Emotional Security:A New Algorithm

The Busy Executive’s Database Guide

Cooking with Computers:Surreptitious Balance Sheets

Straight Talk About Computers But Is It User Friendly?

Secrets of Silicon Valley Net Etiquette


not exists 结合使用的子查询

not exists exists 十分相似,不同之处在于:当子查询不返回任何行时 满足在其中所使用的 where 子句。

例如,若要查找出版商业书籍的出版社的名称,查询应为:

select pub_name from publishers where not exists

(select *

from titles

where pub_id = publishers.pub_id and type = "business")

pub_name

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

Binnet & Hardley

此查询查找无销售额的书籍的标题:

select title from titles where not exists

(select title_id from salesdetail

where title_id = titles.title_id)

title

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

The Psychology of Computer Cooking Net Etiquette


使用 exists 查找交集与差集

可使用由 exists not exists 引入的子查询进行两种集理论操作:交集和 差集。两个集合的交集包含两个初始集合共有的所有元素。而差集则包 含仅属于第一个集合的元素。

city 列上 authors publishers 的交集为作者和出版社所同处的城市的集合:

select distinct city from authors

where exists (select *

from publishers

where authors.city = publishers.city) city


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

Berkeley

city 列上 authors publishers 的差集为有作者居住而没有出版社的城市的 集合 (即除 Berkeley 外的所有城市):

select distinct city from authors

where not exists (select *

from publishers

where authors.city = publishers.city)

city

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

Gary Covelo Oakland Lawrence San Jose Ann Arbor Corvallis Nashville Palo Alto Rockville Vacaville Menlo Park

Walnut Creek San Francisco Salt Lake City


使用 SQL 派生表的子查询

可在子查询 from 子句中使用 SQL 派生表。例如,以下查询会查找出版 过商业书籍的出版社的名称:

select pub_name from publishers where "business" in

(select type from

(select type from titles, publishers

where titles.pub_id = publishers.pub_id) dt_titles)

在上例中, dt_titles 是最内层 select 语句定义的 SQL 派生表。

可以在子查询 (只要子查询合法)的 from 子句中使用 SQL 派生表。请 参见 9 章 “ SQL 派生表




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

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。
+-------------------------------------华丽的分割线-------------------------------------------------------------------------