随着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
- 安全性管理指南
- 实用程序指南
insert
说明 向表或视图中添加新行。
语法 insert [into] [database.[owner.]]{table_name | view_name} [(column_list)]
{values (expression [, expression]...)
| select_statement [plan "abstract plan"]}
参数 into
是可选的。
table_name | view_name 是要从中删除行的表或视图的名称。如果该表或视图位于另一数据库 中,请指定该数据库名称;如果在数据库中有多个具有该名称的表或 视图,请指定所有者的名称。 owner 的缺省值是当前用户,而 database 的缺省值是当前数据库。
column_list 是要向其中添加数据的列的列表。请将此列表用小括号括起来。这些 列可以按任何顺序列出,但传入的数据 (无论是在 values 子句中还 是在 select 子句中)的顺序必须与之相同。如果一个列具有 IDENTITY 属性,则可用 syb_identity 关键字代替实际列名。
当表中仅有部分 (而不是全部)列要接收数据时,必须提供列列表。 如果未给出列列表, Adaptive Server 会假定 insert 针对接收表中的所 有列进行 (顺序与 create table 的顺序相同)。
values
expression 为指定列指定常量表达式、变量、参数或空值。请将字符和日期常量 用单引号或双引号引起来。
不能将子查询作为 expression 使用。 值列表:
• 必须用小括号括起来
• 必须与显式或隐式列列表匹配
• 可以将 “default”作为值使用
请参见第 1 章 “系统数据类型和用户定义的数据类型”《参考手册 : 过程》中的。
是标准 select 语句,用于检索要插入的值。
plan "abstract plan" 指定用于优化查询的抽象计划。它可以是用抽象计划语言指定的完整 或部分计划。仅能为 insert...select 语句指定计划。有关详细信息,请 参见 《性能和调优指南:优化程序和抽象计划》中的 “创建和使用 抽象计划”。
示例 示例 1
insert titles
values ("BU2222", "Faster!", "business", "1389",
null, null, null, "ok", "06/17/87", 0)
示例 2
insert titles
(title_id, title, type, pub_id, notes, pubdate, contract)
values ('BU1237', 'Get Going!', 'business', '1389', 'great', '06/18/86', 1)
示例 3
insert newauthors select *
from authors
where city = "San Francisco"
示例 4
insert test
select * from test
where city = "San Francisco"
示例 5
insert table1 (col1, col2, col3, col4) values (10, 4, default, 34)
用法 • 仅将 insert 用于添加新行。使用 update 修改已插入的行中的列值。
列列表确定值的输入顺序。例如,假定您有一个名为 newpublishers 的表, 其结构和内容与 pubs2 中的 publishers 表完全相同。在下面的示例中, newpublishers 表的列列表中的列与 publishers 表中选择列表的列匹配。
insert newpublishers (pub_id, pub_name) select pub_id, pub_name
from publishers
where pub_name="New Age Data"
“New Age Data”的 pub_id 和 pub_name 被存储在 newpublishers 的 pub_id
和 pub_name 列中。
在下一个示例中,newpublishers 表的列列表中列的顺序与 publishers 表的 选择列表中列的顺序不匹配。
insert newpublishers (pub_id, pub_name) select pub_name, pub_id
from publishers
where pub_name="New Age Data"
结果是:“New Age Data”的 pub_id 被存储在 newpublishers 表的 pub_name 列中,而 “New Age Data”的 pub_name 被存储在 newpublishers 表的 pub_id 列中。
可以省略列或值列表中的项,只要省略的列允许空值即可 (请参见示 例 2)。
• insert 与用 create index 命令设置的 ignore_dup_key、ignore_dup_row 和
allow_dup_row 选项交互作用。有关详细信息,请参见 create index。
• 规则或 check 约束可限制可以输入列中的合法值的域。规则用 create rule 命令创建并用 sp_bindrule 绑定。 check 约束用 create table 声明。
• 如果不显式输入值,则可提供一个缺省值。缺省值用 create default
命令创建并用 sp_bindefault 绑定,或者也可用 create table 声明。
• 如果 insert 语句违反了域或完整性规则 (请参见 create rule 和 create trigger),或者如果数据类型有误 (请参见 《参考手册:构件块》 中的 create table 和第 1 章 “系统数据类型和用户定义的数据类 型”),语句将失败, Adaptive Server 将显示一条错误消息。
• 向变量字符类型或 text 列插入空字符串 ("") 时插入的是单个空格。
char 列会被填补为所定义的长度。
• 所有插入到 varchar 和 univarchar 列中的数据的尾随空格都会被删 除,除非字符串仅包含空格。仅包含空格的字符串会被截断为单个 空格。自动截断比 char、 nchar、 unichar、 univarchar、 varchar 或 nvarchar 列指定长度长的字符串,除非将 string_rtruncation 选项设置 为 on。
插入 text、 unitext 和 image 列
将 NULL insert 到 text、ortext 或 image 列只是为文本指针分配了空间。请 使用 update 为该列获取有效的文本指针。
insert 触发器
可以定义一个触发器,当对指定表发出 insert 命令时,该触发器执行指 定操作。
在启用 CIS 时使用 insert
可将 insert 作为语言事件或参数化动态语句发送到远程服务器。
可以在单个语句中从表中选择行并将它们插入到同一表中 (请参见示 例 4)。
若要用 select 将数据从某些字段为空值的表中插入不允许空值的表中, 请为初始表的任何 NULL 条目提供替代值。例如,若要将数据插入不允 许空值的 advances 表中,可用 “0”替代 NULL 字段:
insert advances
select pub_id, isnull (advance, 0) from titles
如果不使用 isnull 函数,此命令会将所有含非空值的行插入到 advances 表 中,并对在 titles 表的 advance 列中包含 NULL 的所有行产生错误消息。
如果无法对数据进行这种替代,则不能将包含 null 值的数据插入已有
not null 规定的列。
两个表可以在结构上相同,但在某些字段是否允许有空值这一点上是不 同的。使用 sp_help 可查看表中的列的空类型。
事务和 insert
设置链式事务模式后,如果当前没有活动的事务, Adaptive Server 将隐 式地用 insert 语句启动事务。若要完成插入,则必须提交事务,或者回 退更改。例如:
insert stores (stor_id, stor_name, city, state) values ('999', 'Books-R-Us', 'Fremont', 'AZ')
if exists (select t1.city from stores t1, stores t2 where t1.city = t2.city and t1.state = t2.state
and t1.stor_id < t2.stor_id) rollback transaction
else
commit transaction
在链式事务模式下,此批处理会启动一个事务并向 stores 表中插入一个 新行。如果插入与表中另一商店包含相同州和城市信息的行,则将回退 对 stores 进行的更改并结束该事务。否则它提交插入并结束事务。有关 链式事务模式的详细信息,请参见 《Transact-SQL 用户指南》。
向 IDENTITY 列插入值
• 向表中插入一行时,不要在列列表中包括 IDENTITY 列的名称,也 不要在值列表中包括 IDENTITY 列的值。如果表仅包含一列
( IDENTITY 列),应省略列列表并将值列表留空,如下所示:
• 首次向表中插入行时, Adaptive Server 为 IDENTITY 列指派值 1。 每个新行的列值都比上一个值增加 1。此值优先于在 create table 或 alter table 语句中为列声明的或用 sp_bindefault 绑定到列的任何缺省 值。
服务器故障会使 IDENTITY 列值产生间隔。间隔的最大大小取决于 identity burning set factor 配置参数的设置。间隔也有可能来源于对 IDENTITY 列进行的手动插入、删除行或事务回退。
• 为列的基表设置 identity_insert table_name on 后,表所有者或对表拥 有 insert 权限的用户可以向 IDENTITY 列显式插入值。只有表所有 者或对表拥有 identity_insert 权限的用户可对表设置 identity_insert table _name on。用户可以在数据库中每次为一个表设置 identity_insert table_name on。identity_insert 为 on 时,每个 insert 语句都必须包含一 个列列表,并为 IDENTITY 列指定显式值。
通过在 IDENTITY 列中插入值,可以指定该列的源值或恢复误删除 的行。除非创建了 IDENTITY 列的唯一索引,否则 Adaptive Server 不会检验插入的值的唯一性;您可以插入任何正整数。
要向 IDENTITY 列插入显式值,表的所有者、数据库所有者或系统 管理员必须为列的基表 (而不是用于插入表的视图)设置 identity_insert table_name on。
• 可插入 IDENTITY 列的最大值为数值 10 precision - 1。对于整数标 识,最大值为其类型的最大允许值 (例如对于 tinyint 为 255,对于 smallint 为 32767)。一旦 IDENTITY 列达到此值,再执行任何 insert 语句都将返回中止当前事务的错误。
如果发生这种情况,请使用 create table 语句创建一个与旧表相同但 IDENTITY 列的精度更大的表。一旦创建完新表,就应使用 insert 语 句或 bcp 实用程序将数据从旧表复制到新表。
• 可使用 @@identity 全局变量检索插入 IDENTITY 列的最后一个值。 如果最后一条 insert 或 select into 语句影响到不含 IDENTITY 列的 表, @@identity 返回值 0。
• 选入结果表中的 IDENTITY 列遵循下列与 IDENTITY 属性继承相关 的规则:
• 如果多次选择 IDENTITY 列,它将在新表中定义为 not null。该
IDENTITY 列将不继承 IDENTITY 属性。
• 如果选择 IDENTITY 列作为表达式的一部分,结果列不会继承 IDENTITY 属性。如果表达式中的任何列允许使用 null,则它 创建为 null;否则,将它创建为 not null。
• 如果 select 语句包含 group by 子句或集合函数,结果列不会继承 IDENTITY 属性。包含 IDENTITY 列的集合的列将创建为 null; 其它列则创建为 not null。
• 通过联合或连接选入表中的 IDENTITY 列不保留 IDENTITY 属 性。如果表中包含 IDENTITY 列和 null 列的联合,则新列将定 义为 null;否则定义为 not null。
通过视图插入数据
• 如果视图是用 with check option 创建的,则通过视图插入的每一行都 必须符合视图的选择标准。
例如, stores_cal 视图包括 stores 表中 state 值为 “CA”的所有行:
create view stores_cal as select * from stores where state = "CA"
with check option
with check option 子句根据视图的选择标准检查每个 insert 语句。state 值不是 “CA”的行将被拒绝。
• 如果视图是用 with check option 创建的,则所有从基 视图派生的视图 都必须满足视图的选择标准。通过派生视图插入的每个新行都必须 能通过基视图查看。
以从 stores_cal 派生的视图 stores_cal30 为例。此新视图包含位于
California 且付款方式为 “Net 30”的商店的有关信息:
create view stores_cal30 as select * from stores_cal where payterms = "Net 30"
因为 stores_cal 是通过 with check option 创建的,所以通过 stores_cal30 插入或更新的行都必须可以通过 stores_cal 查看。 state 值不是 “CA”的任何行都会被拒绝。
stores_cal30 本身并没有 with check option 子句。这意味着可以通过 stores_cal30 插入或更新 payterms 值不是 “Net 30”的行。即使再也 无法通过 stores_cal30 查看该行,以下 update 语句仍会成功:
update stores_cal30
set payterms = "Net 60" where stor_id = "7067"
• 在用 with check option 创建的连接视图中不允许使用 insert 语句。
• 如果通过连接视图来插入或更新行,所有受影响的列都必须属于同 一基表。
对表进行分区以提高插入性能
无聚簇索引的未分区表由一个双重链接的数据库页链组成,因此每次对 表进行插入都使用链的最后一页。 Adaptive Server 在插入行时在最后一 页上持有一个排它锁,阻止其它并发事务向表中插入数据。
使用 alter table 命令的 partition 子句对表进行分区会创建额外的页链。每 个链都有自己的最后一页,可用于并发插入操作。这通过减少页争用提 高了插入性能。如果表分布在多个物理设备上,则分区可减少服务器将 数据从高速缓存刷新到磁盘时的 I/O 争用,从而可提高插入性能。有关 对表进行分区以提高插入性能的详细信息,请参见 《性能和调优指南: 基础知识》中的 “控制物理数据放置”。
标准 符合 ANSI SQL 的级别符合初级- 标准。 以下是 Transact-SQL 扩展:
• insert 语句选择部分中的 union 运算符。
• 用数据库名对表名或列名的限定。
• 通过包含连接的视图进行插入。
注释 注意:FIPS 标志程序不检查通过包含连接的视图进行的插入。
权限 对 insert 函数的权限检查因您的细化权限设置而异。
细化权限已启用 在启用细化权限的情况下,您必须是表所有者或对表拥有 insert 权限的用户。 只有表所有者或拥有 insert 和 identity_insert 权限的用户可以对表的 IDENTITY 列进行插入操作。
细化权限已禁用 在禁用细化权限的情况下,您必须是表所有者或具有 sa_role 的用户。
insert 权限缺省情况下将授予表所有者。
表的 IDENTITY 列的 insert 权限仅授予表的所有者、数据库所有者和系统管理 员。
审计 sysaudits 的 event 和 extrainfo 列中的值如下:
事件 |
审计选项 |
审计的命令或访问权限 |
extrainfo 中的信息 |
41 |
insert |
向表中插入数据的 insert 命令 |
• Roles – 当前活动角色 • 关键字或选项 – if: • insert – INSERT • select into – INSERT INTO,后跟完全限定对象名 • 先前值 – NULL • 当前值 – NULL • 其它信息 – NULL • 代理信息 – set proxy 有效时的初始登录名 |
42 |
insert |
向视图中插入数据的 insert 命令 |
• Roles – 当前活动角色 • 关键字或选项 – INSERT • 先前值 – NULL • 当前值 – NULL • 其它信息 – NULL • 代理信息 – set proxy 有效时的初始登录名 |
另请参见 命令 alter table, create default, create index, create rule, create table, create trigger, dbcc, delete, select, update.
数据类型 《参考手册:构件块》的第 1 章 “系统数据类型和用户定义的数 据类型”。 .
系统过程 sp_bindefault, sp_bindrule, sp_help, sp_helpartition, sp_unbindefault, sp_unbindrule.
实用程序 bcp .
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。+-------------------------------------华丽的分割线-------------------------------------------------------------------------