紧急求救:谁知道出错的原因和解决办法?

JetJack 2003-10-20 12:55:23
有一个使用了近两年的数据库,大小接近3G,数据库是SQL SERVER2000,客户端程序用delphi5开发,在进行业务结算时要把临时表中要结算的记录保存到历史表中,使用下面的SQL 语句:
insert into ordercost
select inid,wardid,intimes,costdate,ordercode,dose,
ptimes,orderprice,lors,performid,payid,itemid,:pay as pay,type,docnum
from tmporderCost
where costdate between :day1 and :day2
and intimes=:intimes
and inid=:inid
and ensure=1
:pay是结算标识,:day1和:day2是时间范围,:intimes和:inid是查询条件
这语句的执行一直没有问题,知道今天早上出现如下错误提示:
Project finance.exe raised exception class EDBEngineError with message 'Key Violation'
[Miscrosoft][ODBC SQL Server Driver][SQL Server]表错误:数据库ID7,对象ID1186103266,索引ID
General SQL Server error.
4. 链的链接不匹配.(1:270824)->Next=(1:22923)。但(1:22923)->Prev=(1:270825)
Process stopped.Use Step or Run to continue.
我用查询分析器单独运行这条语句也出现上面的出错信息,估计不是应用程序的问题,好象是数据表的问题。
...全文
72 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
JetJack 2003-10-20
  • 打赏
  • 举报
回复
终于顺利排除故障,谢谢两位大哥的指点。 #:P
welyngj 2003-10-20
  • 打赏
  • 举报
回复
insert into ordercost
select inid,wardid,intimes,costdate,ordercode,dose,
ptimes,orderprice,lors,performid,payid,itemid,[:pay] as pay,type,docnum
from tmporderCost
where costdate between [:day1] and [:day2]
and intimes=[:intimes]
and inid=[:inid]
and ensure=1
pengdali 2003-10-20
  • 打赏
  • 举报
回复
维护语句

DBCC DBREINDEX 重建指定数据库中表的一个或多个索引
DBCC DBREPAIR 除去损坏的数据库
DBCC INDEXDEFRAG 整理指定的表或视图的聚集索引和辅助索引碎片
DBCC SHRINKDATABASE 收缩指定数据库中的数据文件大小
DBCC SHRINKFILE 收缩相关数据库的指定数据文件或日志文件大小
DBCC UPDATEUSAGE 报告和更正 sysindexes 表的不正确内容,
该内容可能会导致通过 sp_spaceused
系统存储过程产生不正确的空间使用报表


状态语句
DBCC INPUTBUFFER 显示从客户端发送到MS SQL Server 的最后一个语句
DBCC OPENTRAN 如果在指定数据库内存在最旧的活动事务和最旧的分布和非分布式复制事务,
则显示与之相关的信息。只有当存在活动事务或数据库包含复制信息时,
才显示结果。如果没有活动事务,就显示信息性消息
DBCC OUTPUTBUFFER 以十六进制或 ASCII 格式返回指定系统进程 ID (SPID) 的当前输出缓冲区
DBCC PROCCACHE 以报表形式显示有关过程高速缓存的信息
DBCC SHOWCONTIG 显示指定的表的数据和索引的碎片信息
DBCC SHOW_STATISTICS 显示指定表上的指定目标的当前分布统计信息
DBCC SQLPERF 提供有关所有数据库中的事务日志空间使用情况的统计信息
DBCC TRACESTATUS 显示跟踪标记的状态
DBCC USEROPTIONS 返回当前连接的活动(设置)的 SET 选项



验证语句
DBCC CHECKALLOC 检查指定数据库的磁盘空间分配结构的一致性
DBCC CHECKCATALOG 检查指定数据库中的系统表内及系统表间的一致性
DBCC CHECKCONSTRAINTS 检查指定表上的指定约束或所有约束的完整性
DBCC CHECKDB 检查指定数据库中的所有对象的分配和结构完整性
DBCC CHECKFILEGROUP 检查指定文件组中的所有表(在当前数据库中)的分配和结构完整性
DBCC CHECKIDENT 检查指定表的当前标识值,如有必要,还对标识值进行更正DBCC CHECKTABLE
检查指定表或索引视图的数据、索引及 text、ntext 和 image 页的完整性
DBCC NEWALLOC 检查数据库的扩展结构内的每个表的数据和索引页的分配
pengdali 2003-10-20
  • 打赏
  • 举报
回复
DBCC DBREINDEX
重建指定数据库中表的一个或多个索引。

语法
DBCC DBREINDEX
( [ 'database.owner.table_name'
[ , index_name
[ , fillfactor ]
]
]
) [ WITH NO_INFOMSGS ]

参数
'database.owner.table_name'

是要重建其指定的索引的表名。数据库、所有者和表名必须符合标识符的规则。有关更多信息,请参见使用标识符。如果提供 database 或 owner 部分,则必须使用单引号 (') 将整个 database.owner.table_name 括起来。如果只指定 table_name,则不需要单引号。

index_name

是要重建的索引名。索引名必须符合标识符的规则。如果未指定 index_name 或指定为 ' ',就要对表的所有索引进行重建。

fillfactor

是创建索引时每个索引页上要用于存储数据的空间百分比。fillfactor 替换起始填充因子以作为索引或任何其它重建的非聚集索引(因为已重建聚集索引)的新默认值。如果 fillfactor 为 0,DBCC DBREINDEX 在创建索引时将使用指定的起始 fillfactor。

WITH NO_INFOMSGS

禁止显示所有信息性消息(具有从 0 到 10 的严重级别)。

注释
DBCC DBREINDEX 重建表的索引或为表定义的所有索引。通过允许动态重建索引,可以重建强制 PRIMARY KEY 或 UNIQUE 约束的索引,而不必除去并重新创建这些约束。这意味着不必知道表的结构或约束就可以重建索引,将数据大容量复制到表中后就会出现这种情况。

如果指定 index_name 或 fillfactor,还必须指定以前所有的参数。

DBCC DBREINDEX 可以使用一条语句重建表的所有索引,这比对多个 DROP INDEX 和 CREATE INDEX 语句进行编码容易。由于该工作是通过一条语句完成的,所以 DBCC DBREINDEX 自动为原子性,而单个 DROP INDEX 和 CREATE INDEX 语句要成为原子性则必须放在事务中。另外,与使用单个 DROP INDEX 和 CREATE INDEX 语句相比,DBCC DBREINDEX 可从 DBCC DBREINDEX 的优化性能中更多地获益。

不支持在系统表上使用 DBCC DBREINDEX。

结果集
不管是否指定任何选项( NO_INFOMSGS 除外),DBCC DBREINDEX 返回以下结果集;下例使用 pubs 数据库的 authors 表(值可能会有变化):

Index (ID = 1) is being rebuilt.
Index (ID = 2) is being rebuilt.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

如果指定 NO_INFOMSGS 选项,DBCC DBREINDEX 将返回以下结果集(消息):

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

权限
DBCC DBREINDEX 权限默认授予表所有者、sysadmin 固定服务器角色或 db_owner 和 db_ddladmin 固定数据库角色的成员且不可转让。

示例
A. 重建某个索引
下例使用填充因子 80 重建 pubs 数据库中 authors 表上的 au_nmind 聚集索引。

DBCC DBREINDEX ('pubs.dbo.authors', UPKCL_auidind, 80)

B. 重建所有索引
下例使用填充因子值 70 重建 authors 表上的所有索引。

DBCC DBREINDEX (authors, '', 70)

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧