SQL server 2008 查询时锁定表,更新后解锁表,如何 *** 作?

SQL server 2008 查询时锁定表,更新后解锁表,如何 *** 作?,第1张

查看被锁表:select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sysdm_tran_locks where resource_type='OBJECT' spid 锁表进程 tableName 被锁表名 解锁: declare @spid int Set @spid = 57 --锁表进程declare @sql varchar(1000)set @sql='kill '+cast(@spid as varchar)exec(@sql)

SQLServer2005里使用with encryption选项创建的存储过程仍然和sqlserver2000里一样,都是使用XOR进行了的加密。和2000不一样的是,在2005的系统表syscomments里已经查不到加密过的密文了。要查密文必须使用DAC(专用管理员连接)连接到数据库后,在系统表 syssysobjvalues查询,该表的列imageval存储了相应的密文。具体可以使用下面的查询:
SELECT imageval FROM syssysobjvalues WHERE objid = object_id(@procedure) AND
valclass = 1 AND subobjid = 1
针对SQL Server 2005的解密存储过程
create PROCEDURE [dbo][sp__windbi$decrypt]
(@procedure sysname = NULL, @revfl int = 1)
AS
/
王成辉翻译整理,转贴请注明出自微软BI开拓者>用下面的语句检查数据库锁,然后kill 掉产生锁的进程就ok了。
查锁:
select nvl(SUSERNAME,'Internal') username,
nvl(STERMINAL,'None') terminal,
LSID||','||SSERIAL# Kill,
U1NAME||''||substr(T1NAME,1,20) tab,
decode(LLMODE,1,'No Lock',
2,'Row Share',
3,'Row Exclusive',
4,'Share',
5,'Share Row Exclusive',
6,'Exclusive',null) lmode,
decode(LREQUEST,1,'No Lock',
2,'Row Share',
3,'Row Exclusive',
4,'Share',
5,'Share Row Exclusive',
6,'Exclusive',null) request
from V$LOCK L,
V$SESSION S,
SYSUSER$ U1,
SYSOBJ$ T1
where LSID = SSID
and T1OBJ# = decode(LID2,0,LID1,LID2)
and U1USER# = T1OWNER#
and STYPE != 'BACKGROUND'
order by 1,2,5
杀锁:
alter system kill session 'sid,#serial';
sid和#serial用前面查询到的结果替换。

1、在做Oracle监听程序测试时,发现帐户已经被锁定。

2、在数据库安装电脑上,点击开始打开运行窗口。

3、在运行窗口输入CMD,调出命令提示符界面。

3、在命令提示符下面,用管理员身份登入到数据库sqlplus / as sysdba。

4、输入解锁命令alter user Scott account unlock后回车。

5、看见用户已更改的字样,表示命令已成功执行。

6、再切换到监听程序验证,原来的ora-28000帐户被锁定的提示已经不存在了。用户解锁成功。

首先你iyao看看是否账户有删除修改的权限,
其次,如果是表锁住了,可以重启数据库。
另外,sql2005我没用过,你去查询下如果查出表锁得命令。
然后给kill掉就可以了

where SalesOrderID='43662'SELECT resource_type, request_mode, resource_description,request_session_id, DB_NAME(resource_database_id)as resource_databaseFROM sysdm_tran_locksWHERE resource_type <>'DATABASE'--ROLLBACK TRAN 在事务回滚之前, 查看锁的类型: 其他session对Table只读, 不能更新, 在开一个新的session测试:select from SalesSalesOrderHeader where SalesOrderID='43662'goupdate SalesSalesOrderHeader set OrderDate=GETDATE() where SalesOrderID='43662' select可以正常执行, update语句一直处于等待状态, 等待上面的session释放锁 2 Update locks (U): 更新锁是共享锁和独占锁的组合用UPDLOCK保持更新锁USE AdventureWorks2008BEGIN TRANselect from SalesSalesOrderHeader WITH(UPDLOCK)where SalesOrderID='43662'SELECT resource_type, request_mode, resource_description,request_session_id,DB_NAME(resource_database_id)as resource_databaseFROM sysdm_tran_locksWHERE resource_type <>'DATABASE'ROLLBACK TRAN 查看到锁的信息: 3Exclusive locks (X): 独占锁是为了锁定数据被一个session修改的数据, 而不能够被另外的session修改 只能指定NOLOCK来读取USE AdventureWorks2008BEGIN TRANupdate SalesSalesOrderHeader set ShipDate=GETDATE() where SalesOrderID='43662'WHERE resource_type <>'DATABASE'ROLLBACK TRAN 查看锁: 4Intent locks (I): 意向锁用于建立锁的层次结构 意向锁包含三种类型:意向共享 (IS)、意向排他 (IX) 和意向排他共享 (SIX)。 数据库引擎使用意向锁来保护共享锁(S 锁)或排他锁(X 锁)放置在锁层次结构的底层资源上。 意向锁之所以命名为意向锁,是因为在较低级别锁前可获取它们,因此会通知意向将锁放置在较低级别上。 意向锁有两种用途: 防止其他事务以会使较低级别的锁无效的方式修改较高级别资源。 提高数据库引擎在较高的粒度级别检测锁冲突的效率。

打开2005的策略,可以取消
alter login sa with password = '数据库密码'
unlock, check_policy = off, check_expiration = off


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/10539270.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-09
下一篇 2023-05-09

发表评论

登录后才能评论

评论列表(0条)

保存