随着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数据库技术问题需要咨询,请联系我!
以下官方手册为ASE 15.7 ESD#2中文版:
- 新增功能公告 适用于 Windows、Linux 和 UNIX 的 Open Server 15.7 和 SDK 15.7
- 新增功能摘要
- 新增功能指南
- ASE 15.7 发行公告
- 配置指南(windows)
- 安装指南(windows)
- 参考手册:构件块
- 参考手册:命令
- 参考手册:过程
- 参考手册:表
- Transact-SQL® 用户指南
- 系统管理指南,卷 1
- 系统管理指南,卷 2
- 性能和调优系列:基础知识
- 性能和调优系列:锁定和并发控制
- 性能和调优系列:监控表
- 性能和调优系列:物理数据库调优
- 性能和调优系列:查询处理和抽象计划
- 性能和调优系列:使用 sp_sysmon 监控 Adaptive Server
- 性能和调优系列:利用统计分析改进性能
- 程序员参考 jConnect for JDBC 7.0.7
- Adaptive Server Enterprise 中的 Java
- 组件集成服务用户指南
- Ribo 用户指南
- 内存数据库用户指南
- Sybase Control Center for Adaptive Server® Enterprise
- 安全性管理指南
- 实用程序指南
代理表
代理表是实现位置透明度的关键所在。代理表是包含指向远程对象的元 数据的本地表。有关远程对象的信息,请参见 第 4 页的 “对象类型”。 远程表映射到代理表,以使该远程表以本地表的形式出现。
第 3 章 “ SQL 参考”中完整描述了如何执行这一操作。
使用 create table 命令
create table 命令使用以下语法同时创建代理表和远程表:
create table table_name (column_list) [ [ external {table | file}] at “pathname” ]]
远程位置是使用 at pathname 子句指定的。create table 允许使用外部类型
table 和 file。每列的数据类型传递给远程服务器而不进行转换。
create existing table 命令允许对现有表 (代理表)进行定义。此选项的语 法与 create table 命令类似:
create existing table table_name (column_list) [[external {table | procedure | file}] at pathname]
但接收到此命令时服务器所采取的操作与接收到 create table 命令时所采 取的操作明显不同。在远程位置上不创建新表;而是检查表映射并检验基 础对象是否存在。如果对象不存在 (主机数据文件或远程服务器对象), 则拒绝该命令,并显示错误消息。
如果对象存在,则获取其属性并将其用于更新系统表 sysobjects、 syscolumns 和 sysindexes。
• 确定现有对象的性质。
• 对于远程服务器对象 (而不是 RPC),将找到的表或视图的列属性 与 column_list 中定义的属性进行比较。列名必须匹配 (区分大小 写),列类型和长度必须匹配 (或至少是可转换的),并且列的 NULL 属性必须匹配。
• 提取主机数据文件或远程服务器表中的索引信息,并将其用于创建 系统表 sysindexes 的行。这将用服务器的术语来定义索引和键,并 允许查询优化程序考虑该表中可能存在的任何索引。
成功定义现有表后,对该表发出 update statistics 命令。这使查询优化程 序能够对索引选择和连接顺序做出正确的选择。
使用 create table 或 create existing table 命令时,必须使用已识别的 Adaptive Server 数据类型来指定所有数据类型。如果远程服务器表位于 异构服务器类中,则在检索数据时,自动将远程表的数据类型转换为指 定的 Adaptive Server 类型。如果无法进行转换, create table 或 create existing table 命令将不允许创建或定义该表。
以下示例从定义服务器开始定义远程 Adaptive Server 表 authors:
1 定义名为 SYBASE 的服务器。它的服务器类为 ASEnterprise,它在
interfaces 文件中的名称为 SYBASE:
exec sp_addserver SYBASE, ASEnterprise, SYBASE
2 定义远程登录别名。如果两个服务器上的 username 和 password 相 同,则此步骤为可选步骤。用户 “sa” 在远程服务器 SYBASE 上使用 用户名 “sa” 和口令 “timothy” 标识身份:
exec sp_addexternlogin SYBASE, sa, sa, timothy
3 定义远程 authors 表:
au_id |
varchar(11) |
not null, |
au_lname |
varchar(40) |
not null, |
au_fname |
varchar(20) |
not null, |
phone |
char(12) |
not null, |
address |
varchar(40) |
null, |
city |
varchar(20) |
null, |
state |
char(2) |
null, |
country |
varchar(12) |
null, |
postalcode |
char(10) |
null |
) |
au_id |
varchar(11) |
not null, |
au_lname |
varchar(40) |
not null, |
au_fname |
varchar(20) |
not null, |
phone |
char(12) |
not null, |
address |
varchar(40) |
null, |
city |
varchar(20) |
null, |
state |
char(2) |
null, |
country |
varchar(12) |
null, |
postalcode |
char(10) |
null |
) |
create existing table authors (
EXTERNAL TABLE at "SYBASE.pubs2.dbo.authors"
4 更新表的统计信息以确保查询优化程序进行合理的选择:
5 执行查询以测试配置:
select * from authors where au_lname = 'Carson'
使用 create proxy_table 命令不要求列列表。组件集成服务从它自远程表 获得的元数据中派生出列的列表。
如果对象确实存在,则 create proxy_table 更新 sysobjects、 syscolumns 和
sysindexes。
可以在 create existing table 语句中添加一个可选子句,表明该远程对象实 际上是一个存储 (或其它)过程,而不是一个表。如果没有此子句, 则将该远程对象假定为表或视图:
create existing table t1 (
column_1 int, column_2 int
)
EXTERNAL PROCEDURE AT "SYBASE.mydb.dbo.p1"
如果远程对象是类型过程,则会出现几种不同的处理方式:
• 不为此类型的对象创建任何索引。
• 必须提供与远程过程结果集的说明相匹配的列的列表。不对该列表 的准确性进行任何检验。
• 可以使用以下划线 (‘_’)开头的列名来指定不属于远程过程结果 集的列。这些列称为参数列。例如:
create existing table t1 (
a int,
b int,
c int,
_p1 int null,
_p2 int null
)
external procedure
at “SYBASE.sybsystemprocs.dbo.myproc”
select a, b, c from t1
where _p1 = 10 and _p2 = 20
• 在此示例中,参数列 _p1 和 _p2 不应出现在结果集中,但可以在查 询中引用。组件集成服务通过名为 @p1 和 @p2 的参数将搜索参数 传递给远程过程。
• 如果参数列包含在 select 列表中,并且是作为参数传递给远程过程 的,那么其值应等于在 where 子句中为其指定的值。如果参数列未 出现在 where 子句中,或者不能作为参数传递给远程过程,而是包 含在 select 列表中,则其值为 NULL。
• 如果 Adaptive Server 查询处理器认为某个参数列是可搜索的参数, 则可以将该参数列作为参数传递给远程过程。如果它没有包括在任 何 “or” 谓词中,那么它通常是可搜索的参数。例如,以下查询禁止 将参数列用作参数。
select a, b, c from t1
where _p1 = 10 OR _p2 = 20
• 在 create existing table 语句中用于参数列定义的规则:
• 参数列必须允许 NULL。
• 参数列不能位于常规结果列之前 (它们必须出现在列的列表的 末尾)。
由于允许将远程过程作为本地表来定义,组件集成服务可以将远程 过程的结果集作为 “虚拟表”来处理。该表可以进行排序,与其它 表连接,或通过 insert/select 语法插入到另一个表中。但是,虚拟表 被视为只读:
• 不能对 procedure 类型的表发出 delete、 update 或 insert 命令;
• 不能对虚拟表发出 create index、truncate table 或 alter table 命令。
如果已经在服务器中定义了 procedure 类型的对象,将不会向该对象所在 的远程服务器发出查询。相反,组件集成服务将发出一个 RPC,并将该 RPC 的结果作为只读表来处理。
示例 create existing table rtable ( col1 int,
col2 datetime, col3 varchar(30)
)
external procedure at “SYBASE...myproc “
select * from rtable
当发出此查询时,组件集成服务将名为 myproc 的 RPC 发送到服务器 SYBASE。行结果的处理方式与来自任何其它表的结果类似;可以将它 们排序、与其它表连接、分组或插入到另一个表中,等等。
RPC 参数应表示限制结果集的参数。如果发出不带参数的 RPC,则返回 该对象的整个结果集。如果发出带有参数的 RPC,则每个参数将进一步 限制结果集。例如:
select * from rtable where col1 = 10
导致将名为 @col1 的单个参数与 RPC 一起发送。其值为 10。
组件集成服务尝试将尽可能多的搜索参数传递给远程服务器,但根据正 在执行的 SQL 语句,组件集成服务可能会自行计算结果集。每个参数都 表示一个完全匹配的搜索,例如 = 运算符。
以下规则定义发送到 RPC 的参数。如果 RPC 用作组件集成服务对象, 则在开发期间应该牢记这些规则。
• 组件集成服务将 where 子句中的 = 运算符作为参数发送。例如,此 查询导致组件集成服务发送两个参数:
select * from rpc1 where a = 3 and b = 2
参数 a 的值为 3,参数 b 的值为 2。RPC 应只返回结果行,其中列 a
的值为 3,列 b 的值为 2。
• 如果没有确切的搜索条件,组件集成服务不会发送 where 子句的任 何参数或 where 子句的任何部分。例如:
select * from rpc1 where a = 3 or b = 2 由于是 or 子句,组件集成服务不会发送 a 或 b 的参数。 另一个示例:
select * from rpc1 where a = 2 and b < 3
组件集成服务发送 a 和 b 的参数,并过滤包含 b 值小于 3 的行。
Adaptive Server 配置允许使用 2K、 4K、 8K 或 16K 个字节的页大小。 另外,取消了 char/binary 列的 255 个字节的限制。Adaptive Server 支持 char、 varchar、 univarchar、 unichar、 binary 和 varbinary 数据类型的扩展 大小。新限制取决于服务器的页大小。对于不同的页大小,新限制如下:
表 2-1:新限制 |
|
页大小 |
最大列大小 |
2048 |
2048 |
4096 |
4096 |
8192 |
8192 |
16384 |
16384 |
这些大小是近似值。基本规则指定限制是允许一页可容纳的单行的最大 大小。这些限制还取决于创建表时所指定的锁定方案。假定批量代理表 是使用缺省锁定方案 (即所有页锁定)创建的。
• Transact-SQL 变量和参数的长度限制 — char、 varchar、 binary 和 varbinary 变量的大小扩展为等于给定服务器中相同数据类型列的最 大大小。这允许将变量传递给长度超过 255 个字节的当前限制的存 储过程 (或 RPC)。
• 每个表的列数限制 — 只要页面仍可以容纳列,则每个表允许有多 达 1024 列。可变长度列数的限制为 254 个 (空列也被视为可变长 度列)。
• 索引的宽度限制 — 根据服务器页大小, Adaptive Server 中索引的总 宽度可以大于以前版本中的宽度。 表 2-2 按照页大小列出了最大索 引宽度:
表 2-2:最大索引宽度
页大小 |
索引宽度 |
2048 |
600 |
4096 |
1250 |
8192 |
2600 |
16384 |
5300 |
• 每个索引的列数限制 — 每个索引 31 列。
• 表名、列名和索引名的长度最多可为 255 个字节。
• 标识符名现在最多可为 255 个字节。
create new proxy table
如上所述, create table 允许以扩展长度指定数据类型为 char、 varchar、 binary 和 varbinary 的列。这些数据类型和长度转移到创建表的远程服务 器上。
create existing proxy table
create existing table 命令同样允许以大于 255 个字节的长度指定列。这允 许组件集成服务将远程数据库中以前必须作为 text 或 image 列处理的列 作为 char、 varchar、 binary 或 varbinary 来处理。
仍有可能会出现列大小不匹配的错误。例如,当远程数据库包含列长度 为 5000 个字节的表,而处理 create existing table 的 Adaptive Server 只支 持长度最多为 1900 个字节的列时,将发生大小不匹配错误。在这种情 况下,必须重新将该列指定为 text 或 image 列。
当代理表的列大小超过远程表中相应列的大小时,将检测到大小不匹配 错误并中止该命令。
create proxy_table
create proxy_table 从远程服务器导入元数据,将列信息转换为内部 create existing table 命令,并从导入的元数据派生一个列列表。获得列元数据 时,必须从远程 DBMS 类型转换为内部 Adaptive Server Enterprise 类型。
如果远程 char、 varchar、 binary 或 varbinary 列的大小超过本地服务器所 允许的最大值,则将其长度截短到可能的最大大小(这取决于页大小)。 如果大小超过 16K 字节,则将类型从 char 或 varchar 转换为 text,或者从 binary 或 varbinary 转换为 image。
alter table
如果对代理表执行 alter table 命令,则首先在本地对其进行处理,然后再 转移到远程服务器上执行。如果远程执行失败,则返回本地更改并中止 该命令。
远程服务器必须相应地处理命令,否则提交错误。如果出现错误,则中 止并回退命令的组件集成服务端。
select、 insert、 delete、 update
当数据操作语言 (DML) 操作涉及代理表时,组件集成服务将处理较大 的列值。组件集成服务使用以下策略之一来处理 DML:
• Tabular data stream (TDS)™ 语言命令 — 如果可以将整个 SQL 语句转 移到远程服务器,则组件集成服务使用 CT-Library ct_command (CS_LANG_CMD) 生成的 TDS 语言命令来执行此操作。
语言缓冲区的文本可能包含超过 255 个字节的 long char 或 binary 值 数据,远程服务器必须处理这些命令缓冲区的语法分析。
• TDS 动态命令 — 如果组件集成服务不能将整个 SQL 语句转移到远 程服务器 (例如,强制组件集成服务为语句提供功能性补偿),则 可以使用 TDS 动态命令以及所需的参数或使用 CT-Library 函数 ct_dynamic (CS_PREPARE_CMD, CS_EXECUTE_CMD, CS_DEALLOC_CMD) 来处理 insert、 update 或 delete。
该动态命令的参数可能为 CS_LONGCHAR_TYPE 或
CS_LONGBINARY_TYPE。
• TDS 游标命令 — 如果必须执行功能性补偿,则可以使用 CT-Library 游标操作来处理 select、 update 和 delete 的代理表操作。例如,如果 更新代理表,而 from 子句中包含多个表,则组件集成服务可能需要 从多个数据源读取行,并且为每个限定行对目标表应用 update。在 这种情况下,组件集成服务使用 ct_cursor ({CS_DECLARE_CMD, CS_OPEN_CMD, CS_CURSOR_UPDATE_CMD, CS_CLOSE_CMD, CS_DEALLOC_CMD})。
准备好游标之后,请指定参数。这些参数可能包含 CS_LONGCHAR
或 CS_LONGBINARY 类型的参数。
• 批量插入命令 — 执行 select/into 操作时,如果目标服务器支持批量 接口 (仅适用于远程 Adaptive Server 和 DirectConnect for Oracle), 则必须准备好远程服务器以处理大于 255 的 char 和 binary 值(通过 CS_LONGCHAR、 CS_LONGBINARY 值)。
可以将来自远程服务器的列作为 CS_LONGCHAR_TYPE 或
CS_LONGBINARY_TYPE 类型返回到组件集成服务。
RPC 处理
发送到远程服务器的 RPC 可包含 CS_LONGCHAR 和 CS_LONGBINARY
类型的参数。组件集成服务命令 cis_rpc_handling 支持这些类型。
由于早期版本的 Adaptive Server 不支持 CS_LONGCHAR 或 CS_LONGBINARY 数据,因此不允许将长参数发送给早于 12.5 版的 Adaptive Server。在发送 RPC 以前,组件集成服务检查远程服务器的 TDS 功能,如果远程服务器不能接受这些数据类型,则出现错误。
sp_tables
Adaptive Server Anywhere 或 ASIQ 存储过程 sp_tables 仅返回用户表。
Adaptive Server 允许在任意数量的组件集成服务实例之间进行级联代理 表配置。
在某些条件下,这可能会出现问题,如循环引用或事务 (其中,第二个 代理表在与第一个代理表相同的服务器上引用本地表)。在这种情况下, 可能会导致组件集成服务检测不到的应用程序死锁。必须对系统进行配 置以避免这些潜在的缺陷。
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)上提取数据的非常规恢复工具
- 适用于所有的SQL Anywhere版本 包括:5.x,6.x,7.x,8.x,9.x,10.x,11.x,12.x,16.x,17.x
- 适用于所有的UltraLite版本
- 能够恢复出来表结构和数据
- 能够恢复自定义数据类型
- 能够恢复存储过程等对象的语法
- 能够导出到目标数据库
- 能够导出到SQL文件并生成导入脚本
- 支持多种字符集,包括:cp850、cp936、gb18030、utf8等
- 能够恢复未加密或者简单加密类型的数据
- 简单易用
- 限制:不支持AES加密的数据文件
SQL Anywhere数据库非常规恢复工具ReadASADB使用介绍
Sybase SQL Anywhere数据库恢复工具ReadASADB适用场景
各种误操作:
- 误截断表(truncate table)
- 误删除表(drop table)
- 错误的where条件误删数据
- 误删除db或log文件
- 误删除表中的字段
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的主要功能:
- 被勒索病毒加密数据文件及备份文件情况下的恢复;
- 系统崩溃只剩下数据文件的情况下的恢复,甚至数据库文件不存在而只有损坏的备份文件情况下的恢复;
- 因断电、硬盘坏道等造成数据库文件损坏情况下的恢复;
- delete数据恢复、误update数据恢复、误删除表(drop)恢复、误truncate表恢复 等;
- 各种Sybase内部系统表损坏、索引错误的修复;
- master数据库损坏而无法正常运行情况下的恢复;
- Sybase数据库被标记为可疑,不可用等情况的恢复;
- Sybase数据库中数据文件内部出现坏块情况下的恢复;
- Sybase数据库无数据文件但有日志文件的情况下的恢复;
- Sybase数据库只有数据文件无任何日志文件的情况下的恢复;
- Sybase数据文件被误删除情况下的碎片提取恢复;
- 磁盘阵列上的Sybase数据库被误格式化情况下的数据库恢复;
- 数据库sysobjects等系统表损坏无法正常应用情况下的恢复;
- Sybase数据库还原数据库出现失败情况下的恢复;
- 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.xSQL Server数据库恢复工具SQLRescue:
一个不依赖数据库管理系统、直接从SQL Server数据库文件上提取数据的业内领先的恢复工具!能够从损坏的SQL Server数据库文件(.mdf)上提取数据的非常规恢复工具。
SQL Server数据库恢复工具SQLRescue的主要功能:
- 系统崩溃只剩下数据文件的情况下的恢复,即无日志文件或者日志文件损坏情况下的恢复;
- 断电导致数据库文件损坏情况下的恢复;
- 硬盘坏道造成数据库损坏情况下的恢复;
- 数据文件内部存在坏页情况下的恢复;
- 企业管理器误删除数据表记录,管理软件误删除数据表记录的恢复;
- 并闩锁错误、格式化、误删除后导致软件不能使用的情况;
- 无法读取并闩锁页sysindexes失败情况下的修复;
- 数据文件被误删除情况下的碎片提取恢复;
- 系统表损坏、索引错误、误删除数据库表、删除记录的数据找回;
- master数据库损坏而无法正常运行情况下的恢复;
- 数据文件无法附加情况下的数据恢复;
- 数据库被标记为可疑,质疑,不可用等情况的恢复;
- 数据库sysobjects等系统表损坏情况下的恢复;
- 数据被误(drop、delete、truncate)删除表数据的恢复,误update后的数据恢复等;
- 还原时报一致性错误,错误823等情况下的数据恢复,各种错误提示的数据库文件修复;
- 数据库被误格式化等情况下的数据库恢复;
- 日志收缩造成数据库损坏情况下的恢复;
- 仅剩损坏的备份文件情况下的恢复。
SQL Server数据库恢复工具SQLRescue技术特点:
只要SQL Server数据库的数据文件存在,我们就有办法帮您从数据文件中找回重要数据。- 从数据文件中直接恢复数据
- 不能附加时直接恢复数据并生成新的数据库
- 系统表损坏的数据库修复
- 快速修复SQL 823错误、连接中断错误
SQL Server数据库恢复工具SQLRescue支持的版本:
Microsoft SQL Server 7.0, 2000, 2005, 2008, 2008R2, 2012, 2014, 2016, 2017,2019。+-------------------------------------华丽的分割线-------------------------------------------------------------------------