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

 


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

使用 Java 类作为数据类型

在安装一组 Java 类之后,可在 SQL 中将它们作为数据类型引用。要用 作列数据类型,必须将 Java-SQL 类定义为 public,并且必须实现 java.io.Serializable java.io.Externalizable

可以将 Java-SQL 类指定为:

• SQL 列的数据类型

• Transact-SQL 存储过程的 Transact-SQL 变量和参数的数据类型

• SQL 列的缺省值

创建表时,可将 Java-SQL 类指定为 SQL 列的数据类型:

create table emps (

name varchar(30), home_addr Address,

mailing Address2Line null )

name 列是普通的 SQL 字符串, home_addr mailing_addr 列可以包含 Java

对象,而 Address Address2Line 是安装在数据库中的 Java-SQL 类。

可以将 Java-SQL 类指定为 Transact-SQL 变量的数据类型:

declare @A Address declare @A2 Address2Line

也可以为 Java-SQL 列指定缺省值,但要符合常规约束,即指定的缺省值 必须是常量表达式。该表达式通常是使用 new 运算符和常量参数的构造 方法调用,例如:

create table emps (

name varchar(30),

home_addr Address default new Address ('Not known', ''),

mailing_addr Address2Line

)


创建和更改包含 Java-SQL 列的表

当创建或更改具有 Java-SQL 列的表时,可以将任意已安装的 Java 类指 定为列数据类型。您也可以指定如何在列中存储信息。所选择的存储选 项将影响 Adaptive Server 引用和更新这些列中的字段的速度。

行的列值通常存储 “在行内”,也就是说,在分配给表的数据页上连续 存储。不过,也可以使用与 text image 数据项相同的存储方式,将 Java-SQL 列存储在单独的 “行外”位置。 Java-SQL 列的缺省值存储在 行外。

如果 Java-SQL 列存储在行内:

处理存储在行内的对象比处理存储在行外的对象速度快。

根据数据库服务器的页大小和其它变量,存储在行内的对象最多可 占据大约 16K 字节的空间。这包括它的整个序列,而不仅仅是其字 段中的值。运行时表示形式超过 16K 字节限制的 Java 对象将会产生 异常并中止命令。

如果 Java-SQL 列存储在行外,则该列必须符合适用于 text image 列的 限制:

存储在行外的对象的处理速度比存储在行内的对象慢。

存储在行外的对象可以是任意大小,但必须符合 text image 列的 一般限制。

不能在检查约束中引用行外列。 同样,在检查约束中不要引用包含行外列的表。创建或更改表时,

Adaptive Server 允许包括检查约束,但会在编译期发出警告信息,

而在运行时忽略约束。

不能在使用 select distinct 的选择查询的列列表中包含行外列。

不能在比较运算符、判定或 group by 子句中指定行外列。 具有 in row/off row 选项的 create table 命令的部分语法为:

create table...column_name datatype

[default {constant_expression | user | null}]

{[{identity | null | not null}]

[off row | [ in row [ ( size_in_bytes ) ] ] ]...

size_in_bytes 指定行内列的最大大小。最大值可达 16K 字节。缺省值为

255 个字节。

create table 中输入的最大行内列大小必须包括列的整个序列,而不仅 仅是其字段中的值,还应包括最小开销值。


要确定包括开销和序列值在内的相应列大小,请使用 datalength 系统函 数。 datalength 可用于确定要在列中存储的表示对象的实际大小。

例如:

select datalength (new class_name(...))

其中, class_name 是安装的 Java-SQL 类。

alter table 命令的部分语法为:

alter table...{add column_name datatype [default {constant_expression | user | null}]

{identity | null} [ off row | [ in row ] ]...


image

注释 在此版本的 Adaptive Server 中,不能使用 alter column 更改行内列 的列大小。

image


更改已分区的表


如果已将包含 Java 列的表分区,则在未删除分区前将无法更改表。若要 更改表模式:

1 移除分区。

2 使用 alter table 命令。

3 对表进行重新分区。


选择、插入、更新和删除 Java 对象

在指定 Java-SQL 列之后,赋值给这些数据项的值必须是 Java 实例。这些 实例最初是通过使用 new 运算符调用 Java 构造方法来生成的。您可以为 列和变量生成 Java 实例。

构造方法是伪实例方法,它们可创建实例。构造方法与类具有相同的名 称,但没有声明的数据类型。如果在类定义中未包括构造方法,缺省方 法由 Java 基于类对象提供。您可以为每个类提供参数数量和类型各不相 同的多个构造方法。当调用构造方法时,将使用具有正确的参数数量和 类型的构造方法。


在以下示例中,为列和变量均生成了 Java 实例:

declare @A Address, @AA Address, @A2 Address2Line,

@AA2 Address2Line


select @A = new Address( )

select @AA = new Address('123 Main Street', '99123') select @A2 = new Address2Line( )

select @AA2 = new Address2Line('987 Front Street', 'Unit 2', '99543')


insert into emps values('John Doe', new Address( ), new Address2Line( ))

insert into emps values('Bob Smith',

new Address('432 ElmStreet', ë99654í),

new Address2Line('PO Box 99', 'attn: Bob Smith', '99678') )

赋给 Java-SQL 列和变量的值可以接着赋给其它 Java-SQL 列和变量。 例如:

declare @A Address, @AA Address, @A2 Address2Line,

@AA2 Address2Line


select @A = home_addr, @A2 = mailing_addr from emps where name = 'John Doe'

insert into emps values ('George Baker', @A, @A2)


select @AA2 = @A2 update emps

set home_addr = new Address('456 Shoreline Drive', '99321'), mailing_addr = @AA2

where name = 'Bob Smith'

您也可以从一个表向另一个表复制 Java-SQL 列的值。例如:

create table trainees ( name char(30), home_addr Address,

mailing_addr Address2Line null

)

insert into trainees select * from emps

where name in ('Don Green', 'Bob Smith', 'George Baker')


您可以使用标准 SQL 限定来引用和更新 Java-SQL 列的字段和 Java-SQL 变量。为避免与 SQL 使用点来限定名称的方法混淆,当在 SQL 中引用 Java 字段和方法名称时,可用双尖括号 (>>) 来限定它们。

declare @name varchar(100), @street varchar(100),

@streetLine2 varchar(100), @zip char(10), @A Address


select @A = new Address()

select @A>>street = '789 Oak Lane' select @street = @A>>street


select @street = home_add>>street, @zip = home_add>>zip from emps where name = 'Bob Smith'

select @name = name from emps

where home_addr>>street= '456 Shoreline Drive'


update emps

set home_addr>>street = '457 Shoreline Drive', home_addr>>zip = '99323'

where home_addr>>street = '456 Shoreline Drive'




--------------------------------------华丽的分割线-------------------------------------------------------------------------
之前就已经研发成功了能够从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等等。
+-------------------------------------华丽的分割线-------------------------------------------------------------------------