123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- --=============================================
- --first content
- --脚本说明:SQL数据库修复命令总集
- --建立日期:2014-10-31
- --编 写 者:lyfz-pc
- --版 本: (null)
- --=============================================
- /* 1.设置数据库为单用户*/
- USE MASTER ALTER DATABASE [数据库名] SET SINGLE_USER
- -- 实例:
- use master alter database [lyfzdb] set single_user
- /* 2.设置数据库为多用户*/
- USE MASTER ALTER DATABASE [数据库名] SET MULTI_USER
- -- 实例:
- use master alter database [lyfzdb] set multi_user
- /* 3.设置数据库为紧急模式 */
- USE MASTER ALTER DATABASE 数据库名 SET EMERGENCY
- -- 实例:
- use master alter database lyfzdb set emergency
- /* 4.设置数据库为在线模式(紧急模式的相反模式) */
- USE MASTER ALTER DATABASE 数据库名 SET ONLINE
- -- 实例:
- use master alter database lyfzdb set online
- /* 5.检测数据库完整性(是否损坏) */
- USE MASTER DBCC CHECKDB('数据库名')
- -- 实例:
- use master dbcc checkdb('lyfzdb')
- /* 6.检测数据库指定表的一致性(表是否损坏)*/
- USE 数据库名 DBCC CHECKTABLE('表名称')
- -- 实例:
- use lyfzdb dbcc checktable('dbo.dindan')
- /* 7.根据检测结果提示:***索引***,重建表索引 */
- USE 数据库名 DBCC DBREINDEX('表名称',' ')
- -- 实例:
- use lyfzdb dbcc dbreindex('dindan',' ')
- /* 8.根据检测结果提示,修复分配错误,重建表索引 */
- USE 数据库名 DBCC CHECKTABLE('表名称',REPAIR_REBUILD)
- -- 实例:
- use master alter database [lyfzdb] set single_user
- use lyfzdb dbcc checktable('dindan',repair_rebuild)
- use master alter database [lyfzdb] set multi_user
- /* 9.根据检测结果提示,快速修复表 */
- USE 数据库名 DBCC CHECKTABLE('表名称',REPAIR_FAST)
- -- 实例:
- use master alter database [lyfzdb] set single_user
- use lyfzdb dbcc checktable('dindan',repair_fast)
- use master alter database [lyfzdb] set multi_user
- /* 10.根据检测结果提示,修复表一致性错误,并可能会导致一些数据丢失*/
- USE 数据库名 DBCC CHECKTABLE('表名称',REPAIR_ALLOW_DATA_LOSS)
- -- 实例:
- use master alter database [lyfzdb] set single_user
- use lyfzdb dbcc checktable('dindan',repair_allow_data_loss)
- use master alter database [lyfzdb] set multi_user
- /* 12.根据检测结果提示,修复整个数据库一致性错误,并极有可能导致一些数据丢失 */
- USE MASTER DBCC CHECKDB('数据库名',REPAIR_ALLOW_DATA_LOSS)
- -- 实例:
- use master alter database [lyfzdb] set single_user
- use master dbcc checkdb('lyfzdb',repair_allow_data_loss)
- use master dbcc checkdb('lyfzdb',repair_rebuild)
- use master alter database [lyfzdb] set multi_user
- /* 13.检测数据库是否发生了架构损坏,一般与第5条配合使用 */
- USE MASTER DBCC CHECKCATALOG('数据库名')
- -- 实例:
- use master dbcc checkcatalog('lyfzdb')
- /* 14.修复置疑数据库*/
- --.检测lyfzdb有无损坏
- use master dbcc checkdb('lyfzdb')
- --有损坏则执行以下命名;
- use master alter database lyfzdb set emergency
- use master alter database [lyfzdb] set single_user
- use master dbcc checkdb('lyfzdb',repair_allow_data_loss)
- use master dbcc checkdb('lyfzdb',repair_rebuild)
- use master alter database [lyfzdb] set multi_user
- use master alter database lyfzdb set online
- --无损坏执行以下命名;
- --use master
- --go
- --sp_configure 'allow updates', 1
- --reconfigure with override
- --go
- --begin tran
- --update sysdatabases set status = 32768 where name = 'lyfzdb'
- --commit tran
- --go
- ---------------------------------------------------------------------
- --=============================================
- /* 基础SQL语句 */
- --建立日期:2014-10-31
- --编 写 者:lyfz-pc
- --版 本: (null)
- --=============================================
- /* 1.查找表里重复的记录 */
- USE 数据库名称 SELECT * FROM 表名称 WHERE 字段名称 IN (SELECT 字段名称 FROM 表名称 GROUP BY 字段名称 HAVING COUNT(字段名称) > 1)
- USE 数据库名称 SELECT * FROM 表名称 WHERE 字段名称 IN (SELECT 字段名称 FROM 表名称 WHERE 字段名称='查询内容' GROUP BY 字段名称 HAVING COUNT(字段名称) > 1)
- --实例:
- use db select * from dindanjd where id in (select id from dindanjd group by id having count(id) > 1)
- use db select * from dindanjd where id in (select id from dindanjd where id = '20140825-019' group by id having count(id) > 1)
- use dbmsg select max(signname)as signname,max(name)as name,max(addr)as addr from clientinfo group by signname
- /* 消除输出中的重复记录的命令 */
- USE 数据库名称 SELECT DISTINCT * FROM 表名称
- --实例:
- use db select distinct * from dindan
- --use db select unique id from dindan
- /* 删除表里指定条件的记录 */
- USE 数据库名称 DELETE FROM 表名称 WHERE 列名称 = 值
- --实例:
- use db delete from dindan where id='20141011-002'
- /* 更新指定表名、字段、字段内容,以及replace的结合使用*/
- USE 数据库名称 UPDATE 表名称 SET 字段名称='要替换的内容' where 字段名称='要被替换的内容'
- USE 数据库名称 UPDATE 表名称 SET 字段名称=REPLACE(字段名称,'要被替换的内容' ,'要替换的内容')
- USE 数据库名称 UPDATE 表名称 SET 字段名称=REPLACE(CAST(字段名称 AS NVARCHAR(50)),'要被替换的内容' ,'要替换的内容')
- --实例
- use db update dindansp set shuliang='6' where shuliang='6块'
- use db update dindansp set shuliang=replace(shuliang,'块','')
- use db update dindansp set shuliang=replace(cast(shuliang as nvarchar(50)),'6块','6')
- --修改数据库的逻辑文件名(数据)
- Alter DATABASE 数据库名 MODIFY FILE(NAME='老数据库逻辑文件名',NEWNAME='新数据库逻辑文件名')
- alter database [2014] modify file(name='dbnull',newname='2014')
- --修改数据库的逻辑文件名(日志)
- Alter DATABASE 数据库名 MODIFY FILE(NAME='老日志逻辑文件名',NEWNAME='新日志逻辑文件名')
- alter database [2014] modify file(name='dbnull_log',newname='2014_log')
- --在原来的值上加值更新
- update [version] set msgbalance = convert(int,msgbalance,10)+1000
|