sp_lock (Transact-sql)

Kilitleri hakkında bilgi raporlar.

Önemli notÖnemli

Bu özellik Microsoft SQL Server'ın ilerideki bir sürümünde kaldırılacaktır. Yeni geliştirme işlerinde bu özelliği kullanmaktan kaçının ve bu özelliği kullanmakta olan uygulamalarda değişiklik yapmayı planlayın.Kilitler hakkında bilgi edinmek için SQL Server Veritabanı Altyapısı, kullanma sys.dm_tran_locks yönetimi görüntüleyin.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

sp_lock [ [ @spid1 = ] 'session ID1' ] [ , [@spid2 = ] 'session ID2' ]
[ ; ]

Bağımsız değişkenler

  • @spid1 = 'session ID1'
    Olan bir Veritabanı Altyapısıoturum kimliği numarası sys.dm_exec_sessions için kullanıcının istediği bilgileri kilitleme. session ID1ise int, varsayılan değeri NULL. Yürütme sp_who işlemi oturum hakkında bilgi edinmek için. Eğer oturum ID1 belirtilmezse, tüm kilitleri hakkında bilgi görüntülenir.

  • @spid2 = 'session ID2'
    Başka bir Veritabanı Altyapısıoturum kimliği numarası sys.dm_exec_sessions , aynı zamanda bir kilidi olabilir session ID1ve hangi kullanıcı da bilgi istiyor. session ID2ise int, varsayılan değeri NULL.

Dönüş Kodu Değerleri

0 (başarı)

Sonuç Kümeleri

Sp_lock sonuç kümesi içeren bir satır için belirtilen oturum tuttuğu her kilit @ SPID1 ve @ SPID2 parametreleri. Eğer ne @ SPID1 ne @ SPID2 belirtilirse, sonuç kümesini raporlar kilitleri tüm oturumlar için örneği etkin Veritabanı Altyapısı.

Sütun adı

Veri türü

Açıklama

SPID

smallint

Veritabanı AltyapısıOturum kimliği numarası işlemin kilidi isteyen.

DBID

smallint

Kimlik numarası veritabanı içinde kilit tutulur. Veritabanı tanımlamak için db_name() fonksiyonu kullanabilirsiniz.

ObjId

int

Hangi kilit tutulur nesne tanımlama numarası. Nesneyi tanımlamak için ilgili veritabanında object_name() işlevini kullanabilirsiniz. 99 Değeri Kilit üzerinde veritabanı sayfa ayırma kaydetmek için kullanılan sistem sayfalardan birini gösteren özel bir durumdur.

Indid

smallint

Kimlik numarası dizin üzerinde kilit tutulur.

Tür

nchar(4)

Kilit türü:

RID satır tanımlayıcı (RID) tarafından tanımlanan tablo tek bir satırda kilitle =.

ANAHTAR seri hale getirilebilir hareketleri anahtarlarında aralığı koruyan bir dizin içinde kilitle =.

pag Kilitle = veri veya dizin sayfasında.

DAHİLİ bir ölçüde kilit =.

SEKME tüm veri ve dizinler dahil olmak üzere tüm tablonun üzerinde kilit =.

db veritabanı kilit =.

FIL bir veritabanı dosyası üstünde kilitle =.

app bir uygulama belirtilen kaynak kilit =.

md meta veri veya katalog bilgileri kilit =.

hbt yığın veya b-ağaç dizin üzerinde kilit =. Bu bilgiler içinde eksik SQL Server.

au ayırma birimi üzerinde kilit =. Bu bilgiler içinde eksik SQL Server.

Kaynak

nchar(32)

Kilitli kaynak tanımlayan değer. Değer biçimi tanımlanan kaynağın türünü bağlıdır türü sütunu:

Türü değeri: kaynak değer

RID: Biçimi fileid:pagenumber bir tanımlayıcı: kurtulmak, nerede fileid içeren sayfa, dosyayı tanımlayan pagenumber satır içeren sayfayı tanımlar ve kurtulmak sayfasında belirli satır tanımlar. fileid eşleşen file_IDfile_idsys.master_files sütununda sys.database_files Katalog görünümü.

ANAHTAR: tarafından dahili olarak kullanılan bir onaltılı sayı Veritabanı Altyapısı.

pag: Sayı biçimi fileid:pagenumber, nerede fileid içeren sayfa dosyayı tanımlar ve sayfaya pagenumber tanımlar.

ext: ölçüde ilk sayfayı tanımlayan numara. Biçim fileid:pagenumber sayısıdır.

SEKME: tablo içinde önceden tanımlandığından yok bilgiler ObjId sütun.

db: veritabanı zaten olarak tanımlandığından yok bilgiler DBID sütun.

FIL: Eşleşen dosya tanıtıcısı file_IDfile_idsys.master_files sütununda sys.database_files Katalog görünümü.

Uygulama: Bir tanımlayıcı kilitli uygulama kaynağa benzersiz. Biçimde DbPrincipleId:<ilk iki kaynak dizesi 16 karakter><karma değeri>.

md: kaynak türüne göre değişir. Daha fazla bilgi için bkz: açıklaması resource_description sütununda sys.dm_tran_locks (Transact-sql).

hbt: bilgiler sağlanmıştır. Kullanım sys.dm_tran_locks yerine dinamik yönetimi görüntüleyin.

au: bilgiler sağlanmıştır. Kullanım sys.dm_tran_locks yerine dinamik yönetimi görüntüleyin.

Modu

nvarchar(8)

İstenen kilit modu. Aşağıdakilerden biri olabilir:

null = No kaynağa erişim verilir. Yer tutucu olarak hizmet vermektedir.

SCH-s = şema kararlılık. Herhangi bir oturum şema öğesinde şema kararlılık kilit tutan ise bir tablo ya da dizini gibi bir şema öğesi düştü değil sağlar.

SCH-m = şema değişikliği. Belirtilen kaynak şemasını değiştirmek istediği herhangi bir oturum tarafından yapılması gerekir. Diğer oturumları belirtilen nesnenin referans sağlar.

S = paylaşılan. Tutarak oturumu, paylaşılan kaynağa erişim verilir.

U = güncelleştirme. Sonunda güncelleştirilebilir kaynaklardaki edinilen bir güncelleştirme kilit gösterir. Bu ortak form birden çok oturum kaynaklar için olası güncelleştirmeyi daha sonra kilitlediğinizde oluşan kilitlenme önlemek için kullanılır.

X = özel. Tutarak oturumu, kaynağa özel erişim verilir.

OLARAK paylaşılan amacını =. s kilitleri place niyeti gösterir kilit hiyerarşisindeki alt kaynakta.

IU amaçlı güncelleştirme =. u kilitleri place niyeti gösterir kilit hiyerarşisindeki alt kaynakta.

IX amaçlı özel =. Place niyeti gösterir x Kilitleri kilit hiyerarşisindeki alt kaynakta.

SIU Paylaşılan amaçlı güncelleştirme =. Paylaşılan bir kaynağa erişim izni güncelleştirme Kilitleri kilit hiyerarşisindeki sertifika kaynakları alma niyetiyle gösterir.

ALTI paylaşılan amaçlı özel =. Paylaşılan bir kaynağa erişim izni özel kilit kilit hiyerarşisindeki bağımlı kaynaklar alma niyetiyle gösterir.

UIX güncelleme amaçlı özel =. Kaynak bağımlı kaynaklar kilit hiyerarşideki özel kilit alma niyetiyle bir güncelleştirme kilit beklemeye gösterir.

bu toplu güncelleştirme =. Toplu işlemler tarafından kullanılır.

RangeS_S = anahtar aralığı paylaşılan ve paylaşılan kaynak kilit. Seri hale getirilebilir aralığı tarama gösterir.

RangeS_U = paylaşılan anahtar aralığı ve güncelleştirme kaynak kilit. Seri hale getirilebilir güncelleştirmesi taraması gösterir.

Rangeı_n = anahtar aralığı Ekle ve Null kaynak kilit. Yeni bir anahtar dizin eklemeden önce aralıkları sınamak için kullanılır.

Rangeı_s.RangeI_N = anahtar aralığı dönüştürme kilit. Rangeı_n ve s kilitleri bir çakışma tarafından oluşturulan.

Rangeı_u ve u kilitleri bir çakışma tarafından oluşturulan anahtar aralığı dönüştürme kilit =.

Rangeı_x ve x kilitleri bir çakışma tarafından oluşturulan anahtar aralığı dönüştürme kilit =.

RangeX_S Rangeı_n ve RangeS_S bir çakışma tarafından oluşturulan anahtar aralığı dönüştürme kilit =. kilitler.

RangeX_U Rangeı_n ve RangeS_U kilitleri bir çakışma tarafından oluşturulan anahtar aralığı dönüştürme kilit =.

RangeX_X özel anahtar aralığı ve özel kaynak kilit =. Bir aralıktaki bir anahtar güncelleştirilirken kullanılacak dönüştürme kilit budur.

Durum

nvarchar(5)

Kilitleme isteği durumu:

cnvrt: Kilidi başka modundan dönüştürülür, ancak dönüştürme çakışan modu ile kilit tutan başka bir işlem tarafından engellendi.

grant: Kilidi elde edildi.

WAIT: Kilidi çakışan modu ile kilit tutan başka bir işlem tarafından engellendi.

Açıklamalar

Kullanıcılar tarafından okuma işlemleri kilitleme denetleyebilirsiniz:

  • Oturum açmak için kilitleme düzeyi belirtmek için set hareket yalıtım DÜZEYINE kullanarak. Sözdizimi ve sınırlamaları için bkz: set hareket yalıtım DÜZEYINE (Transact-sql).

  • Bireysel bir referans bir from yan tümcesinde tablo kilitleme düzeyi belirtmek için kilitleme tablo ipuçlarını kullanarak. Sözdizimi ve sınırlamaları için bkz: Tablo ipuçları (Transact-sql).

Bir oturum ile ilişkili olmayan tüm dağıtılmış hareketleri artık işlemleridir. Veritabanı AltyapısıTüm sahipsiz dağıtılmış hareketleri -2, hangi kullanıcının Dağıtılmış hareketleri engellendiği kolaylaştırır SPID değerini atar. Daha fazla bilgi için, bkz. İlişkili veritabanları sürekli kurtarmak için işaretlenen kullanımı (tam kurtarma modeli).

İzinler

VIEW server state izni gerektirir.

Örnekler

A.Tüm kilitleri listeleme

Aşağıdaki örnek, şu anda bir kopyasında yapılan tüm kilitleri hakkında bilgi görüntüler Veritabanı Altyapısı.

USE master;
GO
EXEC sp_lock;
GO

USE master;
GO
EXEC sp_lock;
GO

B.Bir tek sunucu işleminden bir kilit listeleme

Aşağıdaki örnekte kilitler, hakkında işlem kimliği gibi bilgileri görüntüler 53.

USE master;
GO
EXEC sp_lock 53;
GO

USE master;
GO
EXEC sp_lock 53;
GO

Ayrıca bkz.

Başvuru

sys.dm_tran_locks (Transact-sql)

db_name (Transact-sql)

KILL (Transact-sql)

object_name (Transact-sql)

sp_who (Transact-sql)

sys.database_files (Transact-sql)

sys.dm_os_tasks (Transact-sql)

sys.dm_os_threads (Transact-sql)