MSSQL-2008的备份恢复操作


MSSQL2008清理log事务
----------------------------------
USE [master]
go
ALTER DATABASE GTD SET RECOVERY SIMPLE WITH NO_WAIT
    GO
ALTER DATABASE GTD SET RECOVERY SIMPLE   --简单模式
    GO
    USE GTD 
    GO
    DBCC SHRINKFILE (N'GTD _Log' , 11, TRUNCATEONLY)
    GO
    USE [master]
    GO
    ALTER DATABASE GTD  SET RECOVERY FULL WITH NO_WAIT
    GO
    ALTER DATABASE GTD SET RECOVERY FULL  --还原为完全模式
    GO

查询事务
--------------
SELECT log_reuse_wait_desc FROM sys.databases WHERE [name]='GTD';

备份事务日志
---------------
BACKUP LOG [GTD] TO DISK='E:\GTD.LOG-1.TRN'

恢复事务日志
---------------
在最后一个 RESTORE LOG 语句中恢复数据库:
RESTORE LOG FROM WITH RECOVERY;  
GO  
等待使用单独的 RESTORE DATABASE 语句恢复数据库:
RESTORE LOG FROM WITH NORECOVERY;   
RESTORE DATABASE WITH RECOVERY;  
GO 

备份数据库
-------------
BACKUP DATABASE [GTD] TO  DISK = N'E:\GTD.TRN' WITH NOFORMAT, NOINIT,  NAME = N'GTD-完整 数据库 备份', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO

恢复数据库
-----------
RESTORE DATABASE [NEW_GTD] FROM  DISK = N'E:\GTD.TRN'


SQL级全表备份
--------------
SELECT * INTO 新表名 FROM 原表名;

-----------------锁表查询之内置存储过程---------------

查看MSSQL数据库里面表加锁的方法有多种,经常使用的一种是使用sys.dm_tran_locks视图来查询被锁定的表格。可以通过以下SQL语句语句查看数据库里面的表会不会加锁:

select t.resource_type ,

t.resource_database_id ,

db_name(t.resource_database_id) as resource_database_name ,

t.resource_associated_entity_id ,

object_name(t.resource_associated_entity_id,t.resource_database_id) as resource_object_name,

t.request_mode

from sys.dm_tran_locks t

where resource_associated_entity_id>=0

如果查询的结果中的Request Mode值是S表示,则数据库里面的表被同享锁锁住;如果值是X表示数据库里面的表被排他锁锁住;如果值是null表示表没有被锁住。另外,还可使用sp_lock系统存储进程查看MSSQL数据库里面表加锁情况,例如:

exec sp_lock

履行以上命令后,会返回所有当前锁定的表名称、锁定的模式、事务的ID等信息,用户可以根据返回的信息查看表加锁情况,也能够手动释放表锁定。

--------MSSQL锁表查询之SQL方法--------

— 共享锁

SELECT * FROM Users WITH (HOLDLOCK)

— 更新锁

SELECT * FROM Users WITH (UPDLOCK)

— 排它锁

SELECT * FROM Users WITH (XLOCK)

---------锁表的杀锁表进程处理---------

出现锁表后就需要相应的解锁操作

1.查询锁表的进程;
select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName
from sys.dm_tran_locks where resource_type=‘OBJECT’

2.解锁语句,需要将锁表进程 @spid换成查询出来的锁表进程;
declare @spid int
Set @spid = 65 --锁表进程
declare @sql varchar(1000)
set @sql='kill '+cast(@spid as varchar)
exec(@sql)

你可能感兴趣的:(sqlserver,数据库)