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
GO
等待使用单独的 RESTORE DATABASE 语句恢复数据库:
RESTORE LOG
RESTORE DATABASE
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)