基于SQLSERVER--数据库表的修复

目录

第一步:数据库完整性检查

第二步:尝试检查修复数据库表

第三步:创建备份数据表

第四步:创建触发器

第五步:删除主键

第六步:删除重复主键元组

第七步: 查询删除数据情况

第八步:再次执行第二步,验证

第九步:数据导回

第十步:删除备份数据表

注意事项:在删除和插入数据时,保证系统没有触发器或关联表等情况的


 


第一步:数据库完整性检查

检查数据库完整性性,根据提示可以确认是那个数据表损坏,SQL脚本如下:

dbcc checkdb('数据库名称')

第二步:尝试检查修复数据库表

根据第一步检查结果确认修复数据库表,SQL脚本如下:

use '数据库名称'
declare @dbname varchar(255) 
set @dbname='数据库名称' 
exec sp_dboption @dbname,'single user','true' 
dbcc checktable('待修数据表',REPAIR_ALLOW_DATA_LOSS) 
dbcc checktable('待修数据表',REPAIR_REBUILD) 
exec sp_dboption @dbname,'single user','false'

如果第二步后仍存在主键重复的问题,执行以下步骤

第三步:创建备份数据表

为待修数据表创建备份表,SQL脚本如下:

USE '数据库名称'
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].['备份表名称'](
--。。。。。。。。。。
	--与待修表字段完全一致,为避免主键重复,备份表不要建立主键
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO

第四步:创建触发器

为待修数据库创建出发器,使得在删除重复主键的元组时,能够备份到备份表中,SQL脚本如下:

USE '数据库名称'
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].['触发器名称'] ON [dbo].['待修数据表'] FOR Delete
AS
BEGIN  
    INSERT INTO '备份数据表' select * from deleted
END
GO

第五步:删除主键

删除待修数据表,为下一步删除重复主键元组做准备

ALTER TABLE '待修数据表' DROP PRIMARY KEY

第六步:删除重复主键元组

/*假设待修数据表为test
待修数据表主键字段包含
{
 a1  varchar(25)
 a2  Datetime
 a3  int
 a4  char(8)
}
*/
declare cur_test CURSOR FOR
select a1,a2,a3,a4 from test 
	group by a1,a2,a3,a4
	having COUNT(*)>1 order by a1
OPEN cur_test
declare @ma1 varchar(25)
declare @ma2 Datetime
declare @ma3 int
declare @ma4 char(8)
fetch Next from cur_test into @ma1,@ma2,@ma3,@ma4
while @@FETCH_STATUS=0 
begin 
delete from test where a1=@ma1 and a2=@ma2 and a3=@ma3 and a4=@ma4
fetch Next from cur_test into @ma1,@ma2,@ma3,@ma4
end
close    cur_test
deallocate cur_test

第七步: 查询删除数据情况

Select * from '备份数据表'

第八步:再次执行第二步,验证

第九步:数据导回

根据具体情况,将备份表部分数据导入到修复好的数据表中

insert into '修复数据表' select distinct * from '备份数据表'

第十步:删除备份数据表

drop table '备份数据表'

注意事项:在删除和插入数据时,保证系统没有触发器或关联表等情况的

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
极佳SQL数据库修复大师10.0,支持MSSQL 7.0 2000 2005 2008 2008R2 2012 2014 2016 2017 支持各种ERP数据库 金蝶 速达 用友 管家婆等等基于MSSQL数据库。支持数据库无法附加 报错等故障。   支持 各种版本SQL数据库 质疑 置疑 断电损坏。   支持 SQL数据库损坏 无法附加 各种报错问题修复。   支持 SQL数据库 823 824 825页损坏等各类错误修复。   支持 MDF NDF文件修复 支持备份文件修复完美支持各种字符集,支持从MDF文件反删除记录。 支持 SQL数据库各种字段类型 支持压缩 压缩页 压缩记录恢复 支持 sql数据库系统报错 系统不一致 断电非法关机坏道导致的可疑 置疑 数据库挂起等故障 支持 SQL数据库PFS GAM SGAM 页损坏 不是有效的数据库等 不是有效的文件头等恢复 支持 SQL数据库DBCC 无法修复数据库数据恢复 支持 SQL数据库被勒索病毒加密的数据恢复。(大多被加密数据库都是非完全加密) 支持 blob,image,xml, 跨页数据以及文本大字段恢复 支持 sql数据库多用户架构,以及NDF 文件组。 支持 保存 数据 存储过程 触发器 视图 函数等元数据及用户数据 支持 保存为脚本或者直接连到SQL保存到SQL数据库 扫描勒索病毒数据库及 损坏严重的数据库 请选择 标准恢复模式 如果发现有应该有数据但是标准恢复模式没有扫描到 或数据乱码 或记录很少 可以用高级恢复模式尝试。 如果两种恢复模式都看不到本应该有数据的,可以联系我们进行人工恢复。 www.sql110.com www.sql119.com TEL 13510228421 QQ 1186505712
好的,那我来为你提供一些关于编写基于SQL Server的人事管理系统的建议。 1. 确定需求和功能:在开始编写人事管理系统之前,你需要先确定系统需要实现哪些功能,包括但不限于员工信息管理、薪资管理、考勤管理、绩效考核等等。并且需要了解用户需求,以便为用户提供满意的体验。 2. 数据库设计:在确定了系统需要实现的功能后,你需要根据这些功能来设计数据库。需要明确数据库中每个的字段、主键、外键和索引等信息。并且需要考虑数据的一致性和完整性,以便数据能够正确地存储和查询。 3. 编写SQL语句:在数据库设计完成后,你需要编写SQL语句来实现系统的各种功能。例如,你需要编写INSERT、UPDATE、DELETE和SELECT语句来对数据库中的数据进行增删改查操作。需要注意SQL语句的效率和安全性,以确保系统能够正确高效地运行。 4. 编写应用程序:在数据库SQL语句编写完成后,你需要编写应用程序来实现人事管理系统的各种功能。可以使用.NET框架编写C#或VB.NET应用程序,或者使用其他适合的开发工具来编写应用程序。需要注意应用程序的界面设计和用户交互体验,以便用户能够方便地使用系统。 5. 测试和调试:在应用程序编写完成后,你需要对系统进行测试和调试。需要测试系统的各种功能是否能够正常运行,以及系统的性能和安全性是否符合要求。需要针对测试中发现的问题进行调试和修复,以确保系统能够稳定运行。 希望这些建议能够对你有所帮助,祝你编写成功!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值