Birisi uzaktan SQL Server veritabanımızda bir sorgu yapıyordu ve sistemleri çöktü.
Bu sorgunun yedeği yok ve sunucuda neyin çalıştırıldığını görmek istiyorlar.
Bu sorguyu bir günlükte veya bir yerde bir yerde bulmak mümkün müdür?
Birisi uzaktan SQL Server veritabanımızda bir sorgu yapıyordu ve sistemleri çöktü.
Bu sorgunun yedeği yok ve sunucuda neyin çalıştırıldığını görmek istiyorlar.
Bu sorguyu bir günlükte veya bir yerde bir yerde bulmak mümkün müdür?
Yanıtlar:
Benzer Grant Fritchey, SSMS'yi kapattığı ve üzerinde çalıştığı sorguyu kaybettiği sorunu yaşadı ... burada blog yazdı: Oh **********!
DÜZENLE
Bunu bir cevabın biraz daha detaylı hale getirmek için, yukarıda verilen bağlantılı Grant, bir örnek olarak sadece yeni yaptığınız sorguyu (örneğin en az denemeye çalıştığınız) çıkarmak için basitçe önbelleğe gitmek için bir sorgu sağlar:
SELECT dest.text
FROM sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
WHERE deqs.last_execution_time > '5/19/2011 11:00'
AND dest.text LIKE 'WITH%';
Grant'in blog yorumlarında belirtilen birkaç seçenek:
2005+, kurtarma için varsayılan iz .
Varsayılan iz 20 MB’de yuvarlanır ancak SQL 5 iz geçmişini korur. Sunucuya erişim ile * .trc dosyalarını MSSQL \ Log dizininden alabilirsiniz. Sunucuya erişemiyorsanız, aşağıdakiler geçerli varsayılan izleme dosyasının adını verir:
SELECT * FROM ::fn_trace_getinfo(default)
Geçerli dosya örneğin E: \ MSSQL.1 \ MSSQL \ LOG \ log_200.trc ise, önceki dosyalar log_199.trc, log_198.trc vb olmalıdır. İzlemenin içeriğini aşağıdakilerle alın:
SELECT * FROM fn_trace_gettable('E:\MSSQL.1\MSSQL\LOG\log_199.trc', default)
Sen belki , önbelleğe alınan sorgu planları hakkında bilgi almak sys.dm_exec_query_stats üzerine bilgi için BOL kontrol etmek veya aynı veritabanına bağlı yönetim stüdyo bu çalıştıramaz:
SELECT d.plan_handle ,
d.sql_handle ,
e.text
FROM sys.dm_exec_query_stats d
CROSS APPLY sys.dm_exec_sql_text(d.plan_handle) AS e
Çıktısını ile filtrele
WHERE text like '%something%'
sonuçları daraltmak için.
Veritabanının tam kurtarma modunda olması durumunda, bazı verileri kurtarma ve işlem günlüğünü okuyarak neler yapıldığı hakkında bilgi edinme şansı olabilir.
Ne yazık ki bu, varsayılan olarak desteklenmiyor, ancak bunu yapmanın yolları var.
ApexSQL Günlüğü veya SQL Günlüğü Kurtarma gibi üçüncü taraf araçlarını kullanmayı deneyebilirsiniz (sadece ücretsiz, ancak SQL 2000).
Başka bir seçenek de belgelenmemiş fonksiyonları DBCC LOG veya fn_dblog kullanarak denemektir. Bu daha karmaşık ama ücretsiz.
Veritabanınız tam kurtarma modeline ayarlanmışsa işlem günlüğü yedeklemenizi inceleyebilirsiniz. Daha fn_dump_dblog
fazla bilgi için bakınız .
ApexSQL , tarihe göre arama yapmanızı ve filtrelemenizi sağlayan 'Yürütülmüş sorgular' işlevine sahiptir.
Geçmişi SSMS önbelleğinden mi çektiğinden veya gerçekten kendi başına takip ettiğinden emin değilim. Yüklemeyi deneyebilir ve en iyisini umabilirsiniz.