dbvalid 实用程序是一个验证实用程序,可以验证目录存储中的部分或所有 SAP SQL Anywhere 表的索引和键。
验证实用程序扫描整个表,并在表上定义的每个索引和键中查找每个记录。缺省情况下,验证实用程序使用快速检查选项。
注意使用 dbvalid 实用程序可以轻松地验证目录存储表,但不能验证 IQ 主存储表。可使用 sp_iqcheckdb 存储过程验证 IQ 主存储表。
可以在系统的命令行级别访问 dbvalid 实用程序,这一访问途径有助于将 dbvalid 并入批处理文件或命令文件。
dbvalid [ ] [,... ] 下表列出了 dbvalid 实用程序的可用选项。
dbvalid 选项选项说明TABLE 语句的 WITH FULL CHECK 选项。根据目录存储的内容,此选项可能会极大延长验证所需的时间。 -fd使用数据检查验证表。除了缺省验证检查之外,还会检查所有 LONG BINARY、LONG VARCHAR、TEXT 或 IMAGE 数据类型是否均可读取。包含这些数据类型的条目可能跨越多页。在目录存储中: 域 – 用户定义的数据类型。IMAGE - LONG BINARY. 的域 TEXT - LONG VARCHAR. 的域 此选项指示数据库服务器检查每一条目使用的所有页。此选项对应于 SQL Anywhere VALIDATE TABLE 语句的 WITH DATA CHECK 选项。根据目录存储的内容,此选项可能会极大延长验证所需的时间。 -fi使用索引检查验证表。除了缺省验证检查之外,还验证表上的每个索引。此选项对应于 SQL Anywhere VALIDATE TABLE 语句的 WITH INDEX CHECK 选项。根据目录存储的内容,此选项可能会极大延长验证所需的时间。 -fx使用快速检查验证表。除了缺省检查和数据检查之外,还检查表中的行数是否与索引中的条目数匹配。此选项对应于 SQL Anywhere VALIDATE TABLE 语句的 WITH EXPRESS CHECK 选项。此选项不为每行执行单独的索引查找。 -i每个 table-name> 而不是 <index-name>,将验证主键索引。在这种情况下,对 dbvalid 来说,所提供的每个 table-name.]index-name 必须是要创建索引的表的所有者或拥有 VALIDATE ANY OBJECT 系统特权。-q安静地运行 - 不显示输出消息。-s使用校验和验证数据库页。校验和用于确定是否已在磁盘上修改了数据库页。如果创建数据库时启用了校验和,则可以使用校验和验证目录存储。校验和验证读取磁盘上的每个目录存储页,并计算其校验和。如果计算出来的校验和与页面存储的校验和不同,则该页面已被修改,并返回错误。任何无效目录存储页的页码都会显示在服务器消息窗口中。不能将 -s 与 -i、-t 或任何 -f 选项一起使用。 -t
dbvalid 命令行实用程序可验证目录存储中的部分或所有表的索引和键。dbvalid 扫描整个表并且确认每行都存在于正确的索引中。这与在每个目录存储表上运行 SQL Anywhere VALIDATE TABLE 语句相同。
注意 SAP IQ 中不支持 VALIDATE TABLE。sp_iqcheckdb 为 IQ 主存储表提供了一种类似功能。
缺省情况下,验证实用程序使用快速检查选项。但是,如果指定了 -f、-fd、-fi、-fn 或 -i,则不会使用快速检查选项。
如果目录存储表存在不一致,则 dbvalid 将报告错误。如果报告了错误,则可以删除表的所有索引和键,然后重新进行创建。您还必须重新创建表的所有外键。
警告仅在没有任何连接对数据库进行更改时,才应验证表或整个目录存储;否则,可能会报告误报的错误,指出某种形式的数据库不一致,而实际上并没有任何不一致。 程序退出代码说明0数据库验证成功1实用程序发生一般性故障2验证数据库时出错7找不到要连接的数据库(数据库名称错误)8无法连接到数据库(用户 ID/口令错误)11找不到要连接的服务器(服务器名称错误)12用于启动数据库的加密密钥不正确
下面的命令以 DBA 用户身份通过 sql 口令进行连接以验证 iqdemo 数据库的目录存储:
dbvalid -c “uid=DBA;pwd=;dbf-/IQ/IQ-16_1/demo/iqdemo.db”