Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
Ayrıntılar
| Özellik | Değer |
|---|---|
| Ürün Adı | SQL Server |
| Olay Kimliği | 1204 |
| Olay Kaynağı | MSSQLSERVER |
| Bileşen | SQLEngine |
| Sembolik Ad | LK_OUTOF |
| İleti Metni | SQL Server Veritabanı Altyapısı örneği şu anda bir LOCK kaynağı alamıyor. Daha az etkin kullanıcı olduğunda deyiminizi yeniden çalıştırın. Veritabanı yöneticisinden bu örnek için kilit ve bellek yapılandırmasını denetlemesini veya uzun süre çalışan işlemleri denetlemesini isteyin. |
Explanation
Yürütme sırasında sorgular genellikle eriştikleri kaynaklara kilitler alır ve bırakır. Bir kilidin alınması, kullanılabilir bir kilit yapıları havuzundan kilit yapılarını kullanır. Havuzda başka kilit yapısı olmadığından yeni kilitler alınamadığında, hata 1204 iletisi döndürülür. Bu sorun aşağıdaki nedenlerden herhangi biri nedeniyle olabilir:
SQL Server, diğer işlemler tarafından kullanıldığından veya SQL Server tüm belleğini kullandığından ve yapılandırma seçeneği en fazla sunucu belleği kullanılarak yapılandırılan değere ulaştığından daha fazla bellek ayıramaz.
Kilit yöneticisi SQL Server için kullanılabilir belleğin yüzde 60'ından fazlasını kullanamaz ve eşik zaten karşılanmıştır.
Sp_configure (Transact-SQL) sistem saklı yordamının yapılandırma seçeneği kilitlerini varsayılan olmayan, dinamik olmayan bir değere ayarlarsınız.
Kilit yükseltme davranışını denetlemek için SQL Server'ınız üzerinde İzleme bayrakları 1211, 1224 veya her ikisini de etkinleştirmiş ve çok sayıda kilit gerektiren sorgular yürütüyorsunuz.
Kullanıcı eylemi
SQL Server'ın yeterli bellek ayıramadığını düşünüyorsanız aşağıdaki seçenekleri deneyin:
AŞAĞıDAKI gibi bir sorgu kullanarak SQL Server içindeki başka bir bellek çalışanının SQL Server yapılandırılmış belleğin büyük bir bölümünü kullanıp kullanmadığını belirleyin:
SELECT pages_kb, type, name, virtual_memory_committed_kb, awe_allocated_kb FROM sys.dm_os_memory_clerks ORDER BY pages_kb DESC;Ardından bu bellek katibinin bellek tüketimini azaltarak belleğin daha fazla kaynak kullanmasını sağlayın. Daha fazla bilgi için bkz. SQL Server'da yetersiz bellek veya yetersiz bellek sorunlarını giderme.
SQL Server dışındaki uygulamalar kaynakları kullanıyorsa, bu uygulamaları durdurmayı deneyin veya bunları ayrı bir sunucuda çalıştırmayı deneyin. Bu, SQL Server için diğer işlemlerden bellek bırakır.
En fazla sunucu belleği yapılandırdıysanız, en fazla sunucu belleği ayarını artırın.
Kilit yöneticisinin kullanılabilir bellek miktarı üst sınırını kullandığından şüpheleniyorsanız, en çok kilidi tutan işlemi belirleyin ve sonlandırın. Aşağıdaki betik, en çok kilit içeren işlemi tanımlar:
SELECT request_session_id, COUNT (*) num_locks FROM sys.dm_tran_locks GROUP BY request_session_id ORDER BY count (*) DESC;En yüksek oturum kimliğini alın ve KILL komutunu kullanarak sonlandırın.
için varsayılan olmayan bir değer kullanıyorsanız aşağıdaki deyimi kullanarak değerini
locksvarsayılan ayarıyla değiştirmek içinsp_configurekullanınlocks:EXEC sp_configure 'locks', 0;SQL Server izleme bayrakları 1211, 1224 veya her ikisini birden kullanırken yukarıdaki hata iletisiyle karşılaştıysanız, bunların kullanımını gözden geçirin ve çok sayıda kilit gerektiren sorguları yürütürken bunları devre dışı bırakın. Daha fazla bilgi için DBCC TRACEON ile izleme bayraklarını ayarlama ve SQL Server'da kilit yükseltmenin neden olduğu engelleme sorunlarını çözme konularını gözden geçirin.