SQL Server Aktif olan ve Olmayan Veri Tabanlarını Bulma İşlemi
Merhaba,
SQL Server Aktif olan ve Olmayan Veri Tabanlarını Bulma İşlemi
Merhaba,
Sql serverda çok fazla veri tabanı olduğu durumlarda hangilerinin aktif olarak kullanılıp kullanılmadığını belirlemek için aşağıdaki kodu kullanarak bu işlemi gerçekleştireceğiz;
CREATE TABLE #T (dbName varchar(100),last_user_seek datetime,last_user_scan datetime,last_user_lookup datetime,last_user_update datetime)
declare @dbId as int
declare @dbname as varchar(100)
declare crs cursor for select dbid,name from sysdatabases
open crs
fetch next from crs into @dbId,@dbname
while @@FETCH_STATUS=0
begin
Insert Into #T
Select @dbname,
last_user_seek = MAX(last_user_seek),
last_user_scan = MAX(last_user_scan),
last_user_lookup = MAX(last_user_lookup),
last_user_update = MAX(last_user_update)
From
sys.dm_db_index_usage_stats
WHERE
database_id=@dbId
fetch next from crs into @dbId,@dbname
end
close crs
deallocate crs
select * from #t
drop table #t
- Öncelikle SSMS (SQL Server Management Studio) açıyoruz. Eğer sizde yüklü değil ise kurulumunu anlattığım yazıma **buradan **ulaşabilirsiniz.

source: screenshot by author
- İlgili alanları doldurarak sql servera giriş yapıyoruz,

source: screenshot by author
- Giriş işlemi yaptıktan sonra “New Query” diyerek yeni bir sorgu ekranı açıyoruz

source: screenshot by author
- Gelen sorgu ekranına daha önce verdiğim sorguyu kopyalarak buraya yapıştırıyoruz ve “Execute” yada F5 tuşuna basarak sorguyu gerçekleştiriyoruz

source: screenshot by author
- sorgu sonrasında yukarıdaki gibi hangi veri tabanınızda ne zaman işlem yapılmış ya da yapılmamış görmüş olacaksınız.
Meraklıları için sorgunun açıklaması;
-
CREATE TABLE #Tkomutu, geçici bir tablo oluşturur. Bu geçici tablo#Tadını taşır ve içinde birkaç sütun bulunur:dbName,last_user_seek,last_user_scan,last_user_lookupvelast_user_update. Bu tablo, sonuçları saklamak için kullanılacaktır. -
declare [@dbId](http://twitter.com/dbId) as intvedeclare [@dbname](http://twitter.com/dbname) as varchar(100)komutları, sorguda kullanılacak iki değişkeni tanımlar.[@dbId](http://twitter.com/dbId)bir tamsayı (int) ve[@dbname](http://twitter.com/dbname)bir karakter dizisi (varchar) değişkenidir. -
declare crs cursor for select dbid,name from sysdatabaseskomutu,sysdatabasessistem görünümünden veritabanı kimlikleri (dbid) ve isimleri (name) seçerek bir imleç (cursor) tanımlar. Bu imleç, tüm veritabanları üzerinde dönmemize izin verecektir. -
open crskomutu, tanımlanan imleci açar ve veritabanı bilgilerini işlemeye başlamak için hazır hale getirir. -
fetch next from crs into [@dbId](http://twitter.com/dbId),[@dbname](http://twitter.com/dbname)komutu, imlecin bir sonraki veritabanı kaydına hareket etmesini ve bu kaydın[@dbId](http://twitter.com/dbId)ve[@dbname](http://twitter.com/dbname)değişkenlerine atanmasını sağlar. İmleç, tüm veritabanları üzerinde dolaşırken bu işlem tekrarlanır. -
while @@FETCH_STATUS=0komutu, imlecin sona erip ermediğini kontrol eder.@@FETCH_STATUSdeğişkeni 0 olduğu sürece, yani imleç daha fazla veritabanı kaydı bulduğu sürece döngü devam eder. -
Döngü içindeki
Insert Into #Tkomutu,#Tgeçici tablosuna verileri ekler. Bu komut,sys.dm_db_index_usage_statssistem görünümünden belirli bir veritabanının dizin kullanım istatistiklerini alır ve bu istatistiklerin maksimum değerlerini#Ttablosuna ekler. Bu sayede her bir veritabanının en son dizin kullanım istatistikleri bu tabloda birleştirilir. -
Döngü, bir sonraki veritabanı kaydına geçmek için
fetch next from crs into [@dbId](http://twitter.com/dbId),[@dbname](http://twitter.com/dbname)komutunu kullanır ve işlem diğer veritabanları üzerinde tekrarlanır. -
Tüm veritabanları üzerinde dolaşıldığında,
close crskomutu imleci kapatır vedeallocate crskomutu imleci temizler. -
select * from #tkomutu,#Ttablosundaki sonuçları görüntüler. Bu sonuçlar, her bir veritabanının en son dizin kullanım istatistiklerini içerir. -
Son olarak,
drop table #tkomutu, geçici tabloyu siler, çünkü artık sonuçlara ihtiyaç duyulmamaktadır.
Yazımı beğendiyseniz alkış butonunu kullanabilirsiniz. Ayrıca, herhangi bir sorunuz veya eklemek istediğiniz detaylar varsa bana yazmaktan çekinmeyin.
kaynak : https://omercolakoglu.net/
메타데이터
- post_id
- b40a746ed131
- slug
- sql-server-aktif-olan-ve-olmayan-veri-tabanlarını-bulma-i̇şlemi-b40a746ed131
- url
- https://medium.com/@ahmet-orhan/sql-server-aktif-olan-ve-olmayan-veri-tabanlar%C4%B1n%C4%B1-bulma-i%CC%87%C5%9Flemi-b40a746ed131
- canonical_url
- https://medium.com/@ahmet-orhan/sql-server-aktif-olan-ve-olmayan-veri-tabanlar%C4%B1n%C4%B1-bulma-i%CC%87%C5%9Flemi-b40a746ed131
- author_url
- https://medium.com/@ahmet-orhan
- status
- ok
- fetched_at
- 2026-07-25 03:20:30