-----数据库一致性错误,系统表sysdepends错误。 -----修复用户表的一致性错误,系统表有错误,新建同样版本的数据库,把客户的数据用语句全部导入到新建数据库中。 ------下列查出的语句在新库执行就可以了。 declare @ls_name varchar(100), @ls_sql varchar(8000), @ls_col varchar(8000), @ls_olddbname varchar(50), @ls_flag varchar(10) set @ls_flag = '0' set @ls_olddbname = 'kmzy_v8' declare lc_name cursor for select name from sysobjects where xtype = 'U' order by name open lc_name fetch lc_name into @ls_name while @@fetch_status = 0 begin print 'print '+char(39)+@ls_name+' 表处理开始'+char(39) set @ls_col = '' set @ls_sql = 'truncate table '+@ls_name+' ' if @ls_flag = '1' exec sp_sqlexec @ls_sql else print @ls_sql if exists(select 1 from syscolumns where id = object_id(@ls_name) and (autoval is not null or colstat = 1 ) ) begin set @ls_sql = 'SET IDENTITY_INSERT '+@ls_name+' ON ' if @ls_flag = '1' exec sp_sqlexec @ls_sql else print @ls_sql end set @ls_sql = 'alter table '+@ls_name+' disable trigger all ' if @ls_flag = '1' exec sp_sqlexec @ls_sql else print @ls_sql select @ls_col = @ls_col + name + ',' from syscolumns where id = object_id(@ls_name) and name not in ('row_version') set @ls_col = left(@ls_col, len(@ls_col) - 1 ) --去后‘,’ set @ls_sql = 'insert into '+@ls_name+' ('+@ls_col+') select ' + @ls_col + ' from '+@ls_olddbname+'.dbo.' + @ls_name if @ls_flag = '1' exec sp_sqlexec @ls_sql else print @ls_sql if exists(select 1 from syscolumns where id = object_id(@ls_name) and (autoval is not null or colstat = 1 ) ) begin set @ls_sql = 'SET IDENTITY_INSERT '+@ls_name+' OFF ' if @ls_flag = '1' exec sp_sqlexec @ls_sql else print @ls_sql end set @ls_sql = 'alter table '+@ls_name+' enable trigger all ' if @ls_flag = '1' exec sp_sqlexec @ls_sql else print @ls_sql print 'print ' + char(39)+@ls_name +' 表处理结束' +char(39) print 'go ' fetch lc_name into @ls_name end close lc_name deallocate lc_name