sql增加字段记录丢失 sql数据表丢列 软件增加字段后之前记录丢失

客户名称 某大型企业
数据类型 SQL2005数据库
数据大小 10g
故障现象
数据库其中一个表 被客户把text字段类型改成了varchar类型,导致表数据部分丢失.后客户又改成text类型.
处理结果
客户把文件发给我们后,首先分析造成此次数据丢失的原因,text类型的字段存储的文本内容可以跨页,改成varchar类型就会导致超过长度的值都无法保存在新的varchar类型字段,这样一来就会导致很多超过此长度的数据丢失/.、 根据日志分析 客户先后把这个text字段改成了 varchar(200) varchar(800)和char(800) 这是纯粹的折腾,数据丢失了一小半
解决方案
从MDF文件恢复原始表记录 恢复约5W多行,因为有覆盖所以不全,然后从日志提取少掉的那部分插入记录,然后 补加进 恢复的原始表里面,总记录数为91734 跟客户后来跟更改后的记录多了10644条. 经过客户检验数据,近100%恢复成功. 非常满意结果.
微软亚洲数据库恢复中心提醒您,如果您的数据 很重要 在多家尝试无果的情况下 不如联系我们,也许是您最后一线曙光.
您可以加我们的扣扣
扣扣:3485527083

时间: 2024-11-06 07:42:40

sql增加字段记录丢失 sql数据表丢列 软件增加字段后之前记录丢失的相关文章

sql server 判断是否存在数据库,表,列,视图

1 判断数据库是否存在if exists (select * from sys.databases where name = '数据库名')    drop database [数据库名] 2 判断表是否存在if exists (select * from sysobjects where id = object_id(N'[表名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)    drop table [表名] 3 判断存储过程是否存在if ex

SQL SERVER 判断是否存在数据库、表、列、视图

SQL SERVER 判断是否存在数据库.表.列.视图 --1. 判断数据库是否存在 IF EXISTS (SELECT * FROM SYS.DATABASES WHERE NAME = '数据库名') DROP DATABASE [数据库名] --2. 判断表是否存在 IF EXISTS (SELECT * FROM SYSOBJECTS WHERE ID = OBJECT_ID(N'[表名]') AND OBJECTPROPERTY(ID, N'ISUSERTABLE') = 1) PRI

获取数据表中列的描述值

原文:获取数据表中列的描述值 前面有写过<MS SQL为字段添加说明>https://www.cnblogs.com/insus/p/12106589.html 现如今,我们获取这些字段的描述值. 先来看一句SELECT语句: SELECT * FROM sys.extended_properties GO Source Code 如上SQL语句,虽然得到描述的值,但我们不清楚是哪一张表,和哪一个字段的说明. 因此,得使用系统另外对象来关联查询: SELECT t.[name] AS [Tab

查找SQL数据表或视图中的字段属性信息

一.只支持表,非常牛逼的 SELECT a.name,(case when (SELECT count(*) FROM sysobjects WHERE (name in (SELECT name FROM sysindexes WHERE (id = a.id) AND (indid in (SELECT indid FROM sysindexkeys WHERE (id = a.id) AND (colid in (SELECT colid FROM syscolumns WHERE (id

SQL FIND_IN_SET() 判断某一个数是否存在于数据表某个以逗号分隔开字段数据中

数据表中的字段存储的是以逗号分隔开的字符串, 例如 (1,2,6,8) 以前不知道这个用法, 碰到比如 8 是否包含在改字符串里面只能一个个取出来, 然后解析成数组,再判断是否在该数组中,效率极低: FIND_IN_SET(str,strList) str 要查询的字符串 strList 字段名,参数以“,”分隔,如(1,2,6,8) 现在有了这个, 直接 where FIND_IN_SET(8, 数据表字段名), 就可以. 原文地址:https://www.cnblogs.com/pyspan

SQL数据表两个字段关联同一张数据表

数据表temp结构 -- Table "temp" DDL CREATE TABLE `temp` ( `page_id` bigint(20) DEFAULT NULL, `section_id` bigint(20) DEFAULT NULL, `visit_category_id` bigint(20) DEFAULT NULL, `cart_category_id` bigint(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=

sql学习笔记(14)------------数据表

有关数据表的操作 数据库基本操作 用 MySQL,目前(版本 3.23)你可以在三种基本数据库表格式间选择.当你创建一张表时,你可以告诉 MySQL它应该对于表使用哪个表类型.MySQL将总是创建一个.frm 文件保存表和列定义.视表类型而定,索引和数据将在其他文件中存储. 你能用 ALTER TABLE语句在不同类型的表之间变换. MyISAM MyISAM是缺省表格类型,它是基于ISAM代码并且有很多有用的扩展.索引存储在一个有.MYI(MYindex)扩展名的文件并且数据存储在有.MYD

mssql2000数据库执行SQL语句来创建数据库以及数据表还有索引

创建数据库MSsql2000Create DATABASE databasename on primary (name='databasename_data',filename='C:\databasename_data.mdf',size=3mb,maxsize=UNLIMITED,filegrowth=10%)log on (name='databasename_log',filename='C:\databasename_log.ldf',size=3mb,filegrowth=10%)

Sql Server利用游标批量清空数据表

先吐槽一下,由于公司要为新客户部署一个全新的系统,然而公司并没有空库,所以只能把正在线上运行的数据库给备份,然后清空相关数据 下面分享一下我在做清空数据库时写的一个批量清空数据表的方法 思路:查询出该库下的所有表 根据表名(系统相关数据表取名都是有规律的)筛选出需要清空的表 下面,上代码 1 USE [DataBase] 2 GO 3 DECLARE @name varchar(50) 4 DECLARE @count int 5 set @count=0 6 DECLARE contact_c