Kategoriler
SQL Yazılar

Ubuntu 24.04 — Plesk & MSSQL 2025 Kurulum ve Yapılandırma Rehberi

Ubuntu 24.04 sunucusuna Plesk ve Microsoft SQL Server 2025 Preview kurulumu ile yapılandırma adımlarını kapsamaktadır.

🖥️ Ubuntu 24.04 LTS
🗄️ MSSQL 2025 Preview (17.0.1000.7)
🌐 Plesk Obsidian
🕐 Saat Dilimi: Europe/Istanbul (UTC+3)

1

Sistem Hazırlığı

1.1 Sistem Güncellemesi

Kuruluma başlamadan önce sistemin güncel olduğundan emin olun:

sudo apt update && sudo apt upgrade -y

1.2 Saat Dilimi Ayarı

Sunucu saat dilimini Türkiye saatine (Europe/Istanbul) ayarlayın:

sudo timedatectl set-timezone Europe/Istanbul
timedatectl status

Beklenen çıktı:

Time zone: Europe/Istanbul (+03, +0300)

1.3 Gerekli Paketler

sudo apt install -y curl wget gnupg2 software-properties-common apt-transport-https

2

2 Plesk Kurulumu

2.1 Plesk Installer İndirme

⚠️

Doğrudan sh <(curl ...) yöntemi Ubuntu 24.04’te sh: 0: cannot open /dev/fd/63 hatasına yol açabilir. Bunun yerine aşağıdaki yöntem kullanılmalıdır.

Installer’ı önce diske indirin, ardından çalıştırın:

curl -o /tmp/plesk-installer https://autoinstall.plesk.com/plesk-installer
chmod +x /tmp/plesk-installer
sudo /tmp/plesk-installer

2.2 Kurulum Seçenekleri

Installer interaktif menüsünden Plesk Obsidian sürümünü seçin. Kurulum süresi sunucu hızına göre 10–30 dakika arasında değişir.

2.3 Plesk’e İlk Giriş

Kurulum tamamlandıktan sonra tarayıcıdan erişin:

https://<sunucu-ip>:8443

ℹ️

İlk girişte yönetici şifresi oluşturmanız istenecektir. Güçlü bir şifre belirleyin.

2.4 Plesk Lisansı

Plesk, kurulumdan sonra 14 günlük deneme lisansı ile çalışır. Lisans bilgisine Tools & Settings → License Management menüsünden ulaşabilirsiniz.

Lisans TürüSüreNotlar
Trial (Deneme)14 günTüm özellikler aktif
Web Admin EditionÜcretli / YıllıkSınırlı domain
Web Pro EditionÜcretli / YıllıkOrta ölçekli
Web Host EditionÜcretli / YıllıkSınırsız domain

⚠️

Deneme süresi uzatılamaz. Süre dolmadan önce lisans satın alınmalıdır. Satın alma için: plesk.com/pricing

3

MSSQL 2025 Preview Kurulumu

3.1 Microsoft GPG Anahtarı ve Repo Ekleme

# GPG anahtarını ekle
curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | \
  sudo gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg

# SQL Server 2025 Preview reposunu ekle
curl -fsSL https://packages.microsoft.com/config/ubuntu/24.04/mssql-server-preview.list | \
  sudo tee /etc/apt/sources.list.d/mssql-server-preview.list

sudo apt update

3.2 SQL Server Kurulumu

sudo apt install -y mssql-server

3.3 İlk Yapılandırma

sudo /opt/mssql/bin/mssql-conf setup

Kurulum sihirbazı sırasında:

AdımSeçim
Edition seçimiİlk kurulumda Enterprise Evaluation görünür (sonradan değiştirilebilir)
SA şifresiGüçlü bir şifre belirleyin (büyük/küçük harf + rakam + özel karakter)
Lisans kabulYes

3.4 Servis Başlatma ve Doğrulama

sudo systemctl start mssql-server
sudo systemctl enable mssql-server
sudo systemctl status mssql-server

Çıktıda Active: active (running) görünüyorsa kurulum başarılıdır.

3.5 sqlcmd Araçlarının Kurulumu

# sqlcmd reposunu ekle
curl -fsSL https://packages.microsoft.com/config/ubuntu/24.04/prod.list | \
  sudo tee /etc/apt/sources.list.d/mssql-tools18.list

sudo apt update
sudo apt install -y mssql-tools18 unixodbc-dev

# PATH'e ekle
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc

3.6 Bağlantı Testi

sqlcmd -S localhost -U SA -P '<SA_şifreniz>' -C -Q "SELECT @@VERSION"

4

MSSQL Edition Değişikliği — Developer Edition

ℹ️

İlk kurulumda Enterprise Evaluation Edition (180 günlük deneme) kurulur. Geliştirme ortamları için Developer Edition‘a geçiş önerilir; bu edition ücretsizdir ve tüm Enterprise özelliklerini içerir, ancak üretim ortamında kullanılamaz.

4.1 Servisi Durdur

sudo systemctl stop mssql-server
sudo systemctl status mssql-server
# Active: inactive (dead) görünmeli

4.2 Edition Değişikliği

SQL Server 2025’te edition değişimi için set-edition komutu kullanılır:

sudo /opt/mssql/bin/mssql-conf set-edition

Açılan menüden Developer seçeneğini seçin ve onaylayın.

4.3 Servisi Yeniden Başlat

sudo systemctl start mssql-server
sudo systemctl status mssql-server

4.4 Edition Doğrulama

sqlcmd -S localhost -U SA -P '<SA_şifreniz>' -C -Q \
  "SELECT Edition, ProductVersion, GETDATE() AS SqlServerTime FROM sys.dm_os_sys_info CROSS JOIN (SELECT SERVERPROPERTY('Edition') AS Edition, SERVERPROPERTY('ProductVersion') AS ProductVersion) AS props"

Başarılı sonuç:

Edition ProductVersion SqlServerTime
——————————– ————— ———————–
Standard Developer Edition (64-bit) 17.0.1000.7 2026-08-19 14:47:47.600

Standard Developer Edition (64-bit) — Edition değişikliği başarıyla tamamlanmıştır.

5

Plesk Lisans Bilgisi

5.1 Lisans Ekranı

Tools & Settings → License Management → Additional License Keys ekranında ek lisans anahtarları yönetilir. Deneme sürümünde bu ekran boş görünür.

5.2 Lisans Yenileme / Satın Alma

YöntemAçıklama
Plesk Panel içindenTools & Settings → License Management → Buy License
Plesk web sitesiplesk.com/pricing adresinden satın alın, ardından anahtarı panele girin
Hosting sağlayıcısıBazı sağlayıcılar Plesk lisansını sunucu paketiyle birlikte sunar

⚠️

Deneme lisansı süresi dolduğunda panel kısıtlı moda girer; yeni domain/veritabanı eklenemez. Mevcut siteler çalışmaya devam eder.

6

Plesk ve MSSQL Birlikte Kullanım Mimarisi

🚫

Önemli Kısıtlama: Plesk for Linux, MSSQL Server’ı Database Servers ekranına ekleyip yönetemez. Bu ekranda yalnızca MariaDB / MySQL / PostgreSQL görünür. MSSQL, Plesk’ten bağımsız olarak ayrı bir servis şeklinde çalışır.

6.1 Mevcut Mimari

BileşenPortYönetim Arayüzü
Plesk Panel8443 (HTTPS)Web tarayıcı
MariaDB (Plesk)3306Plesk → Database Servers
MSSQL 20251433sqlcmd / SSMS / Azure Data Studio

6.2 MSSQL’e Uzaktan Bağlanma

Güvenlik duvarında 1433 portunu açın:

sudo ufw allow 1433/tcp
sudo ufw reload

Ardından Windows’taki SQL Server Management Studio (SSMS) veya Azure Data Studio ile bağlanın:

AlanDeğer
Server namesunucu IP yada domain,1433
AuthenticationSQL Server Authentication
LoginSA
Password<kurulumda belirlediğiniz şifre>
Trust server certificate✅ İşaretli

6.3 Plesk Web Uygulamalarında MSSQL Kullanımı

Plesk üzerinde barındırılan bir web uygulaması MSSQL’e bağlanmak istiyorsa, bağlantı dizesinde localhost,1433 veya sunucu IP’si kullanılır. Plesk bu bağlantıyı yönetmez; uygulama doğrudan MSSQL’e bağlanır.

# .NET / C# örnek bağlantı dizesi
Server=localhost,1433;Database=MyDb;User Id=SA;Password=<şifre>;TrustServerCertificate=True;
# PHP (PDO) örnek
$pdo = new PDO("sqlsrv:Server=localhost,1433;Database=MyDb", "SA", "<şifre>");

7

MSSQL Yönetimi — Temel Komutlar

7.1 Servis Yönetimi

# Servisi başlat
sudo systemctl start mssql-server

# Servisi durdur
sudo systemctl stop mssql-server

# Servisi yeniden başlat
sudo systemctl restart mssql-server

# Durum kontrolü
sudo systemctl status mssql-server

# Sistem açılışında otomatik başlatma
sudo systemctl enable mssql-server

7.2 sqlcmd ile Temel İşlemler

# Bağlan
sqlcmd -S localhost -U SA -P '<şifre>' -C

# Veritabanı listesi
SELECT name FROM sys.databases;
GO

# Yeni veritabanı oluştur
CREATE DATABASE MyDatabase;
GO

# Kullanıcı oluştur
CREATE LOGIN myuser WITH PASSWORD = 'Güçlü@Şifre123';
CREATE USER myuser FOR LOGIN myuser;
GO

# Versiyon ve edition kontrolü
SELECT @@VERSION;
SELECT SERVERPROPERTY('Edition');
GO

7.3 Log Dosyaları

# MSSQL log dosyaları
sudo ls /var/opt/mssql/log/

# Hata logunu görüntüle
sudo tail -100 /var/opt/mssql/log/errorlog

7.4 mssql-conf Yapılandırma Komutları

# Tüm ayarları listele
sudo /opt/mssql/bin/mssql-conf list

# Edition değiştir
sudo /opt/mssql/bin/mssql-conf set-edition

# SA şifresini sıfırla
sudo /opt/mssql/bin/mssql-conf set-sa-password

# Bellek limiti ayarla (MB cinsinden)
sudo /opt/mssql/bin/mssql-conf set memory.memorylimitmb 4096

8

Önemli Notlar ve Uyarılar

#KonuAçıklama
1MSSQL 2025 PreviewBu sürüm henüz Preview aşamasındadır. Üretim ortamında kullanımı önerilmez.
2Developer EditionÜcretsizdir, tüm Enterprise özelliklerini içerir. Yalnızca geliştirme/test ortamlarında kullanılabilir.
3Plesk + MSSQLPlesk for Linux, MSSQL’i panel üzerinden yönetemez. İkisi bağımsız servisler olarak çalışır.
4Güvenlik Duvarı1433 portunu yalnızca güvenilir IP’lere açın. Herkese açık bırakmak güvenlik riski oluşturur.
5SA HesabıSA hesabını doğrudan kullanmak yerine ayrı kullanıcılar oluşturun ve minimum yetki prensibi uygulayın.
6Plesk Lisansı14 günlük deneme süresi uzatılamaz. Süre dolmadan lisans satın alınmalıdır.
7YedeklemeMSSQL veritabanlarını düzenli olarak yedekleyin. Plesk’in yedekleme sistemi MSSQL’i kapsamaz.

📌

Kurulum Özeti:
✅ Ubuntu 24.04 — Hazır
✅ Saat dilimi: Europe/Istanbul (UTC+3)
✅ Plesk Obsidian — Kurulu (Deneme lisansı)
✅ MSSQL 2025 Preview (17.0.1000.7) — Kurulu
✅ Edition: Standard Developer Edition (64-bit)
✅ sqlcmd — Kurulu (/opt/mssql-tools18/bin/sqlcmd)
 

 

Kategoriler
SQL Windows Server Yazılar

SQL Server da TLS destekleri nelerdir?

SQL Server, farklı sürümlerde farklı TLS (Transport Layer Security) sürümlerini destekleyebilir. SQL Server’ın desteklediği TLS sürümleri, SQL Server sürümüne ve kullanılan Windows işletim sistemi sürümüne bağlı olarak değişebilir.

Genel olarak, SQL Server 2008 ve sonraki sürümler TLS 1.0, TLS 1.1 ve TLS 1.2’yi destekler. Ancak, güvenlik güncellemeleri ve yama güncellemeleri, özellikle güvenlik açıklarını düzeltmek amacıyla yapıldığı için, en güncel bilgileri Microsoft’un resmi kaynaklarından almanız önemlidir.

Aşağıda, tipik olarak desteklenen TLS sürümlerini gösteren bir tablo bulunmaktadır, ancak bu bilgiler zaman içinde değişebilir:

SQL Server SürümüMin. TLS SürümüMax. TLS Sürümü
SQL Server 2008TLS 1.0TLS 1.2
SQL Server 2008 R2TLS 1.0TLS 1.2
SQL Server 2012TLS 1.0TLS 1.2
SQL Server 2014TLS 1.0TLS 1.2
SQL Server 2016TLS 1.0TLS 1.2
SQL Server 2017TLS 1.0TLS 1.2
SQL Server 2019TLS 1.2TLS 1.3*
  • SQL Server 2019, TLS 1.3’ü destekleyebilir, ancak destek işletim sistemi ve konfigürasyona bağlı olarak değişebilir.

Güvenlik açısından, mümkünse en güncel SQL Server sürümünü ve işletim sistemini kullanmanız önerilir. Ayrıca, desteklenmeyen TLS sürümlerini kullanmaktan kaçınılmalıdır, çünkü bu durum güvenlik açıklarına neden olabilir.


Herhangi bir sorunuz veya eklemek istediğiniz detaylar varsa bana yazmaktan çekinmeyin.

Kategoriler
SQL Yazılar Yedekleme

SQL Server’da kaç türlü backup alınır?

SQL Server’da genellikle dört farklı türde yedekleme (backup) alınabilir:

  1. Tam Yedekleme (Full Backup)
  2. Diferansiyel Yedekleme (Differential Backup)
  3. İşlem Yedeklemesi (Transaction Log Backup)
  4. Dosya veya Dosya Grubu Yedeklemesi (File or Filegroup Backup)

Şimdi bunları detayına inelim;

1.Tam Yedekleme (Full Backup):
— Tam yedekleme, veri tabanının bütününü yedekler. Bu, veri tabanının anlık bir görüntüsünü çekmek anlamına gelir.
Neden Kullanmalısınız?:
— Güvenilir ve kapsamlı bir yedekleme sağlar. Özellikle büyük veri tabanları için idealdir, ancak depolama gereksinimleri yüksektir.

2.Diferansiyel Yedekleme (Differential Backup):
— Son tam yedeklemenin ardından yapılan değişiklikleri içerir. Yani, son tam yedekleme ile bu arasındaki farkı yakalar.
Neden Kullanmalısınız?:
— Depolama alanı tasarrufu sağlar ve geri yükleme sürelerini kısaltabilir. Ancak, her geçen sürede dosya boyutu artabilir.

3.İşlem Yedeklemesi (Transaction Log Backup):
— İşlem yedeklemesi, veri tabanındaki her bir işlemi kaydeder. Bu, belirli bir anın ardındaki tüm işlemleri içerir.
Neden Kullanmalısınız?:
— Veri kaybını minimumda tutar ve felaket durumlarına karşı güçlü bir koruma sağlar. Ancak, işlem yedekleme dosyaları hızla büyüyebilir.

4.Dosya veya Dosya Grubu Yedeklemesi (File or Filegroup Backup):
— Belirli dosyalar veya dosya grupları için yedekleme yapılmasını sağlar. Bu, özellikle büyük veri tabanları için özelleştirilmiş bir strateji sunar.
Neden Kullanmalısınız?:
— İhtiyaca göre özelleştirilebilir ancak yönetimi biraz karmaşık olabilir. Belirli dosyaların geri yüklenmesi durumunda kullanışlıdır.

İyi bir yedekleme stratejisi oluşturmak, veri güvenliğini ve hızlı geri yükleme yeteneklerini sağlamak için önemlidir. Tipik bir yaklaşım, düzenli tam yedeklemeler, ara sıra diferansiyel yedeklemeler ve sık işlem yedeklemelerini içermelidir. Bu strateji, iş sürekliliğini sağlama ve veri kaybını en aza indirme açısından kritiktir. Sizde senaryolarınıza göre yedeklemelerden en uygun olanı seçip ilerleyebilirsiniz.


Herhangi bir sorunuz veya eklemek istediğiniz detaylar varsa bana yazmaktan çekinmeyin.

Kategoriler
SQL Yazılar

SQL Server’da Index Bakımı: REORGANIZE ve REBUILD İşlemlerini Belirleme

Indexlerin bozulma oranlarını belirlemek ve düzeltmek için SQL sorgusu kullanma konsepti oldukça önemlidir. Bu sorgu, veri tabanlarının performansını artırmak için indexlerin nasıl bakım gerektirdiğini anlamak için kullanışlı bir araçtır. Aşağıda verilen SQL sorgusunu kullanarak index bozulma oranlarını kontrol etme ve gerektiğinde düzeltme sürecini anlatacağım.

SQL Sorgusu:

-- Bu Sorgu Indexlerdeki bozulma oranlarını listeler ve excel aracılığıyla düzeltme (Index Defragmentation) işlemi uygulanabilir.
-- Bozulma oranları listelendikten sonra; bozulma yüzdesi 0-10 olanlar normaldir. 10-30 arası olanlar REORGANIZE edilmelidir. 30 üstü olanlar ise REBUILD edilmelidir.

SELECT S.name as 'Schema',
T.name as 'Table',
I.name as 'Index',
DDIPS.avg_fragmentation_in_percent,
DDIPS.page_count
FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, NULL) AS DDIPS
INNER JOIN sys.tables T on T.object_id = DDIPS.object_id
INNER JOIN sys.schemas S on T.schema_id = S.schema_id
INNER JOIN sys.indexes I ON I.object_id = DDIPS.object_id
AND DDIPS.index_id = I.index_id
WHERE DDIPS.database_id = DB_ID()
and I.name is not null
AND DDIPS.avg_fragmentation_in_percent > 0
ORDER BY DDIPS.avg_fragmentation_in_percent desc

Bu SQL sorgusu, mevcut veri tabanındaki indexlerin bozulma oranlarını ve sayfa sayısını listeleyecektir. Indexlerin bozulma oranlarının ne kadar olduğunu anlamak önemlidir, çünkü bu, indexlerin nasıl düzeltileceğini belirlememize yardımcı olur.

Ardından, bu sorgunun çıktıları, bir Excel tablosuna kopyalanabilir ve aşağıdaki Excel formülü kullanılarak otomatik olarak index düzeltme sorguları üretilebilir:

=EĞER(D2>10;BİRLEŞTİR("ALTER INDEX ";C2;" ON ";B2;" ";EĞER(D2<30;"REORGANIZE";"REBUILD");" WITH(ONLINE=ON)";"");"")

Bu Excel formülü, index bozulma oranına göre ALTER INDEX sorgularını otomatik olarak oluşturur. Index bozulma yüzdesi 10’dan büyükse ve 30’dan küçükse, REORGANIZE işlemi uygulanır; aksi takdirde, REBUILD işlemi uygulanır.

Bu makale konsepti, veri tabanı yöneticilerinin SQL Server veya benzeri veri tabanı sistemlerinde index bakımını otomasyonlaştırarak veri tabanı performansını artırmalarına yardımcı olacaktır. Index bakımının düzenli olarak yapılması, veri tabanı performansını optimize etmek için kritik bir adımdır.


REORGANIZE ve REORGANIZE işlemleri sql de neye göre belirlenir?
SQL Server’da index bakımı için “REORGANIZE” ve “REBUILD” işlemleri, indexlerin bozulma derecesine ve veri tabanının ihtiyaçlarına göre belirlenir. İşte bu kararı etkileyen faktörler:

1.Index Bozulma Oranı (avg_fragmentation_in_percent): Indexlerin bozulma oranı, bir indexin ne kadar fragmente olduğunu gösteren önemli bir ölçüttür. Bozulma oranı, SQL Server tarafından otomatik olarak hesaplanır ve  sys.dm_db_index_physical_stats işlevi kullanılarak elde edilebilir. Genellikle, aşağıdaki kurallar kullanılarak belirlenir:

  • Bozulma oranı %0–10 arasında ise, index normal kabul edilir.
  • Bozulma oranı %10–30 arasında ise, “REORGANIZE” işlemi uygulanabilir.
  • Bozulma oranı %30’dan büyükse, “REBUILD” işlemi gerekebilir.

2.Veritabanı Yükü ve Veri tabanı Kullanım Deseni: Veri tabanının yükü ve kullanım deseni de index bakımını etkiler. Eğer bir veri tabanı çok yoğun bir şekilde yazılıyorsa veya çok fazla işlem görüyorsa, bakım işlemlerini yaparken dikkatli olunmalıdır. Bu tür durumlarda “REORGANIZE” işlemi tercih edilebilir, çünkü daha hafif bir işlemdir. “REBUILD” işlemi daha agresif ve kaynak yoğun bir işlem olduğu için dikkatli bir planlama gerektirir.

3.Veritabanı Boyutu ve Kaynaklar: Veri tabanının boyutu ve mevcut kaynaklar da bakım kararlarını etkiler. “REBUILD” işlemi daha fazla kaynak gerektirir, bu nedenle büyük veri tabanlarında bu işlem daha fazla zaman alabilir ve kaynaklarınızı daha fazla etkileyebilir. Küçük veri tabanları için “REBUILD” işlemi daha az sorun yaratabilir.

4.Veritabanının Kritikliği: Veri tabanının kritikliği, bakım işlemleri için ne kadar süre ve kaynak ayrılacağını belirler. Kritik veri tabanlar için bakım işlemleri daha dikkatli bir şekilde planlanmalıdır.

5.İşletim Sistemi ve Donanım: İşletim sistemi ve donanım kaynaklarının veri tabanına tahsis edilme durumu da önemlidir. Daha güçlü bir donanıma sahipseniz, “REBUILD” işlemini daha sık tercih edebilirsiniz.

Bunlar, index bakımı için “REORGANIZE” ve “REBUILD” işlemlerini belirlemede dikkate alınması gereken temel faktörlerdir. Her veri tabanı farklıdır ve özel gereksinimlere sahip olabilir, bu nedenle bakım işlemleri veri tabanınızın ihtiyaçlarına göre uyarlanmalıdır. İdeal olarak, düzenli aralıklarla index bozulma oranları izlenmeli ve veri tabanı yönetimi politikalarınıza uygun olarak bakım işlemleri planlanmalıdır.


Meraklıları için aşağıda bu kodun ayrıntılı açıklamalarını bulabilir;

1.SELECT İfadesi: Bu ifade, sorgunun sonuç kümesinin hangi sütunları içereceğini belirler. Aşağıda kullanılacak sütunların isimleri ve bazılarına verilen takma adlar (alias) bulunmaktadır.

  • S.name as 'Schema': Şema adını temsil eden sütun, takma adı ‘Schema’ olarak verilmiştir.
  • T.name as 'Table': Tablo adını temsil eden sütun, takma adı ‘Table’ olarak verilmiştir.
  • I.name as 'Index': Index adını temsil eden sütun, takma adı ‘Index’ olarak verilmiştir.
  • DDIPS.avg_fragmentation_in_percent: Ortalama bozulma yüzdesini temsil eden sütun.
  • DDIPS.page_count: Sayfa sayısını temsil eden sütun.

2.FROM İfadesi: Bu ifade, verilerin alınacağı kaynağı belirler. Bu sorguda sys.dm_db_index_physical_stats işlevi kullanılarak veritabanındaki indexlerin fiziksel istatistikleri alınır.

  • sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, NULL) AS DDIPS: Bu işlev, veritabanındaki indexlerin fiziksel istatistiklerini döndürür. DB_ID() ile mevcut veritabanının kimliği alınır. AS DDIPS ise bu sonuç kümesine verilen bir takma adıdır.

3.INNER JOIN İfadeleri: Bu ifadeler, verilerin birleştirilmesi için kullanılır. Sorguda, sys.tablessys.schemas, ve sys.indexes tabloları ile sys.dm_db_index_physical_stats sonuçları birleştirilir. Bu, ilgili tablo, şema ve index bilgilerinin bir araya getirilmesini sağlar.

4.WHERE İfadesi: Bu ifade, sorgu sonuçlarının filtrelenmesi için kullanılır. Bu sorguda, yalnızca belirli koşulları karşılayan indexler dahil edilir. Örneğin, bozulma oranı 0’dan büyük olan indexler alınır ve null olmayan indexler seçilir.

5.ORDER BY İfadesi: Bu ifade, sonuçların nasıl sıralanacağını belirler. Sorgu sonuçları bozulma yüzdesine göre büyükten küçüğe sıralanır, yani en bozuk indexler önce listelenir.


Herhangi bir sorunuz veya eklemek istediğiniz detaylar varsa bana yazmaktan çekinmeyin.

Kategoriler
SQL Windows Server Yazılar

SQL Server Aktif olan ve Olmayan Veri Tabanlarını Bulma İşlemi

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.

  • İlgili alanları doldurarak sql server a giriş yapıyoruz,

  • Giriş işlemi yaptıktan sonra “New Query” diyerek yeni bir sorgu ekranı açıyoruz

  • 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

  • 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ı;

1. `CREATE TABLE #T` komutu, geçici bir tablo oluşturur. Bu geçici tablo `#T` adını taşır ve içinde birkaç sütun bulunur: `dbName`, `last_user_seek`, `last_user_scan`, `last_user_lookup` ve `last_user_update`. Bu tablo, sonuçları saklamak için kullanılacaktır.

2. `declare @dbId as int` ve `declare @dbname as varchar(100)` komutları, sorguda kullanılacak iki değişkeni tanımlar. `@dbId` bir tamsayı (int) ve `@dbname` bir karakter dizisi (varchar) değişkenidir.

3. `declare crs cursor for select dbid,name from sysdatabases` komutu, `sysdatabases` sistem 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.

4. `open crs` komutu, tanımlanan imleci açar ve veritabanı bilgilerini işlemeye başlamak için hazır hale getirir.

5. `fetch next from crs into @dbId,@dbname` komutu, imlecin bir sonraki veritabanı kaydına hareket etmesini ve bu kaydın `@dbId` ve `@dbname` değişkenlerine atanmasını sağlar. İmleç, tüm veritabanları üzerinde dolaşırken bu işlem tekrarlanır.

6. `while @@FETCH_STATUS=0` komutu, imlecin sona erip ermediğini kontrol eder. `@@FETCH_STATUS` değişkeni 0 olduğu sürece, yani imleç daha fazla veritabanı kaydı bulduğu sürece döngü devam eder.

7. Döngü içindeki `Insert Into #T` komutu, `#T` geçici tablosuna verileri ekler. Bu komut, `sys.dm_db_index_usage_stats` sistem görünümünden belirli bir veritabanının dizin kullanım istatistiklerini alır ve bu istatistiklerin maksimum değerlerini `#T` tablosuna ekler. Bu sayede her bir veritabanının en son dizin kullanım istatistikleri bu tabloda birleştirilir.

8. Döngü, bir sonraki veritabanı kaydına geçmek için `fetch next from crs into @dbId,@dbname` komutunu kullanır ve işlem diğer veritabanları üzerinde tekrarlanır.

9. Tüm veritabanları üzerinde dolaşıldığında, `close crs` komutu imleci kapatır ve `deallocate crs` komutu imleci temizler.

10. `select * from #t` komutu, `#T` tablosundaki sonuçları görüntüler. Bu sonuçlar, her bir veritabanının en son dizin kullanım istatistiklerini içerir.

11. Son olarak, `drop table #t` komutu, geçici tabloyu siler, çünkü artık sonuçlara ihtiyaç duyulmamaktadır.

kaynak : https://omercolakoglu.net/


Herhangi bir sorunuz veya eklemek istediğiniz detaylar varsa bana yazmaktan çekinmeyin.