In SQL Server
2005 (SSMS, object Explorer)
Expand-server-management-double click Activity Monitor.
on left side you have three options to choose from, select those options and you can see all the locks related information.
Expand-server-management-double click Activity Monitor.
on left side you have three options to choose from, select those options and you can see all the locks related information.
run this stored procedure
in the database.
1. sp_lock
to know the running
process in the sql server, run this query,
2. select * from
sysprocesses ( in sql server 2000)
3. select * from sys.sysprocesses ( in sql server 2005)
3. select * from sys.sysprocesses ( in sql server 2005)
4. sp_who
5. sp_who2 will also give you some good information.
5. sp_who2 will also give you some good information.
To work around the locks,
you can run profiler to check which query is is creating a lock and if that is
necessary.
Types of locks on object
level, ( general idea)
Database
: Database.
Extent : Contiguous group of eight data pages or index pages.
Key: Row lock within an index.
Page: 8-kilobyte (KB) data page or index page.
RID :Row ID. Used to lock a single row within a table.
Table: Entire table, including all data and indexes.
Extent : Contiguous group of eight data pages or index pages.
Key: Row lock within an index.
Page: 8-kilobyte (KB) data page or index page.
RID :Row ID. Used to lock a single row within a table.
Table: Entire table, including all data and indexes.
Types of
locks;
Shared (S) – more than one Query can access the object.
Exclusive lock (X) – only one Query can access the object.
Update lock (U)
Intent share (IS)
Intent Exclusive (IX)
Shared (S) – more than one Query can access the object.
Exclusive lock (X) – only one Query can access the object.
Update lock (U)
Intent share (IS)
Intent Exclusive (IX)
Just to give you a brief
idea about locks, We have something called as transaction levels in sql server
databases.
TRANSACTION
ISOLATION LEVEL
level 0. READ COMMITTED
level 1. READ UNCOMMITTED
level 2. REPEATABLE READ
level 3. SERIALIZABLE
level 0. READ COMMITTED
level 1. READ UNCOMMITTED
level 2. REPEATABLE READ
level 3. SERIALIZABLE
level 0 is the lowest
level isloation level, if your database is set in this isolation level, no query
will lock any resources,Under this level, there will be no locks on the
database, not even shared locks.
SET TRANSACTION ISOLATION
LEVEL READ UNCOMMITTED
This data will also read uncommitted data. Data which you have not comitted, you can still read that data.
This data will also read uncommitted data. Data which you have not comitted, you can still read that data.
level1 is the default
isolation level of the database.
Under this category you will not be able to read uncomitted data, this is also called as dirty data. Under this we will have shared locks.
Under this category you will not be able to read uncomitted data, this is also called as dirty data. Under this we will have shared locks.
As the level
increases the locks also increases. The highest is the serializable.
To make you understand in
detail, lets see an example of what is committed data and what is uncomitted
data.
use pubs
create table example1 ( eid int, ename varchar(10))
create table example1 ( eid int, ename varchar(10))
begin tran T1
insert into example1 values ( 1, ‘example’)
go
insert into example1 values ( 1, ‘example’)
go
select * from example1 —
this is uncomitted data.
The above is uncomitted
transaction, because you started the transaction with a begin, you have to
commit the transaction, untill then the transaction will not be
uncommitted.
to commit the same
transaction
commit tran T1
select * from example1 —
this is committed data.
To check what is the
current isolation level of your database, run this command,
Dbcc useroptions — check
for isolation level.
If you dont want your
query to put locks on objects you might want to use something like
this,
select * from example1_1
with (nolock)
This will not keep any
lock, not even a shared lock on the table.
This is indepth concept
try looking BOL.
Hope this helps,
No comments:
Post a Comment