背景:由于服务器硬盘损坏,服务器异常关机.重新进入后,数据库为质疑状态.(数据库名字上面有个感叹号,连接不了) 经过无数次的百度以及大佬们的指点下,终于成功恢复,下面来说一下方法. 第一种: 1.在服务器上停掉出问题的数据库服务,把.mdf数据库文件和.ldf日志文件拷贝至本地. 2.本地新建一个同名数据库,找到文件地址,停掉sql服务后.把.mdf文件删掉(可以也把.ldf也删掉,但删不删除我都试过了,最后都会重新生成一个新的.ldf的文件,所以这里没啥特别要注意的地方),再把服务器上拷贝的.…
--打开xp_cmdshell功能  EXEC [sys].[sp_configure] @configname = 'xp_cmdshell', -- varchar(35)    @configvalue = 1 -- int 4   RECONFIGURE WITH override  --修改注册表,修改身份验证为混合验证方式    USE [master]    GO EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software…
根据微软文档对sp_delete_backuphistory存储过程的介绍,SQL Server在每次备份和恢复数据库后,会向msdb系统数据库的备份和恢复历史表写入数据,如果SQL Server经常要做频繁的备份和恢复操作,会造成msdb系统数据库逐渐变大,所以微软建议定期调用msdb数据库的存储过程sp_delete_backuphistory来删除msdb系统数据库中备份和恢复历史表的内容: EXEC msdb.dbo.sp_delete_backuphistory @oldest_dat…
    在讨论数据库之前我们先要明白一个问题:什么是数据库?     数据库是若干对象的集合,这些对象用来控制和维护数据.一个经典的数据库实例仅仅包含少量的数据库,但用户一般也不会在一个实例上创建太多的数据库.一个数据库实例最多能创建32767个数据库,但是按照实际情况,一般设计是不会达到这个限制值.     为了更明显地说明数据库,数据库包含了以下属性和功能:     *. 它是很多对象的集合,比如表.视图.存储过程.约束.对象集合的最大值是2(31) - 1(超过2百亿).一般对象的数量在几…
sql server mdf碎片级数据库修复,数据库碎片级提取   大家都知道MDF数据库文件一般都比较大,在磁盘中往往被存放到不连续的逻辑簇中,久而久之就形成了文件碎片,当文件被误删除或者格式化后,这些分散在磁盘中的碎片数据很难恢复,在FAT32分区中往往会出现数据库文件恢复后,文件名长度日期等信息非常完整,但是数据库就是无法顺利附加也无法修复成功,在NTFS类型的分区中,经常使用的数据库文件信息在删除后遭到严重破坏,文件长度会变成0字节,无法进行恢复操作,这是一项公认为高难度的数据恢复技术领…
SQL Server 2008下日志清理方法 (2011-07-14 10:30:45) 转自 http://blog.sina.com.cn/s/blog_4bdd3d0b0100wfvq.html 标签: it   每次看到暴涨的数据库日志就有些头大,于是乱搜一通找个办法把日志干掉,下次又头大,又搜半天,于是还是写篇blog,不用乱找了. 1.将数据库设置成 简单 模式 选择要收缩的数据库,点右键 属性->选项,选择 简单模式 2.选择任务->收缩->文件 3.选择日志 或者用如下语…
SQL Server in Docker 还原数据库 上一会演示了如果在Docker环境下安装SQL Server,这次我们来演示下如何还原一个数据库备份文件到数据库实例上. 使用winscp上传bak文件到linux服务器 上一回我们启动docker容器的时候使用了-v参数挂账了本地目录/hd2/sqlserver2019_data到容器内目录/var/opt/mssql,所以我们只需要把文件testdb.bak上传到/hd2/sqlserver2019_data目录,docker容器即可访问…
判断数据库的类型 当我们通过一些测试,发现存在SQL注入之后,首先要做的就是判断数据库的类型. 常用的数据库有MySQL.Access.SQLServer.Oracle.PostgreSQL.虽然绝大多数数据库的大部分SQL语句都类似,但是每个数据库还是有自己特殊的表的.通过表我们可以分辨是哪些数据库. MySQL数据库的特有的表是 information_schema.tables , access数据库特有的表是 msysobjects ,SQLServer 数据库特有的表是 sysobje…
    我在SQL Server获取下一个编码字符实现的博文中,虽然实现了这个问题,但是感觉维护起来比较麻烦,例如如果调整编码字符串的固定长度,就需要变更三个函数,这样的为何成本确实比较大.面向对象编程很重视讲究开放封闭原则,我认为数据库对象特别函数.存储等对象也要尽量封装成实现单一功能,维护起来简单,也方便后续人员的维护,便利别人也是便利自己.       针对编码字符串的规则,继续延伸总结如下: 1.第一个字符必须是字母A-Z中任意一个字符,其长度可以为1位.2位.3位,……,6位.7位.8…
在最近的数据库跨机房迁移中,由于硬件的限制,需要滚动式地将数据库一台台迁移到新机房,先在新机房搭建一个新环境,将数据迁移过去,再将旧机房的机器下架搬到新机房,重新配置后用于下一轮的升级,重新配置过程中,有以下几个问题: 1:由于机房和IP已经发生变化,因此需要按照命名规则修改服务器名称. 2:原数据库上的数据如登录账号/作业/链接服务器等等需要删除 3:部分服务器因磁盘变动,仅保留系统盘,部分SQL Server文件(如果系统数据库文件)已经丢失 对于问题1和问题2,可以进行手动删除或者写个脚本…