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

 


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

文件系统访问


image

注释 映射到代理表的目录和文件现在具有 255 个字节的文件路径限制。

image


Adaptive Server 通过 SQL 语言提供对文件系统的访问。通过文件系统访 问,可以创建映射到文件系统目录或各个文件的代理表。

若要创建映射到目录或文件的代理表,必须拥有系统管理员或系统安全 员特权。


安全注意事项


只有具有系统管理员 (sa) 或系统安全员 (sso) 角色的 Adaptive Server Enterprise 用户才允许创建映射到文件或目录的代理表。这些要求考虑 了从 Adaptive Server Enterprise 服务器进程(可能在运行时具有根权限) 内部访问文件系统数据的安全方面的问题。


目录访问


可以创建代理表来引用文件系统目录。支持的语法为:

create proxy_table <table_name>

external directory at "directory pathname[;R]"

目录路径名必须引用对 Adaptive Server Enterprise 进程可见并可由其搜索 的文件系统目录。将创建一个代理表,它将列名映射到该目录中存在的 文件的属性。如果路径名的末尾附加有 ‘;R’ (表示 “递归”)扩展,则 组件集成服务包括所有下级目录中的条目。 2-3 说明了在成功完成此 命令时创建的代理表列:


2-3:代理表列

列名

数据类型

说明

id

numeric(24) — 在

32 位计算机上

numeric(36) — 在

64 位计算机上

st_dev st_ino 中的值组成的标识值。 首先将这两个值转换为单个字符串 (格 式为:“%d%014ld”),然后将字符串转换 为数字值。

filename

varchar(n)

at ‘pathname’ 指定的目录或路径名的下级目 录中的文件的名称。文件名的总长度限制为 255 个字节。

size

int

对于常规文件 — 指定文件中的字节数。

对于目录文件 — 块特殊或字符特殊文件, 未定义。

filetype

varchar(4)

文件类型 合法值为:管道文件为 FIFO ; 目录为 DIR ;字符特殊文件为 CHRS ;块 特殊文件为 BLKS ;普通文件为 REG ;所 有其它文件类型为 UNKN。将自动扩展链 接,并且链接不作为单独的文件类型出现。

access

char(10)

访问权限,以较 “标准”的 UNIX 格式提 供:“drwxrwxrwx”

uid

varchar(n)

文件所有者的名称。 n 的值由系统定义 L_cuserid 指定,该值在所有 UNIX 系统上 均为 9。此值在 Windows 系统上为 0

gid

varchar(n)

文件所有组的名称。 n 的值由系统定义 L_cuserid 指定,该值在所有 UNIX 系统上 均为 9。此值在 Windows 系统上为 0

atime

datetime

上次访问文件数据的日期 / 时间。

mtime

datetime

上次修改文件的日期 / 时间。

ctime

datetime

上次更改文件状态的日期 / 时间。

content

image

文件的实际物理内容 (仅适用于常规文件)。 如果文件为非常规文件,则为 NULL


映射到文件系统目录的代理表可以支持下列 SQL 命令:

select — 可使用 select 命令从代理表中获得文件属性和内容。内容列 完全支持用于处理文本值的内置函数 (例如 textptrtextvalidpatindexpattern)。

insert — 可使用 insert 命令创建新的文件或目录。只有 filenamefiletype content 列有意义。应该在 insert 语句中省略其余列,如果 找到这些列,则将其忽略。如果文件类型是 DIR (指示将创建新目 录),则忽略 content 列。


若要创建新的目录,请输入:

insert D1 (filename, filetype) values ("newdir", "DIR")

若要创建新的文件,请输入:

insert D1 (filename, content) values ("newdir/newfile", "This is an example.")

delete — 可使用 delete 命令删除文件或目录。只有在目录为空时, 才能将其删除。例如:

/* delete the files only */

delete D1 where filename = ’newdir/newfile’

/* deletes the directory (if empty) */

delete D1 where filetype = ’DIR’ and filename = ’newdir’


update — 只能使用 update 命令更改文件的名称。


image

注释 有些文件系统可能执行 update 作为删除,然后创建一个新的 目录条目,因此,在不对 update 命令进行限制的情况下,相同的文 件名可能被更新多次。 Sybase 建议您通过将文件名包含在 update 命 令的 where 子句中来限定对特定文件执行 update。例如,下面的语 句可能会导致多次更新:

update t1 set filename=filename + 'old' where filetype

= 'REG'

可以通过添加如 "and filename like "%.c" 这样的子句来避免该 问题。

image

readtext — 可以使用 readtext 命令检索文件的内容。

writetext — 可以使用 writetext 命令修改文件的内容。 不能对代理表执行其它 SQL 命令。

只有在 Adaptive Server 进程具有足够的特权来访问和读取文件,并且文 件类型表明是 “普通”文件时,常规文件内容才可用。在所有其它情况 下,内容列为 NULL。例如:

select filename, size, content from directory_table

where filename like ‘%.html’

如果 Adaptive Server 进程拥有常规文件的访问特权,则返回具有 “.html”

后缀的常规文件的名称、大小和内容。否则,内容列将为 NULL


如果目录路径名引用的路径名不是目录或者 Adaptive Server Enterprise 进 程不能对其进行搜索, create proxy_table 将失败。

如果已打开跟踪标志 11206,则将消息写入错误日志中,日志包含有关 目录内容的信息以及获得该信息所需的查询处理步骤。


通过下级目录递归


如果在 create proxy_table 语句中指定的路径名包含 ;R 扩展,则组件集成 服务将遍历路径名的所有下级目录,并返回每个下级目录内容的信息。 此过程完成后,查询返回的文件名包含相对于该路径名的完整文件名。 换言之,所有下级目录名称均出现在文件名中。例如,如果路径名指定 “/work;R”

create proxy_table d1 external directory at "/work;R" select filename, filetype from d1

返回下级目录中文件的值如 2-4 所示:

2-4:文件值

image

文件名 文件类型

dir1 DIR

dir1/file1.c REG

dir1/file2.c REG

dir2 DIR

dir2/file1.c REG


文件访问


Adaptive Server 中允许使用的另一个代理表类可使 SQL 访问文件系统中 的各个文件。支持的语法为:

create proxy_table <table_name>

external file at " pathname" [column delimiter “<string>”]

使用此命令时,将创建具有一列 (名为 “record”,类型为 varchar (255)) 的代理表。在这种情况下,假定文件的内容为可读字符,并且以换行符 (\n) 来分隔文件中的各个记录。


也可以使用 create [existing] table 命令,指定您自己的列名和数据类型:

create existing table fname ( column1 int null, column2 datetime null,

column3 varchar(1024) null etc. etc.

) external file at "pathname" [column delimiter “<string>”]

列可以为除 textimage Java ADT 以外的任何数据类型。 existing 关键 字的使用是可选的,并且不影响语句的处理。如果路径名引用的文件不 存在,则创建该文件。如果文件存在,则不会覆盖其内容。 create table create existing table 命令的行为没有区别。

如果将代理表映射到文件,则对该文件及其内容作出以下假定:

该文件不是目录文件、块特殊文件或字符特殊文件。

• Adaptive Server 进程至少具有文件的读取访问权限。如果要创建文 件,服务器进程必须对要在其中创建文件的目录具有写入访问权限。

现有文件的内容为人工可读格式。

文件中的记录以换行符分隔。

支持的最大记录大小为 32767 个字节。

各个列 (最后一列除外)以 column delimiter 字符串分隔,最大长度 为 16 个字节;缺省为单个制表符。

文件每个记录中的分隔值和代理表中的列之间是对应的。 通过将代理表映射到文件,您可以:

使用 select/into insert/select 将数据库表备份到文件系统。处理 insert 语句时,每列均被转换为服务器缺省字符集中的字符。转换结 果被存入缓冲区,并且所有列 (最后一列除外)均以单个制表符分隔。 最后一列以换行符终止。随后将缓冲区写入文件,表示一行数据。

提供使用 bcp in bcp out 的一种 SQL 替代形式。可以使用 select/into

语句,方便地将表备份到文件或将文件内容复制到表中。

使用 select 语句查询文件内容,并根据需要用搜索参数或函数限定 行。例如,可以读取 Adaptive Server 错误日志文件中的各个记录:

create proxy_table errorlog

external file at "/usr/sybase/ASE15_0/install/errorlog" select record from errorlog where record like "%server%"


此查询将从与 like 模式相匹配的文件返回所有行。如果行长度大于

255 个字节,则将它们截断。可以通过输入以下命令指定更长的行:

create existing table errorlog (

record varchar(512) null

)

external file at "/usr/sybase/ASE15_0/install/errorlog"

在这种情况下,将返回最长为 512 个字节的记录。由于代理表只包 含一列,每列的实际长度将由换行符的位置来确定。

文件访问只支持 selectinsert truncate table 语句。如果文件代理是这 些命令的目标, update delete 将出现错误。

将值插入文件时,首先将所有数据类型转换为 char 值,然后再由列分隔 符分隔。


image

警告! truncate table 将文件大小设置为 0

image


跟踪标志 11206 用于将消息记录到错误日志中。这些消息包含涉及文件 访问的查询处理阶段的信息。




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