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

 


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

数据类型


本节讨论组件集成服务如何处理不同数据类型的问题。


Unicode 支持


Adaptive Server 包含对 Unicode 字符集的正式支持。所提供的数据类型 为 unicharunivarchar unitext。它们构成 Unicode 中表示的 2 个字节字 符。 Adaptive Server 提供 Unicode 数据和所有其它数据类型之间的转换 函数,以便与当前的 char varchar 数据类型处理保持一致。通过支持 这些数据类型,组件集成服务可以提供以 Unicode 表示的所有企业字符 数据的视图。在对代理表中定义的列使用 unichar univarchar 类型的列 时,大型机和所有其它外部或遗留系统的字符数据均转换为 Unicode

以下组件集成服务功能受这些新数据类型的影响:


create table


create table 可能包含使用新 Unicode 数据类型进行说明的列。如果要创 建的表为代理表,则组件集成服务将整个命令转移到要在其中创建新表 的远程服务器,整个命令中包括 Unicode 数据类型名称 (unicharunivarchar unitext)。如果远程服务器无法处理这些数据类型,则出现 错误。


create existing table


在将 Adaptive Server 列类型和长度与从远程服务器获得的元数据进行比 较时,以下情况下允许代理表中使用 Unicode 数据类型:

列的远程服务器数据类型是具有相同长度 (以字符而不是字节表示) 的 unicharunitext univarchar

给定列的远程服务器数据类型为 char varchar。在这种情况下,组 件集成服务将从远程服务器读取的数据转换为 Unicode,并将作为 DML 命令 (selectinsertdeleteupdate)的一部分传输的数据 从 Unicode 转换为缺省 Adaptive Server 字符集 (UTF8)

• Unicode 列的远程服务器数据类型为 binary varbinary。远程服务器 列的长度必须是 Unicode 列长度的两倍。在与远程服务器之间传输 数据时,组件集成服务将根据需要对数据进行转换。


当将代理表映射到远程表时,不允许使用 Unicode 数据类型的其它映射 数据类型。其它类型导致类型不匹配错误。通过创建代理表,将 Unicode 列映射到现有 char varchar 列,即可将遗留系统中的数据转换 为 Unicode


image

注释 只能使用 create existing table 命令将 Unicode 映射到 unitext 列。

image


create proxy_table


通过使用 create proxy_tableAdaptive Server 用户不必指定与代理表相关 联的列列表。相反,将从由实际表所在的远程服务器导入的列元数据派 生列的列表。仅当远程列的数据类型为 unicharunitext univarchar 时, 远程服务器的 Unicode 列才映射到代理表中的 Unicode 列。


alter table


alter table 允许修改列类型。在 Adaptive Server 12.5 版和更高版本中,可 以将列的类型修改为 Unicode 数据类型,以及将 Unicode 数据类型修改 为其它类型。如果在代理表上执行该命令,则重新构建该命令,并将其 转移到拥有实际表的远程服务器。如果远程服务器 (或 DirectConnect) 无法处理该命令,将出现错误并中止 Adaptive Server 命令。

如果跟踪标志 11221 ONalter table 将不转移到远程服务器;仅在代 理表上本地完成列的添加、删除或修改。

通过使用 alter table 命令,可以将 unitext 更改为 charvarcharncharnvarcharunicharunivarcharbinary varbinary。所有这些数据类型 均可更改为 unitext


selectinsertupdate delete 语句

当涉及代理表时,Unicode 数据类型以两种方法影响 select 语句的处理。 第一种方法涉及构造传递到远程服务器的 SQL 语句和参数;第二种方 法在组件集成服务读取非 Unicode 数据时将数据转换为 Unicode

在与远程服务器进行交互时,将使用 TDS 语言请求或 TDS 游标请求来 处理涉及代理表的 DML 命令。如果 select 语句的 where 子句中包含涉及 Unicode 列和常量的谓词,则必须按以下两种方式之一对 Unicode 常量 进行处理 (具体取决于是使用语言还是游标命令来处理语句):


1 TDS 语言 — 生成可包含在语言文本缓冲区中的明文值。它涉及将 常量 Unicode 值转换为明文值,可将明文值作为语言请求的一部分 进行传输。

2 TDS 游标 — 生成 CT-Library 游标请求的 Unicode 参数。参数值可以 是 Unicode 数据,但要求组件集成服务使用 CS_UNICHAR_TYPE 参数类型。

组件集成服务使用 TDS 语言请求或 TDS 动态请求来处理涉及代理表的

insert 命令。

如果可以通过快速传递模式来处理 insert 命令,则使用 TDS 语言请求。 如果无法通过快速传递模式来处理该命令,则使用 TDS 动态请求来处 理 insert

在语言请求的情况下,问题与 select 相同 — 必须将 Unicode 值转换为明 文格式,以便与 SQL 语句的其它部分一起传输。在动态请求情况下, 将 Unicode 数据 (同所有其它数据值一起)作为动态命令的参数进行传 输。接收服务器应当可处理 CS_UNICHAR_TYPE 类型的参数。

update delete 命令的问题与 select insert 相同。必须将 Unicode 值转 换为明文字符,以便与 SQL 语句的其它部分一起传输;或者必须转换 为 CS_UNICHAR_TYPE 类型的参数。


数据类型转换


只要服务器从远程数据源接收到数据,并且远程数据源为 Adaptive Server 或基于 Open Server 的应用程序,就会发生数据类型转换。

根据每列的远程数据类型,将数据从远程服务器上的本机数据类型转换 为本地服务器支持的一种格式。

当处理 create tablealter table create existing table 命令时,将进行数据 类型转换。数据类型转换取决于远程服务器的服务器类。有关说明处理 命令时各个服务器类所发生的数据库转换的表,请参见 3 章 “ SQL 参考”中的 create tablealter table create existing table 命令。


text image 数据类型

text 数据类型用于存储可打印的字符数据,其列大小取决于 Adaptive Server 的逻辑页大小。 image 数据类型用于存储十六进制编码的二进制 数据的字节数,其大小同样取决于 Adaptive Server 的逻辑页大小。 textimage unitext 数据的最大长度是由列映射到的远程服务器的服务 器类定义的。


image

注释 Adaptive Server 15.0 版本和更高版本支持组件集成服务使用

unitext

image


textimage unitext 列的限制

不能以下列方式使用 textimage unitext 列:

用作存储过程的参数 (除非将 set textptr_parameters 设置为 on

作为局部变量

order bycompute group by 子句中

在索引中

在子查询中

where 子句中 (除非带有关键字 like

用于连接


@@textsize 的限制


select 语句根据在全局变量 @@textsize 中指定的限制返回 text image unitext 数据。可使用 set textsize 命令更改此限制。 @@textsize 的初始值 为 32K@@textsize 的最大值为 2147MB


填充的奇数字节


小于 255 个字节并具有奇数字节的 image 值用前导的零填充 (插入的 “0xaaabb” 将变为 “0x0aaabb”)。如果值是奇数字节,则通过执行 insert 来插入超过 255 个字节的 image 值是错误的。


转换 text image 数据类型

可以使用 convert 函数显式地将 text 值转换为 char varchar,而将 image 值转换为 binary varbinary,但要受 character binary 数据类型的最大 长度限制,该限制取决于 Adaptive Server 的逻辑页大小。如果未指定长 度,转换后的值将具有缺省的长度 (30 个字节)。不支持隐式转换。


text unitext 数据的模式匹配

使用 patindex 函数搜索 textunitextvarchar char 列中指定模式第一 次出现的起始位置。通配符 % 必须位于模式之前或之后 (搜索第一个 或最后一个字符的情况除外)。

可以使用 like 关键字搜索特定模式。以下示例从 texttest 表的 blurb 列中 选择每个包含模式 “Straight Talk%” text 数据值:

select blurb from texttest

where blurb like "Straight Talk%"

可使用关键字 like 来搜索特定模式的 unitext 列。但是,在与 unitext 列 一起使用时, like 子句不进行优化。与 unitext 匹配的 like 模式依赖于缺 省的 Unicode 排序顺序,该顺序也用于与 unichar univarchar 数据类型 匹配的 like 模式。


输入 text image


DB-Library™ 函数 dbwritetext dbmoretext 以及 Client-Library 函数

ct_send_data 是输入 textunitext image 值的最有效方法。


readtext using bytes


如果在 text 列上使用 readtext using bytes 命令,并且偏移和大小组合导致 传输了部分字符,则出现错误。


使用 bulk copy 来处理 textimage unitext

使用 bulk copy textunitext image 值复制到远程服务器时,该服务 器必须在数据页中存储有这些值才能将它们发送到远程服务器。一旦将 值发送到远程服务器,即会释放该数据页。数据页是逐行分配并释放的。 这非常重要,因为:

分配和释放数据页的开销影响性能。

数据页是在表所在的数据库中分配的,因此该数据库必须足够大, 才能容纳任何给定行存在的最大 textunitext image 值的足够多的 数据页。


错误记录


可以使用跟踪标志 11207 来记录对 textunitext image 数据的处理

(仅对远程服务器)。


服务器类为 ASEnterprise textunitext image 数据

textunitext image 列中的指针是在初始化列时分配的。必须先将 列初始化,才能向该列输入 textunitext image 数据。这导致在远 程服务器或 Adaptive Server 上分配 2K 的页。要初始化 textunitext image 列,请使用带有 NULL update 命令或非空的 insert 命令。

在使用 writetext 输入 text unitext 数据或者使用 readtext 命令读取 text unitext 之前,必须初始化相应的列。可使用 update insert 非 空数据初始化 text 列,然后使用 writetext readtext

使用 update 将现有的 textunitext image 数据替换为 NULL 可回收 除第一页以外的所有已分配数据页。

必须使用 writetextselect intoDB-Library 函数或 Client-Library 函 数来输入大于 16KB textunitext image 值。

readtext 是访问 textunitext image 数据的最有效方法。

可以使用 insert select select into textunitext image 数据插入 代理表,但必须具有唯一的索引。


服务器类为 direct_connect textimage unitext 数据

特定的 DirectConnect 服务器对 text image 数据提供不同程度的支 持。有关 textunitext image 支持的信息,请参见 DirectConnect 文档。

服务器将在全局变量 @@textsize 中定义的长度用于列长度。发出 create table 之前,客户端应用程序应调用 set textsize @@textsize 设置为所需的长度。

对于支持 textunitext image 数据类型但不支持文本指针的

DirectConnect 服务器,存在以下限制:

不支持 writetext 命令。

不支持 readtext 命令。

不支持使用文本指针的 Client-Library 函数。

不支持使用文本指针的 DB-Library 函数。

对于支持 textunitext image 数据类型但不支持文本指针的

DirectConnect 服务器,需要执行一些额外处理以允许使用下列函数:

patindex

char_length

datalength

如果支持文本指针,服务器通过向 DirectConnect 服务器发出 RPC

来执行这些函数。

对于不支持文本指针的 DirectConnect 服务器,服务器在 sysattributes 系统表中存储数据。数据页是以逐页逐行的方式进行预分配的。列 大小由 @@textsize 来确定。如果此值不够大,将返回错误。

特定的 DirectConnect 服务器可能支持或不支持与 text 数据类型相匹 配的模式。如果 DirectConnect 服务器不支持此匹配模式,服务器将 text 值复制到内部数据页并在内部执行模式匹配。当 DirectConnect 服务器执行模式匹配时,可以获得最佳的性能。

必须使用 writetextselect into insert...select 来输入超过 450 个字节 的 textunitext image 值。

可以使用 select into insert...select 来插入 textunitext image 值, 但表必须具有唯一的索引。




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