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

 


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

JDBC 2.0 选件工具包扩展支持

JDBC 2.0 Optional Package(《JDBC 2.0 选件工具包》)(旧称 JDBC 2.0 Standard Extension API (《JDBC 2.0 标准扩展 API》))中定义了多个 JDBC 2.0 驱动程序可实现的功能。 jConnect 6.05 版及更高版本已实现了 以下选件工具包扩展功能:

用于命名数据库的 JNDI

(使用 jConnect 支持的任何 Sybase DBMS

连接池

(使用 jConnect 支持的任何 Sybase DBMS

分布式事务管理支持 仅用于 Adaptive Server


image

注释 Sybase 建议使用 JNDI 1.2,它可与 Java 1.1.6 及更高版本兼容。

image


用于命名数据库的 JNDI


参考

JDBC 2.0 Optional Package JDBC 2.0 选件工具包》)(旧称 JDBC 2.0 Standard Extension API JDBC 2.0 标准扩展 API ))的第 5 章 “JNDI and the JDBC API”(JNDI JDBC API)。


相关接口


javax.sql.DataSource


javax.naming.Referenceable


javax.naming.spi.ObjectFactory


此功能为 JDBC 客户端提供了按标准方法获取数据库连接的替代方法。不 再调用 Class.forName (“com.sybase.jdbc4.jdbc.SybDriver”),然后将 JDBC URL 传递到 DriverManager getConnection( ) 方法,客户端可使用逻辑名 访问 JNDI 命名服务器来检索 javax.sql.DataSource 对象。此对象负责装载 驱动程序,并与它代表的物理数据库建立连接。客户端代码更简单并且 是可重用的,因为特定于供应商的信息已放入 DataSource 对象中。

DataSource 对象的 Sybase 实现是 com.sybase.jdbcx.SybDataSource (有关 详细信息,请参见 javadocs)。此实现通过使用 JavaBean 组件的设计模 式支持以下标准属性:

databaseName


dataSourceName


description


networkProtocol


password


portNumber


serverName


user


image

注释 roleName 不受支持。

image


jConnect 提供 javax.naming.spi.ObjectFactory 接口的实现,因此 DataSource 对象可根据命名服务器条目的属性构造。给定 javax.naming.Reference, 或 javax.naming.Name javax.naming.DirContext 时,此 factory 可构造 com.sybase.jdbcx.SybDataSource 对象。若要使用此 factory,请将 java.naming.object.factory 系统属性设置为包括 com.sybase.jdbc4.SybObjectFactory


用法


1a. 管理员进行的配 置:LDAP


可以在不同的应用程序中,以不同的方式使用 DataSource。下面的几小 节中介绍所有选项并提供一些代码示例,以指导您完成该过程。有关详 细信息,请参见 JDBC 2.0 Optional Package (《JDBC 2.0 选件工具包》)

(旧称 JDBC 2.0 Standard Extension API (《JDBC 2.0 标准扩展 API》)) 以及 Oracle Java Web 站点上的 JNDI 文档。

jConnect 4.0 版本开始已经支持 LDAP 连接。因此,建议的方法 (不 要求自定义软件)是使用 LDAP 数据交换格式 (LDIF) DataSources 配 置为 LDAP 条目。例如:

dn:servername:myASE, o=MyCompany, c=US 1.3.6.1.4.1.897.4.2.5:TCP#1# mymachine 4000

1.3.6.1.4.1.897.4.2.10:PACKETSIZE=1024&user=me&password=secret 1.3.6.1.4.1.897.4.2.11:userdb

1b. 由客户端访问 这是典型的 JDBC 客户端应用程序。唯一的区别是获取对 DataSource 对 象的引用的方式是通过访问命名服务器,而不是通过访问 DriverManager 并提供 JDBC URL。获取连接后,客户端代码就和所有其它 JDBC 客户 端代码相同了。代码非常通用,且设置对象 factory 属性 (可设置为环 境的一部分)时仅引用 Sybase

jConnect 安装包含了示例程序 sample2/SimpleDataSource.java 以说明 DataSource 的使用。此示例仅用于参考,也就是说,除非适当地配置环 境并编辑此示例,否则不能运行它。 SimpleDataSource.java 包含以下重 要代码:

import javax.naming.*; import javax.sql.*; import java.sql.*;


// set necessary JNDI properties for your environment (same as above) Properties jndiProps = new Properties();


// used by JNDI to build the SybDataSource jndiProps.put(Context.OBJECT_FACTORIES,

"com.sybase.jdbc4.jdbc.SybObjectFactory");


// nameserver that JNDI should talk to jndiProps.put(Context.PROVIDER_URL, "ldap:some_ldap_server:238/" + "o=MyCompany,c=Us");


// used by JNDI to establish the naming context jndiProps.put(Context.INITIAL_CONTEXT_FACTORY,

"com.sun.jndi.ldap.LdapCtxFactory");


// obtain a connection to your name server


Context ctx = new InitialContext(jndiProps);

DataSource ds = (DataSource) ctx.lookup("servername=myASE");


// obtains a connection to the server as configured earlier.

// in this case, the default username and password will be used Connection conn = ds.getConnection();


// do standard JDBC methods

...

如果已经在虚拟机中定义属性,则不必将 Properties显式传递给 InitialContext 构造函数,也就是说,要么在将 Java 设置为浏览器属性的 一部分时传递,要么使用下面的方法传递:

java -Djava.naming.object.factory=com.sybase.jdbc4.jdbc.SybObjectFactory

有关设置环境属性的详细信息,请参见 Java VM 文档。

2a.编程配置 此阶段通常由为其公司执行数据库系统管理或应用程序集成的人员来完 成。目的是定义一个数据源,然后以一个逻辑名部署到命名服务器。如 果需要重新配置服务器 (例如,移到其它计算机、端口等等),管理员 运行此配置实用程序 (概述如下),并将此逻辑名重新分配给新的数据 源配置。因此,客户端代码不会更改,因为它只认识此逻辑名。

import javax.sql.*; import com.sybase.jdbcx.*;

.....


// create a SybDataSource, and configure it

SybDataSource ds = new com.sybase.jdbc4.jdbc.SybDataSource(); ds.setUser("my_username");

ds.setPassword("my_password"); ds.setDatabaseName("my_favorite_db"); ds.setServerName("db_machine"); ds.setPortNumber(4000);

ds.setDescription("This DataSource represents the Adaptive Server Enterprise server running on db_machine at port 2638. The default username and password have been set to 'me' and 'mine' respectively. Upon connection, the user will access the my_favorite_db database on this server.");

Properties props = newProperties() props.put("REPEAT_READ","false"); props.put("REQUEST_HA_SESSION","true"); ds.setConnectionProperties(props);

// store the DataSource object.Typically this is

// done by setting JNDI properties specific to the

// type of JNDI service provider you are using.

// Then, initialize the context and bind the object. Context ctx = new InitialContext(); ctx.bind("java:comp/env/jdbc/myASE", ds);


设置 DataSource 后,需要决定信息的存储位置和存储方式。 SybDataSource 提供了 java.io.Serializable javax.naming.Referenceable 来 帮助您作出决定,但仍需管理员根据使用的 JNDI 服务提供程序来决定 如何存储数据。

2b. 由客户端访问 客户端通过采用配置 DataSource 的方法来设置 DataSource 对象的 JNDI 属性,从而检索该对象。客户端需要一个可转换该对象的可用对象 factory,因为它会被存储 (例如,序列化)到 Java 对象中。

Context ctx = new InitialContext();

DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/myASE"); Connection conn = ds.getConnection();


连接池


参考

JDBC 2.0 Optional Package(《JDBC 2.0 选件工具包》)(旧称 JDBC 2.0 Standard Extension API (《JDBC 2.0 标准扩展 API》))的第 6 章 “Connection Pooling”(连接池)。


相关接口


javax.sql.ConnectionPoolDataSource


javax.sql.PooledConnection


概述

传统数据库应用程序可与用于应用程序的每次会话的数据库创建一个连 接。不过,使用此应用程序时,基于 Web 的数据库应用程序可能需要 多次打开和关闭新连接。

处理基于 Web 的数据库连接的一个有效方法是使用连接池,它可维护 打开的数据库连接并管理在不同用户请求间共享的连接,从而维护性能 并减少空闲连接的数目。对于每个连接请求,连接池首先确定池中是否 有空闲连接。如果有,连接池会返回空闲连接,而不是与数据库建立新 连接。

提供 com.sybase.jdbc4.jdbc.ConnectionPoolDataSource 类来与连接池实现交 互。使用 ConnectionPoolDataSource 时,池实现会监听 PooledConnection。 当您关闭连接或有错误破坏了连接时,会通知该实现。此时,池实现会 决定如何处理 PooledConnection


如果没有连接池,事务会:

1 创建与数据库的连接。

2 向数据库发送查询。

3 获得结果集。

4 显示结果集。

5 破坏连接。 有连接池时,序列大致如下:

1 查看连接 “池”中是否存在未用连接。

2 如果有,则使用此连接;否则创建新连接。

3 向数据库发送查询。

4 获得结果集。

5 显示结果集。

6 将连接返回 “池”。用户仍然调用 “close( )”,但连接保持打开状 态,且池会得到 close 请求的通知。

与每次客户端需要建立与数据库的连接时都创建一个新的连接相比,重 新使用连接的开销要少。

为允许第三方实现连接池, jConnect 实现让 ConnectionPoolDataSource 接口 生成 PooledConnections,类似于 DataSource 接口生成 Connections 的方法。

池实现使用 ConnectionPoolDataSource getPooledConnection( ) 方法创建 “真正”的数据库连接。然后,池实现将自己注册为针对 PooledConnection 的监听器。

目前,当客户端请求连接时,池实现就会调用可用 PooledConnection 上 的 getConnection( )。当客户端完成连接并调用 close 时,池实现就会通过 ConnectionEventListener 接口得到通知,告知连接空闲,可以重用。

如果客户端因为某种原因破坏了数据库连接,池实现也会通过

ConnectionEventListener 接口得到通知,这样池实现就会将连接从池中删除。

有关详细信息,请参见 JDBC 2.0 Optional Package (《JDBC 2.0 选件工 具包》)(旧称 JDBC 2.0 Standard Extension API (《JDBC 2.0 标准扩展 API》))中的 “Appendix B”(附录 B)。


管理员进行的配置:

LDAP

此方法与 “ 用于命名数据库的 JNDI ”中描述的 1a. 管理员进行的配 置: LDAP 相似,只是向 LDIF 条目中输入了附加行。在下面的示例 中,添加的代码行以粗体显示以供参考。

dn:servername=myASE, o=MyCompany, c=US 1.3.6.1.4.1.897.4.2.5:TCP#1# mymachine 4000

1.3.6.1.4.1.897.4.2.10:PACKETSIZE=1024&user=me&password=secret 1.3.6.1.4.1.897.4.2.11:userdb

1.3.6.1.4.1.897.4.2.18:ConnectionPoolDataSource

通过中间层客户端进行 访问


...

此过程初始化三个属性 (如第 78 页所示的

INITIAL_CONTEXT_FACTORYPROVIDER_URL

OBJECT_FACTORIES),并检索 ConnectionPoolDataSource 对象。有关 更完整的代码示例,请参见 sample2/SimpleConnectionPool.java。基本区 别是:

ConnectionPoolDatabase cpds = (ConnectionPoolDataSource) ctx.lookup("servername=myASE");

PooledConnection pconn = cpds.getPooledConnection();


分布式事务管理支持


参考


image

image

此功能为 Adaptive Server 提供了用于执行分布式事务的标准 Java API注释 此功能设计用于大型多层环境。


请参见 JDBC 2.0 Optional Package (《JDBC 2.0 选件工具包》)(旧称 JDBC 2.0 Standard Extension API (《JDBC 2.0 标准扩展 API》))的第 7 章 “Distributed Transactions”(分布式事务)。


相关接口


javax.sql.XADataSource


javax.sql.XAConnection


javax.transaction.xa.XAResource


背景和系统要求


因为在 Sybase Adaptive Server 12.0 和更高版本中 jConnect 会直接与 资源管理器通信,所以安装必须具有分布式事务管理支持。

任何想参与分布式事物的用户都必须具有 “dtm_tm_role”授权, 否则事务将失败。

若要使用分布式事务,必须在 /sp 目录中安装存储过程。请参见

jConnect for JDBC 安装指南》第 1 章中的 “安装存储过程”。

2-212.x 版本中的分布式事务管理支持


image

中间层组 件



客户端 应用程序

ASE 12.x

DTM

ASE 12.x

DTM

JTA TDS

jConnect


管理员进行的配置:

LDAP

此方法与 93 页的 “用于命名数据库的 JNDI中描述的 1a. 管理员 进行的配置: LDAP相似,只是向 LDIF 条目中输入了附加行。在下 面的示例中,添加的代码行显示为粗体。

dn:servername:myASE, o=MyCompany, c=US 1.3.6.1.4.1.897.4.2.5:TCP#1# mymachine 4000

1.3.6.1.4.1.897.4.2.10:PACKETSIZE=1024&user=me&password=secret 1.3.6.1.4.1.897.4.2.11:userdb

1.3.6.1.4.1.897.4.2.18:XADataSource

通过中间层客户端进行 访问


...

此过程初始化三个属性 (INITIAL_CONTEXT_FACTORYPROVIDER_URL OBJECT_FACTORIES),并检索 XADataSource 对 象。例如:

XADataSource xads = (XADatasource) ctx.lookup("servername=myASE"); XAConnection xaconn = xads.getXAConnection();

或覆盖用户名和口令的缺省设置:

...

XADataSource xads = (XADatasource) ctx.lookup("servername=myASE"); XAConnection xaconn = xads.getXAConnection("my_username","my_password");




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