none
LOCK Resource RRS feed

  • 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

    30 Mayıs 2013 Perşembe 07:16

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

    5 Haziran 2013 Çarşamba 05:58

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


    30 Mayıs 2013 Perşembe 09:34
  • 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
    30 Mayıs 2013 Perşembe 10:34
  • Ö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

    4 Haziran 2013 Salı 18:08
  • 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

    5 Haziran 2013 Çarşamba 05:58