分类: Sybase
2008-04-10 21:09:39
来源:赛迪网 作者:Sybase |
重建数据库(不整理碎片)
您可参照以下步骤来执行一个不整理磁盘碎片的重建任务。
1、 关闭SQL Anywhere 和Adaptive Server Anywhere 数据库服务器因为版本10 的dbunload
实用工具不能针对运行在较早版本数据库服务器上的数据库工作。例如:
2、 确保版本10 的实用工具在系统路径中优先于别的工具。
3、 使用dbunload 实用工具创建一个reload.sql 文件。例如:
4、 使用初始化工具(dbinit)创建一个新数据库。或在Sybase Central 中创建一个新数据库。例
如:
5、使用Interactive SQL 连接新数据库:
6、 执行以下命令将磁盘空间加入数据库中以便将数据加载。请务必增加足够大的磁盘空间以
容纳数据。磁盘空间必须是连续的,这样可以提高加载的性能。例如:
7、 在Interactive SQL 中将reload.sql 应用到数据库中。
已知问题
如果在运行dbunload 实用工具或卸载向导的过程中重建失败,您可使用以下步骤来帮助
判断失败原因:
1、 运行使用-n 选项的dbunload 命令:
2、创建新的,空白的版本10 数据库
3、 将reload.sql 应用至空白的数据库中:
|
4、 根据将reload.sql 文件应用到新数据库的消息,酌情修改reload.sql 或原始数据库。
以下表格列出了可能导致重建失败的原因和其解决办法。
已知问题:
如果表名有对象拥有者前缀时,存储过程或触发
器语句中的DECLARE LOCAL TEMPORARY
TABLE 语句产生表达式错误。
解决办法:
去掉对象拥有者。
已知问题:
如果CREATE TRIGGER 语句不包含触发器依
赖表的拥有者,而出现“Table 'table-name' not
found”错误的。
解决办法:
将表名加上对象拥有者前缀。
已知问题:
如果一个对象名称(例如表、列、变量或参数名)
与最新版本的SQL Anywhere 保留字相关(例如
NCHAR),则加载失败。例如:
|
解决办法:
将使用的保留字替换成别的名称。对于变量,前
缀的@字符通常可用来避免命名冲突。详情请参
阅SQL Anywhere 文档的“保留字”。
已知问题:
如果数据库是被版本9 或更早版本的dbunload
卸载的,则reload.sql 文件中包含了对
ml_add_property 系统过程的调用,但这个过程
在版本10 中不存在
解决办法:
请使用版本10 的卸载工具。
已知问题:
如果数据库是被版本9 或更早版本的dbunload
卸载的,则使用T-SQL 书写的外连接(OUTER
JOINS, *=或者=*)所创建的视图可能不会被正确
加载:
解决办法:
在加载脚本中加入以下行:
|
您必须后续使用T-SQL 重写视图。