升级数据库、为数据库打开或关闭 jConnect 支持、校准数据库、更改事务日志和事务日志镜像文件名或强制镜像服务器接管数据库。
ALTER DATABASE UPGRADE [ PROCEDURE ON ] [ JCONNECT { ON | OFF } ] [ RESTART { ON | OFF } ] [ SYSTEM PROCEDURE AS DEFINER { ON | OFF } ]
ALTER DATABASE { CALIBRATE [ SERVER ] | CALIBRATE DBSPACE dbspace-name | CALIBRATE DBSPACE TEMPORARY | CALIBRATE GROUP READ | CALIBRATE PARALLEL READ | RESTORE DEFAULT CALIBRATION }
ALTER DATABASE dbfile ALTER [ TRANSACTION ] LOG { ON [ log-name ] [ MIRROR mirror-name ] | OFF } [ KEY key ]
ALTER DATABASE { dbname FORCE START | SET PARTNER FAILOVER }
ALTER DATABASE dbfile CHECKSUM OFF
JCONNECT 子句 要允许 jConnect JDBC 驱动程序访问系统目录信息,请指定 JCONNECT ON。此子句用于安装提供 jConnect 支持的系统对象。要排除 jConnect 系统对象,请指定 JCONNECT OFF。只要不访问系统信息,您就仍然可以使用 JDBC。缺省情况下,JCONNECT 为 ON。
RESTART 子句 缺省情况下,RESTART 为 ON。指定 RESTART ON 并将 AutoStop 连接参数设置为 No 时,数据库将在升级后重新启动。否则,数据库将在升级后停止。
SYSTEM PROCEDURE AS DEFINER { ON | OFF } 子句 SYSTEM PROCEDURE AS DEFINER 子句指定是否要执行 16.0 之前版本的系统过程,这些过程是通过调用者或定义者(所有者)的特权执行特许任务。ON 意味着这些系统过程将通过定义者(所有者)的特权执行。OFF 意味着这些系统过程将通过调用者的特权执行。
如果未指定此子句,则缺省设置将是保持所升级的数据库的当前行为。在升级 16.0 之前版本的数据库时,这意味着以定义者身份运行这些过程。
此设置不会影响用户定义的过程,或者 16.0 版或更高版本中引入的任何过程。 有关受影响的系统过程以及设置所产生的影响的信息,请参见以调用者或定义者身份运行 16.0 之前版本的系统过程。
CALIBRATE [ SERVER ] 子句 校准除临时 dbspace 外的所有 dbspace。此子句还执行由 CALIBRATE PARALLEL READ 完成的工作。
CALIBRATE GROUP READ 子句 在临时 dbspace 上执行组读取校准。向临时 dbspace 写入大型工作表,然后使用不同的组读取大小来为文件的读取计时。如果向临时表添加空格超出了连接的限制,或高速缓存大小不足以使用最大内存大小进行校准,则校准失败并返回错误消息。
CALIBRATE PARALLEL READ 子句 为所有 dbspace 文件校准设备的并行 I/O 容量。CALIBRATE [ SERVER ] 子句也会执行此校准。
RESTORE DEFAULT CALIBRATION 子句 将磁盘传送时间 (DTT) 模型恢复为基于典型硬件和配置设置的内置缺省值。
ALTER [TRANSACTION] LOG 子句 更改事务日志或事务日志镜像文件的文件名。如果未指定 MIRROR mirror-name,此子句将为新事务日志设置一个文件名。如果数据库当前没有使用事务日志,它会开始使用一个。如果数据库已在使用事务日志,则它会开始将新文件用作其事务日志。
如果已指定 MIRROR mirror-name,此子句将为新事务日志镜像设置一个文件名。如果数据库当前没有使用事务日志镜像,则它会开始使用一个。如果数据库已在使用事务日志镜像,则它会开始将新文件用作其事务日志镜像。
您也可以使用此子句关闭事务日志或事务日志镜像。例如,ALTER DATABASE ALTER LOG OFF。
KEY 子句 指定用于事务日志或事务日志镜像的加密密钥。加密密钥可以是字符串或变量名。如果在高度加密的数据库上使用 ALTER [ TRANSACTION ] LOG 子句,则必须指定加密密钥。
dbname FORCE START 子句 强制当前用作镜像服务器的数据库服务器接管数据库。
如果主服务器中含有镜像服务器中没有的事务,则使用 FORCE START 子句可能会导致事务丢失。
建议您重新启动主服务器并执行含 SET PARTNER FAILOVER 子句的 ALTER DATABASE,使得在发生故障时事务不丢失。仅当无法将重新启动主服务器作为最终的手段时,才应使用 FORCE START 子句。请参见疑难解答:主服务器无法重新启动。
此子句可从过程或事件内部执行,并且必须在连接到镜像服务器上的实用程序数据库时执行。
SET PARTNER FAILOVER 子句 启动从主服务器到镜像服务器的数据库镜像故障转移,而不停止服务器。此语句必须在连接到主服务器上的数据库时执行,并且可从过程或事件内部执行。执行此语句时:
数据库服务器将关闭与数据库的全部连接,其中包括执行此语句的连接
数据库将停止,然后以镜像角色重新启动。
如果此语句包含在过程或事件中,则它后面的其它语句可能不会执行。
CHECKSUM 子句 禁用数据库的全局校验和。缺省情况下,新数据库启用全局校验和,而版本 11 和更早版本的数据库不启用全局校验和。
不管此子句的设置如何,数据库服务器总是为在存储设备(例如可移动驱动器)和 Windows Mobile 上运行的数据库启用写入校验和,以帮助在数据库文件损坏时尽早地将其检测出来。数据库服务器也在校验活动进行期间为某些关键页计算校验和。
对于未启用全局校验和的数据库,可通过使用 -wc 选项启用写入校验和。
语法 1 使用 ALTER DATABASE UPGRADE 语句取代升级实用程序 (dbupgrad) 来升级或更新数据库。缺省情况下,数据库将在升级后停止并重新启动。事务日志将在升级期间进行归档,新的事务日志将在数据库停止或重新启动前创建。
通常情况下,数据库的各个次要版本之间的改动仅限于补充的数据库选项和小的系统表以及系统过程更改。ALTER DATABASE UPGRADE 语句会将系统表升级到当前版本并添加任何新数据库选项。如有必要,它还会删除并重新创建所有系统过程。通过指定 PROCEDURE ON 子句可以强制重建系统过程。
如果对当前正在镜像的数据库执行 ALTER DATABASE UPGRADE 语句,将会返回一条错误消息。
还可以使用 ALTER DATABASE UPGRADE 语句将设置和系统对象恢复到最初安装时的状态。
但通过执行 ALTER DATABASE UPGRADE 语句并不能提供要求对数据库文件进行物理重组的功能。这些功能包括索引增强和数据存储方面的改进。要获得这些增强的好处,您必须卸载并重装数据库。
应先备份数据库文件,然后再尝试升级数据库。
要使用 jConnect JDBC 驱动程序访问系统目录信息,请指定 JCONNECT ON(缺省值)。要排除 jConnect 系统对象,请指定 JCONNECT OFF。设置 JCONNECT OFF 并不会从数据库中删除 jConnect 支持。只要不访问系统目录信息,就仍可以使用 JDBC。如果随后下载了更新版本的 jConnect,可通过执行(或重新执行)ALTER DATABASE UPGRADE JCONNECT ON 语句升级数据库中的旧版本。
语法 2 语法 2 用于重新校准优化程序所使用的 I/O 开销模型。此操作将更新磁盘传送时间 (DTT) 模型,它是开销模型使用的磁盘 I/O 的数学模型。当重新校准 I/O 开销模型时,数据库服务器不能用作其它用途。另外,计算机上的所有其它活动必须是空闲的。重新校准数据库服务器是一项资源开销巨大的操作,可能需要一些才能时间完成。建议您保留缺省设置。
当使用 CALIBRATE PARALLEL READ 子句时,对于少于 10000 页的 dbspace 文件不执行并行校准。虽然数据库服务器在校准操作期间会自动挂起其所有活动,但并行校准应在同一计算机上没有进程消耗重要资源的情况下执行。校准之后,可使用扩展数据库属性 IOParallelism 检索 dbspace 文件上所允许的最大并行 I/O 操作估计次数。
当存在大量相似的硬件安装时,要避免重复且耗时的重复校准活动,可分别使用 sa_unload_cost_model 和 sa_load_cost_model 系统过程,通过先卸载校准,然后再应用(装载)到另一数据库这种方式来重新使用校准。
语法 3 使用 ALTER DATABASE 语句可更改与数据库文件相关联的事务日志和事务日志镜像的名称。要执行这些更改,数据库不得处于运行状态。这些更改与事务日志 (dblog) 实用程序执行的更改相同。您可以在连接着该实用程序数据库或另一数据库(具体是哪个数据库取决于 -gu 选项的设置)时执行此语句。
如果您要更改某个加密数据库的事务日志或事务日志镜像,则必须指定一个密钥。如果数据库正使用审记,则无法停止使用事务日志。关闭审计之后,可停止使用事务日志。在过程、触发器、事件或批处理中不支持此语法。
使用 BACKUP DATABASE 语句可重命名正在运行的数据库的事务日志。例如:
BACKUP DATABASE DIRECTORY 'directory-name' TRANSACTION LOG ONLY TRANSACTION LOG RENAME; |
语法 5 此子句只能用于禁用数据库的校验和。
Windows Mobile 上不支持 ALTER DATABASE UPGRADE。
语法 1 和 2:必须拥有 ALTER DATABASE 系统特权,并且必须是唯一的数据库连接。
语法 3:必须拥有 SERVER OPERATOR 系统特权,并且具有事务日志所在目录的文件权限,同时数据库必须未运行。
是否可执行 ALTER DATABASE dbfile ALTER TRANSACTION LOG 语句取决于 -gu 数据库选项的设置,以及您是否拥有 SERVER OPERATOR 系统特权。
语法 4:您必须拥有 SERVER OPERATOR 系统特权。
执行 ALTER DATABASE dbname FORCE START 语句所需的特权可通过 -gd 数据库服务器选项进行更改。
语法 5:必须拥有 ALTER DATABASE 系统特权。
自动提交
语法 1:事务日志在升级期间进行归档。新的事务日志将在数据库于升级后重新启动时创建。
语法 1:数据库将在升级结束时停止,缺省情况下会重新启动。
SQL/2008 服务商扩充。
Transact-SQL Adaptive Server Enterprise 支持 ALTER DATABASE 语句。但是 Adaptive Server Enterprise 支持的语句的子句与 SQL Anywhere 支持的子句无交集。
以下示例禁用 jConnect 支持:
ALTER DATABASE UPGRADE JCONNECT OFF; |
以下示例将与 demo.db 关联的事务日志文件名设置为 mynewdemo.log:
ALTER DATABASE 'C:\\Users\\Public\\Documents\\SQL Anywhere 16\\Samples\\demo.db' ALTER LOG ON 'mynewdemo.log'; |
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2013, SAP 股份公司或其关联公司. - SAP Sybase SQL Anywhere 16.0 |