Hızlı Özet – Windows Server SQL Server Kurulumu
Varsayımsal SQL01 laboratuvarında Windows Server 2022 üzerinde SQL Server 2022 Developer kurulumu planlanır. Hedef yalnızca çalışan bir hizmet değil; sınırlandırılmış erişim ve geri yüklenebilir veridir.
- Ortam ve lisans — 4 vCPU ve 8 GB RAM örnek başlangıç kapasitesidir; Developer yalnızca geliştirme ve test içindir, üretim kullanımına lisans vermez.
- Dar kurulum kapsamı — Yalnızca Database Engine Services bileşenini, varsayılan MSSQLSERVER örneğini ve NT SERVICE\MSSQLSERVER hizmet hesabını kullanın.
- Sınırlı uygulama yetkisi — Yerel yönetimde Windows kimlik doğrulamasını kullanın; SQL oturumu gerekiyorsa karma modu açıp uygulamaya yalnızca gerekli nesne izinlerini verin.
- Ölçülebilir başlangıç ayarları — Bu laboratuvarda max server memory için 4096 MB, tempdb için eşit boyutlu 4 veri dosyası ve 1 günlük dosyası başlangıç olarak değerlendirilir.
- Korumalı uzak bağlantı — Statik TCP 1433 erişimini uygulama ve yönetim IP adresleriyle sınırlandırın; SSMS bağlantısında Mandatory şifreleme ve doğrulanabilir TLS sertifikası kullanın.
- Geri dönüş kanıtı — Tam ve transaction log yedeklerini sunucu dışında da saklayın; ayrı bir veritabanına gerçek geri yükleme yapmadan yedek sürecini tamamlanmış saymayın.
SQL Server hizmetinin başlaması, kurulumun tamamlandığını göstermez. Windows Server SQL Server kurulumu; uygun lisans ve disk hazırlığından sonra Database Engine yüklemeyi, yönetici hesabını tanımlamayı ve güncellemeleri uygulamayı gerektirir. Kullanıma geçmeden bellek sınırını, TLS ile korunan TCP erişimini ve yedekten dönüşü doğrulayın. Buradaki örnekler, üretim dışı Windows Server 2022 laboratuvarına dayanır.
İçindekiler
- Kurulumdan önce VPS, disk ve lisans kontrolü
- SQL Server 2022 Database Engine kurulumu
- Windows kimlik doğrulaması mı, karma mod mu?
- Bellek, veri dosyaları ve tempdb için başlangıç ayarları
- TCP 1433 erişimini TLS ve güvenlik duvarıyla sınırlandırma
- SSMS bağlantısını katman katman doğrulama
- İlk yedek ancak geri yükleme provasıyla tamamlanır
- Uygulamayı Bağlamadan Önce Kontrol Edin
- Sık Sorulan Sorular
- Kaynaklar
Kurulumdan önce VPS, disk ve lisans kontrolü
Kurulum sihirbazının açılması, sunucunun hazır olduğunu göstermez. Önce zemini kontrol edin. Windows Server SQL Server kurulumu öncesinde eksik birimi fark etmek, veri dosyalarını sonradan başka diske taşımaktan daha kolaydır.
Varsayımsal, üretim dışı laboratuvar sunucusu SQL01; Windows Server 2022 Standard Desktop Experience 21H2, 20348 derleme ailesi, 4 vCPU ve 8 GB RAM kullanır. Microsoft Learn gereksinim belgesi, SQL Server 2022 için bu işletim sistemini destekler; x64 işlemci gerektirir. Express dışındaki sürümlerde asgari bellek 1 GB, asgari boş disk alanı 6 GB’dır. Bunlar kapasite hedefi değildir. Örnekteki 4 vCPU/8 GB başlangıç kapasitesidir; işletim sistemi, veriler, günlükler ve yedekler için ayrıca pay bırakılmalıdır.
Lisans seçimi kullanım amacından başlar
Microsoft’un sürüm karşılaştırmasına göre SQL Server 2022 Developer geliştirme ve test içindir; üretim kullanımına lisans vermez. Laboratuvarda Developer 16.x, varsayılan MSSQLSERVER örneği ve yalnızca Database Engine Services kullanılır. Express ücretsiz üretim kullanımına uygun olabilir; ilişkisel veritabanı başına 10 GB sınırı ve işlemci/bellek kısıtları seçimde belirleyicidir. Üretimde Standard veya Enterprise için uygun SQL Server lisansını ayrıca değerlendirin; Windows Server lisansı bunu kendiliğinden karşılamaz.
Active Directory bulunmaz. SQL01 üzerindeki yetkili yerel hesapla oturum açıp PowerShell’i yönetici olarak çalıştırın. Aşağıdaki salt okunur örnek, yetkiyi, işletim sistemini, kaynakları ve disk hazırlığını kontrol eder:
$identity = [Security.Principal.WindowsIdentity]::GetCurrent()
$principal = [Security.Principal.WindowsPrincipal]::new($identity)
$principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
Get-CimInstance Win32_OperatingSystem |
Select-Object CSName, Caption, Version, BuildNumber, OSArchitecture
Get-CimInstance Win32_ComputerSystem |
Select-Object NumberOfLogicalProcessors,
@{Name='RAM_GiB'; Expression={[math]::Round($_.TotalPhysicalMemory / 1GB, 2)}}
Get-Volume -DriveLetter C,D,L,T,B -ErrorAction Stop |
Select-Object DriveLetter, FileSystem, HealthStatus,
@{Name='Free_GiB'; Expression={[math]::Round($_.SizeRemaining / 1GB, 2)}}
'C:\Install\SQL2022','D:\SQL\Data','L:\SQL\Log',
'T:\SQL\TempDB','B:\SQL\Backup' | ForEach-Object {
[pscustomobject]@{
Path = $_
Exists = Test-Path -LiteralPath $_ -PathType Container
}
}
Beklenen çıktılar: yetki için True, 4 mantıksal işlemci, yaklaşık 8 GiB RAM; işletim sisteminde SQL01, Windows Server 2022 Standard, 64 bit mimari ve 20348 derlemesi. Önceden oluşturulmuş birimler NTFS ve sağlıklı olmalıdır. Boş alanı büyüme beklentisiyle karşılaştırın; ayrı sürücü harfleri fiziksel I/O yalıtımını garanti etmez. Dizinlerde False eksik klasörü gösterir; True yazma yetkisini kanıtlamaz.
Kurulum medyasını ve güncel, onaylanmış CU paketini Microsoft kaynaklarından edinin; CU numarasıyla tam derlemeyi yayın öncesinde doğrulayın. Windows Update durumunu ve kurulum kurallarındaki yeniden başlatma uyarılarını inceleyin; gereken yeniden başlatmayı tamamlamadan ilerlemeyin.
Mevcut sistemin yedeğini kurulumdan önce alın. Windows Server Yedekleme Nasıl Yapılır? içeriğindeki geri dönüş hazırlığını uygulayın; yalnızca VPS snapshot’ına güvenmeyin. Sağlayıcının konsol veya kurtarma erişimini ve yedeğe ulaşabildiğinizi doğrulamadan kurulumu başlatmayın.
Dikkat
SQL Server 2022 Developer, üretim iş yükleri için lisans sağlamaz; VPS'nin size ait olması bunu değiştirmez. Örnekteki 4 vCPU ve 8 GB RAM, Microsoft'un asgari gereksinimleri veya her uygulama için yeterlilik garantisi değildir.
SQL Server 2022 Database Engine kurulumu
Kurulum sihirbazında fazladan seçilen her bileşen, bakım listenizi uzatır. Seçimi dar tutun. Bu varsayımsal, üretim dışı laboratuvarda SQL01; 4 vCPU, 8 GB RAM ve Windows Server 2022 Standard Desktop Experience 21H2 (20348 derleme ailesi) kullanır. Microsoft Learn gereksinim belgesi, SQL Server 2022 için bu işletim sistemi desteğini doğrular.
Microsoft’tan edindiğiniz SQL Server 2022 medyasını C:\Install\SQL2022 dizinine hazırlayın. SQL01 üzerindeki yetkili yerel hesapla PowerShell’i yönetici olarak açıp kurulum dosyasının imzasını inceleyin:
Get-AuthenticodeSignature -FilePath 'C:\Install\SQL2022\setup.exe' |
Format-List Status, StatusMessage, SignerCertificate
Beklenen durum Valid, imzalayan kuruluş Microsoft’tur. Kontrol yalnızca bu dosyayı kapsar; medyanın tamamını doğrulamaz. İmza doğrulanmıyorsa ilerlemeyin. Ardından setup.exe dosyasını yönetici olarak çalıştırın; Installation ekranında yeni bağımsız SQL Server kurulumunu seçip önkoşul hatalarını giderin.
Sürüm olarak Developer seçin. Microsoft Learn sürüm açıklamalarına göre Developer, geliştirme ve test içindir; üretim kullanımına lisans vermez. Üretimde uygun SQL Server lisansını ayrıca değerlendirin. Feature Selection ekranında yalnızca Database Engine Services işaretli kalsın. Instance Configuration altında Default instance seçerek MSSQLSERVER varsayılan örneğini oluşturun.
Server Configuration ekranında motor hizmeti hesabını NT SERVICE\MSSQLSERVER olarak bırakın. Collation seçimini uygulamanın gereksinimine göre yapın – Türkçe karakter karşılaştırmaları ve büyük/küçük harf duyarlılığı seçimden etkilenir. Database Engine Configuration altında Windows Authentication seçin. Active Directory bulunmayan SQL01’de Add Current User düğmesiyle yetkili yerel hesabınızı SQL Server yöneticilerine açıkça ekleyin.
Data Directories ekranında kullanıcı verisini D:\SQL\Data, günlükleri L:\SQL\Log, yerel yedekleri B:\SQL\Backup olarak ayarlayın. TempDB sekmesinde veri ve günlük dizinlerini T:\SQL\TempDB yapın. Bu birimler önceden oluşturulmuş NTFS diskleridir; ayrı sürücü harfleri fiziksel I/O yalıtımı garantisi değildir.
Kurulumu tamamlayıp Microsoft’tan edinilen güncel, onaylanmış CU’yu uygulayın. CU numarası ve tam derleme yayın öncesinde doğrulanmalıdır. Gerekiyorsa yeniden başlatın; SQL01’de PowerShell ile hizmet durumuna bakın:
Get-Service -Name MSSQLSERVER | Select-Object Name, Status
Beklenen durum Running değeridir. Yetkili SQL bağlantısı kurulduğunda tam sürümü şu sorguyla kaydedin:
SELECT
SERVERPROPERTY('ProductVersion') AS ProductVersion,
SERVERPROPERTY('Edition') AS Edition,
SERVERPROPERTY('InstanceName') AS InstanceName;
ProductVersion, onaylanan tam 16.x derlemesiyle eşleşmeli; Edition Developer sürümünü göstermelidir. Varsayılan örnekte InstanceName, NULL döner. Kurulum başarısızsa tekrar denemeden önce C:\Program Files\Microsoft SQL Server\160\Setup Bootstrap\Log altındaki Summary.txt ve ilgili çalıştırmanın zaman damgalı klasöründeki Detail.txt kayıtlarını inceleyin.
Sahadan not
Bu not gerçek saha olayı değil, varsayımsal laboratuvar kontrolüdür. SQL01 üzerinde kurulum başarısız olursa C:\Program Files\Microsoft SQL Server\160\Setup Bootstrap\Log altındaki Summary.txt ve ilgili kurulumun Detail.txt kayıtları incelenmelidir. Herhangi bir testin yapıldığı veya belirli bir hata çıktısının gözlendiği iddia edilmez.
Windows kimlik doğrulaması mı, karma mod mu?
Uygulamanın bağlanması için sunucudaki bütün kapıları açmanız gerekmez. Windows Server SQL Server kurulumu sırasında varsayılan Windows kimlik doğrulamasını koruyun; SQL01 üzerindeki yerel yönetimi, kurulumda SQL Server yöneticisi olarak eklediğiniz yetkili yerel Windows hesabıyla yürütün. Windows yöneticisi olmak, SQL Server içinde kendiliğinden sysadmin yetkisi sağlamaz.
Bu varsayımsal, üretim dışı laboratuvarda Active Directory bulunmaz. Windows 11 yönetim istemcisindeki hesabınız SQL01 tarafından otomatik olarak güvenilir kabul edilmez; aynı kullanıcı adı tek başına yeterli değildir. Uzak SSMS 20.2 bağlantısı isteğe bağlı karma mod dalını izler. Microsoft Learn sürüm açıklamasına göre SQL Server 2022 Developer üretim kullanımına lisans vermez; üretim lisansını ayrıca değerlendirin.
SQL kimlik doğrulaması gerekiyorsa kurulumda karma modu seçebilirsiniz. Sonradan geçiş için SSMS sunucu özelliklerinin Security bölümünde SQL Server and Windows Authentication mode seçeneğini işaretleyin. Değişiklik, Database Engine hizmeti yeniden başlatılınca etkinleşir; varsayılan örneğin hizmet adı MSSQLSERVER olur. Mevcut bağlantılar kesileceğinden işlemi planlayın. Karma mod, Windows kimlik doğrulamasını kaldırmaz; sa hesabını etkinleştirmenizi de gerektirmez.
Yetkiyi dar tutun. Örnekten önce yetkili yönetim bağlantısıyla SSMS üzerinden AppLogin adlı bir SQL oturumu oluşturun. Parolayı parola yöneticisinde üretip güvenli kasada saklayın, parola ilkesi denetimini açık bırakın ve ek sunucu rolü atamayın. Gerçek parolayı sorgu dosyasına yazmayın. Uygulama hesabını insan yönetici hesabından ayrı tutun.
Aşağıdaki T-SQL, henüz bulunmayan AppDb veritabanını ve varsayımsal iş kaydı tablosunu oluşturur. Yetkili yönetici tarafından bir kez çalıştırılmak üzere hazırlanmıştır; uygulama kullanıcısını oturumla eşler, özel role ekler ve yalnızca örnek tabloyu okuma ve tabloya kayıt ekleme izinlerini verir.
USE master;
GO
CREATE DATABASE AppDb;
GO
USE AppDb;
GO
CREATE TABLE dbo.WorkItems
(
WorkItemId int IDENTITY(1,1) NOT NULL PRIMARY KEY,
Title nvarchar(200) NOT NULL
);
GO
CREATE USER AppUser FOR LOGIN AppLogin;
CREATE ROLE AppWriter AUTHORIZATION dbo;
GRANT SELECT, INSERT ON OBJECT::dbo.WorkItems TO AppWriter;
ALTER ROLE AppWriter ADD MEMBER AppUser;
GO
EXECUTE AS USER = 'AppUser';
SELECT
HAS_PERMS_BY_NAME('dbo.WorkItems', 'OBJECT', 'SELECT') AS CanSelect,
HAS_PERMS_BY_NAME('dbo.WorkItems', 'OBJECT', 'INSERT') AS CanInsert,
HAS_PERMS_BY_NAME('dbo.WorkItems', 'OBJECT', 'DELETE') AS CanDelete;
REVERT;
GO
Başka izin atanmamış bu örnekte son sorgunun beklenen değerleri sırasıyla 1, 1 ve 0 olur: okuma ve ekleme serbest, silme izni yoktur. Kontrol, veritabanı kullanıcısının izinlerini gösterir; uzak bağlantıyı veya parolayı sınamaz. REVERT önceki yürütme bağlamına döndürür. Uygulama bağlantısında sa hesabını, sysadmin veya db_owner rollerini kullanmayın.
Kimlik doğrulama, aktarım şifrelemesinin yerine geçmez. Microsoft Learn bağlantı şifreleme belgesindeki TLS yapılandırmasını ayrıca uygulayın. Uygulama ileride kayıt güncellemek isterse bütün veritabanına yetki vermek yerine yalnızca gerekli nesneye UPDATE izni ekleyin.
Bellek, veri dosyaları ve tempdb için başlangıç ayarları
SQL Server’a bütün RAM’i bırakmak, Windows’un ihtiyaçlarını ortadan kaldırmaz. Pay bırakın. Varsayımsal, üretim dışı SQL01 laboratuvarındaki 8 GB RAM için max server memory değerini 4096 MB ile başlatın. Bu değer ölçümle değiştirilebilir; SQL Server sürecinin bütün bellek tahsislerine mutlak sınır koymaz ve kalan belleğin tamamını Windows’a ayırmayı garanti etmez.
Microsoft Learn’ün SQL Server 2022 donanım gereksinimleri, Express dışındaki sürümler için en az 4 GB RAM önerir. Bu donanım önerisi, motorun bellek ayarı değildir. Microsoft’un sürüm açıklamasına göre SQL Server 2022 Developer yalnızca geliştirme ve test içindir; üretimde uygun lisans ayrıca değerlendirilmelidir.
SSMS 20.2 üzerinden SQL01 üzerindeki varsayılan MSSQLSERVER örneğine yetkili bağlantıyla aşağıdaki komutları gönderin. İlk bölüm bellek ayarını değiştirir; sorgular etkin değeri, varsayılan yolları ve mevcut dosyaları gösterir.
USE master;
GO
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'max server memory (MB)', 4096;
RECONFIGURE;
GO
SELECT name, value, value_in_use
FROM sys.configurations
WHERE name = 'max server memory (MB)';
SELECT
SERVERPROPERTY('InstanceDefaultDataPath') AS default_data_path,
SERVERPROPERTY('InstanceDefaultLogPath') AS default_log_path;
SELECT
DB_NAME(database_id) AS database_name,
name AS logical_name,
type_desc,
physical_name,
size / 128.0 AS size_mb,
is_percent_growth,
CASE WHEN is_percent_growth = 0
THEN growth / 128.0 END AS growth_mb
FROM sys.master_files
WHERE database_id = 2 OR database_id > 4
ORDER BY database_id, file_id;
İlk sonuçta value_in_use için 4096 beklenir; bellek değişikliği yeniden başlatma gerektirmez. Varsayılan veri yolu D:\SQL\Data, günlük yolu L:\SQL\Log olmalıdır. physical_name sütununu ayrıca kontrol edin – varsayılan yolu değiştirmek mevcut dosyaları taşımaz. Yeni kurulumda kullanıcı veritabanı satırı bulunmayabilir.
tempdb dosyalarını eşit başlatın
Bu 4 vCPU laboratuvarında T:\SQL\TempDB altında 4 eşit veri dosyası ve 1 günlük dosyası ile başlayın. Örnek boyutlandırma, her dosyada 256 MB başlangıç boyutu ve sabit 128 MB büyümedir. Kapasiteyi iş yükü belirler; uygulamadan önce boş disk alanını doğrulayın.
SSMS’te tempdb özelliklerinin Files sayfasında mevcut dosyaları sayın; dört veri dosyası zaten varsa yenilerini eklemeyin. Veri dosyalarının boyutlarını ve büyüme adımlarını eşitleyin. Mevcut dosyalar daha büyükse yalnızca örneğe uymak için küçültmeyin. Kullanıcı veritabanlarında da yüzde yerine sabit MB büyümesi seçin; 128 MB evrensel bir değer değildir.
Ayar sonrasında sorguyu yeniden çalıştırın: is_percent_growth=0 ve growth_mb=128, örnekteki sabit büyümeyi gösterir. tempdb yol değişikliği hizmet yeniden başlatması gerektirir; hedef dizinde NT SERVICE\MSSQLSERVER hesabının gerekli dosya erişimini önceden doğrulayın. Ayrı sürücü harfleri fiziksel I/O yalıtımı garantisi değildir.
MAXDOP ve cost threshold for parallelism değerlerini ölçümsüz değiştirmeyin. Önce mevcut ayarları kaydedin; temsilî yük altında CPU kullanımını, beklemeleri, disk gecikmesini ve bellek baskısını izleyin. Dosyaları beklenen kullanıma göre önceden boyutlandırın; otomatik büyümeyi rutin kapasite planının yerine koymayın.
TCP 1433 erişimini TLS ve güvenlik duvarıyla sınırlandırma
Açık port, güvenli bağlantı demek değildir. TLS trafiği şifreler; güvenlik duvarı bağlantıyı kimlerin başlatabileceğini sınırlar. İkisi de gerekir. Varsayımsal, üretim dışı SQL01 laboratuvarında Windows Server 2022 üzerindeki varsayılan MSSQLSERVER örneğini yalnızca uygulama ve yönetim istemcilerine açın. Microsoft’un sürüm açıklamalarına göre SQL Server 2022 Developer, üretim kullanımına lisans vermez.
SQL Server Configuration Manager içinde SQL Server Network Configuration → Protocols for MSSQLSERVER yolundan TCP/IP protokolünü etkinleştirin. Listen All = Yes olduğunda port ayarları IPAll bölümünden alınır. Buradaki TCP Dynamic Ports alanını boşaltın, TCP Port değerini 1433 yapın. Dinamik port alanındaki 0, kapalı değil, dinamik port talebi anlamındadır. Diğer IP bölümlerindeki dinamik port değerlerini de temizleyin.
Microsoft Learn’ün bağlantı şifrelemesi yönergesini izleyerek özel CA imzalı sertifikayı, özel anahtarıyla Local Computer → Personal deposuna yükleyin. Geçerli sertifika Server Authentication kullanımını desteklemeli, SAN alanında sql01.lab.example.com bulunmalı ve Microsoft’un belirttiği anahtar sağlayıcısı gereksinimlerini karşılamalıdır. Her iki istemcide CA güven zincirini kurun; Active Directory bulunmadığından sertifika dağıtımının kendiliğinden gerçekleşmesini beklemeyin.
Manage Private Keys ekranında NT SERVICE\MSSQLSERVER hesabına özel anahtarı okuma izni verin. Configuration Manager’da protokol özelliklerinin Certificate sekmesinden sertifikayı seçip Flags → Force Encryption = Yes ayarını uygulayın. TCP ve sertifika değişiklikleri motor hizmetinin yeniden başlatılmasını gerektirir; mevcut bağlantılar kesilir.
Aşağıdaki örnek SQL01 üzerinde yönetici PowerShell oturumu içindir. example.com ve TEST-NET-1 adresleri dokümantasyon değerleridir; gerçek özel ağ değerlerinizle değiştirin.
New-NetFirewallRule -Name 'SQL01-TCP1433-Clients' `
-DisplayName 'SQL01 TCP 1433 approved clients' `
-Direction Inbound -Action Allow -Protocol TCP `
-LocalAddress 192.0.2.10 -LocalPort 1433 `
-RemoteAddress 192.0.2.20,192.0.2.30 `
-Profile Any -Enabled True |
Format-Table DisplayName, Enabled, Direction, Action
Restart-Service -Name MSSQLSERVER
Kural, uygulama adresi 192.0.2.20 ve yönetim adresi 192.0.2.30 için izin oluşturur. Beklenen tabloda Enabled=True, Direction=Inbound, Action=Allow görünür; bu çıktı TLS doğrulaması değildir. Varsayılan gelen trafik engellemesini koruyun, mevcut geniş SQL izinlerini kaldırın. Sağlayıcı güvenlik duvarında da yalnızca aynı kaynaklardan TCP 1433 erişimine izin verin; portu genel internete açmayın.
Windows 11 üzerindeki SSMS 20.2’de tcp:sql01.lab.example.com,1433 adresini, Encryption=Mandatory ve kapalı Trust server certificate seçeneğini kullanın. Uygulama bağlantısında da sertifika doğrulamasını atlamayın. Port açıkça belirtildiği için SQL Server Browser keşfine gerek kalmaz; bu laboratuvarda Browser hizmetini devre dışı bırakın ve UDP 1434 açmayın.
İpucu
Statik TCP 1433 portuyla doğrudan bağlantı kurulduğunda SQL Server Browser ve UDP 1434 erişimi gerekmez. sql01.lab.example.com ile 192.0.2.10, 192.0.2.20 ve 192.0.2.30 yalnızca dokümantasyon değerleridir; bunları gerçek özel ağ adreslerinizle değiştirin. Sertifikanın SAN alanı, istemcinin bağlandığı gerçek DNS adıyla eşleşmelidir.
SSMS bağlantısını katman katman doğrulama
SSMS hata penceresi tek başına arızanın yerini söylemez. Katmanları ayırın. Varsayımsal, üretim dışı SQL01 laboratuvarında Windows 11 yönetim istemcisinden (192.0.2.30) önce DNS çözümlemesini, ardından TCP erişimini kontrol edin. example.com ve TEST-NET-1 adresleri dokümantasyon içindir; gerçek özel ağ değerlerinizi kullanın. Microsoft Learn sürüm belgesine göre SQL Server 2022 Developer üretim kullanımına lisans vermez.
Resolve-DnsName -Name sql01.lab.example.com -Type A
Test-NetConnection -ComputerName sql01.lab.example.com -Port 1433 -InformationLevel Detailed
Beklenen DNS adresi 192.0.2.10, TCP sonucu TcpTestSucceeded : True değeridir; bunlar çalıştırılmış test çıktıları değildir. Adres farklıysa DNS kaydını ve istemcinin çözümleyicisini inceleyin. TCP başarısı yalnızca porta erişimi gösterir – SQL kimlik doğrulamasını veya sertifika geçerliliğini kanıtlamaz. Ping yanıtının gelmemesi de TCP bağlantısının başarısız olduğunu göstermez.
SSMS 20.2 ekranında hedefi tcp:sql01.lab.example.com,1433, Encryption ayarını Mandatory seçin; Trust server certificate kapalı kalsın. AD bulunmayan ortamda uzak bağlantı, isteğe bağlı karma mod dalındaki SQL hesabıyla kurulur; kimlik doğrulama türünü SQL Server Authentication seçin. Microsoft Learn şifreleme belgesinin açıkladığı üzere istemci sertifika zincirine güvenmeli, bağlantıdaki sunucu adı sertifikayla eşleşmelidir.
Aşağıdaki Microsoft.Data.SqlClient bağlantı dizgesi parola içermez. Kullanıcı adı ve parolayı güvenli sır yönetiminden ayrıca sağlayın; örnek, kimlik bilgileri olmadan bağlantı kurmaz.
Server=tcp:sql01.lab.example.com,1433;Database=master;Integrated Security=False;Encrypt=True;TrustServerCertificate=False;
- Bağlantı reddi: SQL01 üzerindeki
MSSQLSERVERhizmetini, TCP/IP etkinliğini ve TCP 1433 dinleyicisini kontrol edin. - Zaman aşımı: Yönlendirmeyi, VPS ağ kurallarını ve Windows Firewall üzerinde
192.0.2.30kaynaklı TCP 1433 iznini inceleyin. - Sertifika güven hatası: Güven zincirini, geçerlilik tarihlerini ve FQDN eşleşmesini düzeltin; doğrulamayı kapatmayın.
- 18456: Karma modu, SQL hesabının durumunu, parolasını ve hedef veritabanına erişimini inceleyin. Ayrıntılı nedeni ve durum kodunu SQL ERRORLOG üzerinden okuyun.
Aşağıdaki sorgular mevcut SQL ERRORLOG dosyasını ve bağlı oturumun şifreleme durumunu gösterir. SQL Server 2022 üzerinde gereken yetkiler sırasıyla VIEW ANY ERROR LOG ve VIEW SERVER PERFORMANCE STATE kapsamındadır; uygulama hesabına teşhis amacıyla geniş yetki vermeyin.
EXEC master.sys.sp_readerrorlog 0, 1;
SELECT session_id, net_transport, encrypt_option, auth_scheme
FROM sys.dm_exec_connections
WHERE session_id = @@SPID;
Uzak bağlantı kurulamıyorsa günlüğü SQL01 üzerindeki yetkili yerel Windows hesabıyla inceleyin. Hedef uzak oturumda net_transport = TCP ve encrypt_option = TRUE beklenir; şifreleme değeri tek başına sertifika doğrulamasının yapıldığını kanıtlamaz. Yerel oturum uzak bağlantının yerine geçmez: düzeltmeden sonra sorguyu yönetim istemcisindeki SSMS bağlantısında çalıştırın.
İlk yedek ancak geri yükleme provasıyla tamamlanır
Yedek dosyası oluştu. İş bitmedi. SQL01 üzerindeki varsayımsal, üretim dışı SQL Server 2022 Developer laboratuvarında AppDb için kabul ölçütü, ayrı veritabanına geri yükleme ve veri kontrolüdür. Aşağıdaki komutlar uygulanmış test kaydı değildir. Microsoft Learn’ün sürüm açıklamalarına göre Developer üretim kullanımına lisans vermez; üretimde uygun SQL Server lisansını ayrıca değerlendirin.
Microsoft Learn’ün yedekleme belgelerinde açıklandığı üzere, FULL kurtarma modeline geçişten sonra log yedekleme zincirini başlatmak için veri yedeği alınır. İlk tam yedek bunu sağlar. Varsayımsal laboratuvar zamanlaması 24 saatte bir tam, 15 dakikada bir transaction log yedeğidir. Gerçek sıklığı kabul edilebilir veri kaybına göre belirleyin. Tam yedek, log yedeğinin yerine geçmez; log yedekleri alınmazsa günlük dosyası büyüyebilir. Başka etkenler de günlük alanının yeniden kullanımını engelleyebilir.
Motor hesabı NT SERVICE\MSSQLSERVER için B:\SQL\Backup üzerinde yedek oluşturma ve okuma, hedef veri ve günlük dizinlerinde dosya oluşturma izinlerini doğrulayın. Herkese tam yetki vermeyin. Örnek, mevcut AppDb veritabanında yalnızca bir veri ve bir günlük dosyası bulunmasını gerektirir; mantıksal adları katalogdan alır. Hedef dosyalar önceden bulunmamalıdır. Değişkenlerin kapsamını korumak için bloğu tek seferde çalıştırın.
USE master;
IF DB_ID(N'AppDb_RestoreTest') IS NOT NULL
THROW 50000, N'AppDb_RestoreTest zaten var; işlem durduruldu.', 1;
IF (SELECT COUNT(*) FROM sys.master_files
WHERE database_id = DB_ID(N'AppDb')) <> 2
THROW 50001, N'Bu örnek yalnızca iki dosyalı AppDb içindir.', 1;
DECLARE @dataLogical sysname, @logLogical sysname;
SELECT @dataLogical = name
FROM sys.master_files
WHERE database_id = DB_ID(N'AppDb') AND type = 0;
SELECT @logLogical = name
FROM sys.master_files
WHERE database_id = DB_ID(N'AppDb') AND type = 1;
IF @dataLogical IS NULL OR @logLogical IS NULL
THROW 50002, N'Bir veri ve bir günlük dosyası gerekli.', 1;
ALTER DATABASE [AppDb] SET RECOVERY FULL;
DECLARE @id nvarchar(36) = CONVERT(nvarchar(36), NEWID());
DECLARE @full nvarchar(260) =
N'B:\SQL\Backup\AppDb_' + @id + N'_full.bak';
DECLARE @log nvarchar(260) =
N'B:\SQL\Backup\AppDb_' + @id + N'_log.trn';
BACKUP DATABASE [AppDb] TO DISK = @full
WITH CHECKSUM, STATS = 10;
BACKUP LOG [AppDb] TO DISK = @log
WITH CHECKSUM, STATS = 10;
SELECT @full AS FullBackupPath, @log AS LogBackupPath;
RESTORE VERIFYONLY FROM DISK = @full WITH CHECKSUM;
RESTORE VERIFYONLY FROM DISK = @log WITH CHECKSUM;
RESTORE FILELISTONLY FROM DISK = @full;
RESTORE DATABASE [AppDb_RestoreTest]
FROM DISK = @full
WITH MOVE @dataLogical TO N'D:\SQL\Data\AppDb_RestoreTest.mdf',
MOVE @logLogical TO N'L:\SQL\Log\AppDb_RestoreTest_log.ldf',
NORECOVERY, CHECKSUM, STATS = 10;
RESTORE LOG [AppDb_RestoreTest]
FROM DISK = @log
WITH RECOVERY, CHECKSUM, STATS = 10;
DBCC CHECKDB (N'AppDb_RestoreTest') WITH NO_INFOMSGS;
SELECT name, state_desc
FROM sys.databases
WHERE name = N'AppDb_RestoreTest';
Benzersiz adlar mevcut yedeklerin üzerine yazılmasını önler. FILELISTONLY dosya listesini gösterir; MOVE hedef yolları değiştirir. Tam yedek NORECOVERY ile bekletilir, log yedeği uygulanınca RECOVERY veritabanını açar. Beklenen durum ONLINE, CHECKDB çıktısında ise tutarlılık hatası bulunmamasıdır. Microsoft Learn’ün belirttiği gibi RESTORE VERIFYONLY gerçek geri yüklemenin yerine geçmez. CHECKSUM da uygulama verisinin doğruluğunu kanıtlamaz; kritik tabloları ve uygulama okumalarını ayrıca doğrulayın.
SQL Server Agent hizmetinin otomatik başlamasını ayarlayın. Tam ve log yedekleri için ayrı zamanlanmış görevler oluşturun; prova komutlarını bu görevlere eklemeyin. Başarısızlıklarda Database Mail üzerinden operatör bildirimi yapılandırıp bildirim ulaşmasını doğrulayın. Agent’ın durmasını ve son başarılı yedeğin gecikmesini bağımsız izleyin. Örnekteki anlık log yedeği zamanlama oluşturmaz.
Yerel B: sunucu kaybına karşı korumaz. Windows Server Yedekleme Nasıl Yapılır? içeriğindeki sunucu düzeyi planı SQL yedekleriyle birlikte değerlendirin. Son operasyon adımı, erişimi sınırlandırılmış sunucu dışı kopya oluşturmak ve bu kopyadan zamanlanmış geri dönüş provası yapmaktır.
Örnek
Varsayımsal AppDb planında 24 saatte bir tam, 15 dakikada bir transaction log yedeği alınır; bu aralıklar her iş yükü için hazır reçete değildir. RESTORE VERIFYONLY, AppDb_RestoreTest veritabanına gerçek geri yüklemenin yerine geçmez. B:\SQL\Backup üzerindeki kopyaları sunucu dışına da taşıyın; ayrı sürücü harfi, sunucu kaybına karşı koruma sağlamaz.
Uygulamayı Bağlamadan Önce Kontrol Edin
- Windows Server desteğini, lisansı, bekleyen yeniden başlatmaları, sistem yedeğini ve sağlayıcı konsoluna erişimi doğrulayın.
- D:\SQL\Data, L:\SQL\Log, T:\SQL\TempDB ve B:\SQL\Backup NTFS dizinlerini hazırlayın; hizmet hesabının gerekli izinlerini kontrol edin.
- Resmî SQL Server 2022 medyasını kullanın; onaylanmış CU paketinin güncel sürümünü doğrulayıp kurulum sonrasında SERVERPROPERTY ile tam derlemeyi kaydedin.
- Yetkili yerel Windows hesabını SQL yöneticisi olarak ekleyin; uygulama hesabından sa, sysadmin ve db_owner kullanımını çıkarın.
- 4096 MB bellek başlangıç ayarını, sabit MB dosya büyümelerini ve eşit boyutlu dört tempdb veri dosyasını iş yükü ölçümleriyle değerlendirin.
- TCP 1433 erişimini iki güvenlik duvarı katmanında sınırlandırın; DNS, Test-NetConnection ve SSMS sertifika doğrulamasını ayrı ayrı kontrol edin.
- FULL kurtarma modelinde ilk tam yedeği ve log yedekleme görevlerini oluşturun; hata bildirimlerini, sunucu dışı kopyayı ve ayrı veritabanına geri yüklemeyi doğrulayın.
Uygulama bağlantısını açmadan önce AppDb yedeğini ayrı AppDb_RestoreTest veritabanına geri yükleyin. Geri dönüş süresini kaydedin ve bu sürenin hizmet hedefinize uyduğunu doğrulayın.
Sık Sorulan Sorular
SQL Server 2022 Developer, Windows VPS üzerinde ücretsiz kullanılabilir mi?
SQL Server 2022 Developer, geliştirme ve test amacıyla ücretsiz kullanılabilir; üretim veritabanını çalıştırma hakkı vermez. Windows VPS kullanmanız bu lisans koşulunu değiştirmez. Üretim için uygun ticari lisansı veya kaynak ve özellik sınırları uygulamanıza uyan Express sürümünü değerlendirin. Windows Server lisansını da SQL Server lisansından ayrı kontrol edin.
SQL Server kurulumu için 4 vCPU ve 8 GB RAM yeterli mi?
4 vCPU ve 8 GB RAM, bu üretim dışı laboratuvarın başlangıç kapasitesidir; uygulamanız için performans garantisi değildir. Veri hacmi, eşzamanlı sorgular ve disk gecikmesi ihtiyacı değiştirir. Örnekte max server memory 4096 MB ile başlatılır, ancak bu ayar SQL Server sürecinin tüm bellek tüketimine mutlak sınır koymaz. Ölçüm yaparak kapasiteyi güncelleyin.
Windows kimlik doğrulaması ile karma mod arasındaki fark nedir?
Windows kimlik doğrulaması Windows hesaplarını kullanır; karma mod buna SQL Server kullanıcı adı ve parolasıyla oturum açmayı ekler. Active Directory bulunmayan örnekte, uzaktaki Windows hesabı kendiliğinden güvenilir kabul edilmez. SQL kimlik doğrulaması gerekiyorsa karma modu etkinleştirip motor hizmetini yeniden başlatın. Uygulama için ayrı hesap ve dar kapsamlı izinler tanımlayın; sa kullanmayın.
SQL Server'a uzaktan bağlanmak için hangi portlar açılmalı?
Bu örnekte Database Engine için statik TCP 1433 kullanılır. Windows Firewall ve sağlayıcı güvenlik duvarında yalnızca uygulama ile yönetim istemcisinin gerçek özel IP adreslerine izin verin. Portu genel internete açmayın. İstemci hedefi sunucu adı ve portla belirttiğinde SQL Server Browser üzerinden keşif gerekmez; bu bağlantı yolu için UDP 1434 açmanız gerekmez.
SSMS bağlantısında sertifika hatası veya 18456 hatası nasıl ayrılır?
Önce DNS çözümlemesini, ardından Test-NetConnection ile TCP 1433 erişimini doğrulayın. SSMS 20.2 üzerinde Encryption=Mandatory seçin ve Trust server certificate seçeneğini kapalı tutun. Sertifika hatasında güven zincirini, geçerlilik süresini ve SAN adını kontrol edin. 18456 ise oturum açma hatasıdır; ayrıntılı nedeni SQL ERRORLOG içindeki durum koduyla inceleyin. Sertifika denetimini kapatmak kalıcı çözüm değildir.
İlk tam yedekten sonra transaction log yedeği almak gerekir mi?
FULL kurtarma modelinde ilk tam yedekten sonra düzenli transaction log yedekleri planlanmalıdır; yalnızca tam yedek almak günlük dosyasının yeniden kullanım ihtiyacını karşılamaz. Varsayımsal laboratuvarda tam yedek aralığı 24 saat, log yedeği aralığı 15 dakikadır. Aralıkları kabul edilebilir veri kaybına göre belirleyin. Sunucu dışı kopya tutun ve RESTORE VERIFYONLY yerine gerçek geri yükleme provası da yapın.
Kaynaklar
- Microsoft Learn – SQL Server 2022 donanım ve yazılım gereksinimleri — learn.microsoft.com
- Microsoft Learn – SQL Server 2022 sürümleri ve desteklenen özellikler — learn.microsoft.com
- Microsoft Learn – SQL Server bağlantı şifrelemesini yapılandırma — learn.microsoft.com
- Microsoft Learn – SQL Server veritabanlarını yedekleme ve geri yükleme — learn.microsoft.com