Edit: Çözüldü, tabloda bir döngü olan bir tetikleyici vardı (daha sonra aşağıda kendi yanıtımı okuyun).DELETE SQL Server'da görünür bir neden olmadığından deyim askıda kalıyor
DELETE FROM tablename WHERE pk = 12345
Bu sadece kapatırsa, hiçbir zaman aşımı yok, hiçbir şey:
Biz şöyle bir basit silme deyimi var.
Yürütme planına baktık ve herhangi bir yabancı anahtarın silme işlemini hızlandırmayacağından emin olmak için ilgili tablolardaki birçok aramadan oluşur, ancak bu diğer tablolardan hiçbirinin buna karşılık gelen hiçbir satırının olmadığını doğruladık. belirli satır.
Veritabanına şu anda bağlı başka kullanıcı yok.
DBCC CHECKDB'yi buna karşı çalıştırdık ve 0 hata bildiriyor.
sp_who
ve sp_lock
sorgu asılı iken sonuçlarına bakıldığında, benim spid PAG ve ANAHTAR kilitler bol yanı sıra zaman zaman TAB kilit var dikkat edin.
Tabloda 1.777.621 satır vardır ve evet, pk birincil anahtardır, bu nedenle dizine dayalı tek satırlı bir silidir. Yürütme planında tablo taraması yoktur, ancak bunun Tablo Biriktiricisi (Eager Spool) yazan bir şey içerdiğini, ancak Tahmin edilen satır sayısı 1 olduğunu belirttiğini fark etmekteyim. Bu aslında bir tablo taraması biçiminde olabilir mi? Sadece birincil anahtar sütuna baktığını söylüyor.
Tabloda DBCC DBREINDEX ve UPDATE İSTATİSTİKLERİ çalıştı. Her ikisi de makul bir süre içinde tamamlandı.
Maalesef bu tabloda çok sayıda dizin var. Sistemimizde, hem giden hem de gelen sütunlar ve referanslarla dolu çekirdek tablodur. Tam sayı 48 dizin + birincil anahtar kümelenmiş dizinidir.
Başka neler görmeliyiz?
Ayrıca, bu tablonun daha önce bu soruna sahip olmadığını da unutmayın, bu sorun bugün aniden ortaya çıktı. Aynı tablo kurulumuna (müşteri veri tabanlarının kopyalarına) sahip çok sayıda veritabanımız var ve beklendiği gibi davranıyorlar, sorunlu olan sadece bu.
Döngüyü kullanmamak için tetiği düzelttiniz değil mi? Bir tetikleyici neredeyse hiçbir zaman bir imleci veya bir döngü içermemelidir. – HLGEM