En iyi yanıtlayıcılar
LOCK Resource

Soru
-
merhabalar.
Programımdan çalıştırdığım bir sql var.
Script 40 50 civarı veritabanı için çalışıyor. Hepsini tek bir transaction'da çalıştırıyorum fakat 057 kodu veritabanına gelince bu hata oluşuyor. Her bir veritabanını programımda foreach ile donuyorum ve sql i calıstıyoroum
3: Error Type:System.Data.SqlClient.SqlException
3: Error Description:The instance of the SQL Server Database Engine cannot obtain a LOCK resource at this time. Rerun your statement when there are fewer active users. Ask the database administrator to check the lock and memory configuration for this instance, or to check for long-running transactions.
Changed database context to '057'.bilgisi olan yardımcı olacak varsa çok sevinirim. çok acil
Gökhan TIKNAZOĞLU
Yanıtlar
-
Ayrı bir program yaptım scriptleri çalıştıran. İstediğim databaseleri seçip scriptleri çalıştırıyorum. Bu şekilde üstesinden geldim. Eğer imkanım olursa bu sorunu veren bilgisayarı formatlayıp deneyeceğim. Belki yazılımsal yada sql kurulumundan kaynaklanan bir sıkıntı olabilir.
Gökhan TIKNAZOĞLU
- Yanıt Olarak İşaretleyen Ali Rıza İnceoğlu 5 Haziran 2013 Çarşamba 14:11
Tüm Yanıtlar
-
Selam,
Peki her bir veritabanı için çalıştırdığın kod nasıl bir kod? Ne işlem yapıyor? Ne kadar büyük bir işlem yapıyor?
Sunucunda yeterli RAM var mı? SQL Server için RAM ayarı yaptın mı? Performance Counter'lar ile baktığında RAM durumunu nasıl görüyorsun?
Bu işlem boyunca Open Transaction veya Blocking gibi bir durum gözlüyor musun?
Ekrem Önsoy - MCDBA, MCITP:DBA+DBD, MCSD.Net, MCSE, ITILv3 | http://ekremonsoy.blogspot.com
- Düzenleyen Ekrem Önsoy 30 Mayıs 2013 Perşembe 09:35
-
Cevabınız için teşekkürler.
kodum genelde tablolara yeni alanlar ekleyen, fonksiyonu drop edip tekrar create eden ve script sonunda uzun viewler create eden bir script. bir örnek vereyim.
EXEC(' IF NOT EXISTS (SELECT * FROM sys.columns WHERE Name = N''UretimSiparisDurumId'' AND Object_ID = Object_ID (N''OnDegerler'')) BEGIN ALTER TABLE dbo.OnDegerler ADD UretimSiparisDurumId bigint NULL END') EXEC(' IF NOT EXISTS (SELECT * FROM sys.columns WHERE Name = N''UretimSiparisYaziciSablonu'' AND Object_ID = Object_ID (N''OnDegerler'')) BEGIN ALTER TABLE dbo.OnDegerler ADD UretimSiparisYaziciSablonu nvarchar(200) NULL END')
Bu scriptlerin sonunda Create View Script'lerim yer alıyor çok uzun.
serverim performans olarka yeterli. 8GB RAm var. Performance Counter'da baktığımda bir sorun gözükmüyor. Fakat 57.nci database i güncellerken bu hatayı alıyorum.
SQL server ram ayarı default ta, Lock durumu da 0'a dynamic olarak ayarlı. bugünki scriptim 7600 satıra yakın bir kod bloğu.
Acaba her db 'den sonra transaction commit'leyip yeni db de tekrar transaction.ı begin yapma durumu sözkonusu olur mu?
Gökhan TIKNAZOĞLU
- Düzenleyen thesecret 30 Mayıs 2013 Perşembe 10:36
-
Önceden böyle bir sorunla karşılaşmamıştım.
Muhtemelen bir şekilde bu iş için kullanılabilecek hafıza yetersiz kalıyor. İşlemi, dediğin gibi parçalayıp öyle çalıştırmayı denedin mi?
Ekrem Önsoy - MCDBA, MCITP:DBA+DBD, MCSD.Net, MCSE, ITILv3 | http://ekremonsoy.blogspot.com
-
Ayrı bir program yaptım scriptleri çalıştıran. İstediğim databaseleri seçip scriptleri çalıştırıyorum. Bu şekilde üstesinden geldim. Eğer imkanım olursa bu sorunu veren bilgisayarı formatlayıp deneyeceğim. Belki yazılımsal yada sql kurulumundan kaynaklanan bir sıkıntı olabilir.
Gökhan TIKNAZOĞLU
- Yanıt Olarak İşaretleyen Ali Rıza İnceoğlu 5 Haziran 2013 Çarşamba 14:11