23 Mayıs 2018 Çarşamba

CredSSP Şifreleme Oracle Hatası (Regedit Çözümlü)

Merhabalar;
Windows 10 ‘un 9 Mayıs tarihli güncellemesinden sonra özellikle Windows 2012 işletim sistemine sahip sunucularda uzak masaüstü erişimi yaparken bir hata penceresi karşımıza çıkıyor. Hata da CredSSP şifreleme Oracle düzeltme olabilir diye bir ibare çıkıyor. veya  "CredSSP Encryption Oracle Remediation" ibaresi yer almakta. çözüm ise basit 
aşağıdaki kodları bir notepad'e yapıştırın ve ismini "CredSSP.REG" olarak kaydedin ve yönetici olarak çalıştırın. işte çözüm bu kadar...

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters]
"AllowEncryptionOracle"=dword:00000002

7 Mayıs 2018 Pazartesi

SQL Server Locking Hints

SQL Server Locking Hints (Sql'de Tablo Kilitleme)

Merhabalar,
Sql server da yaptığımız bazı işlemler sırasında kullandığımız tabloları kilitlememiz gerekebilir. Yada kilitli bir tablodan kilidin açılmasını beklemeden sorgu çekmek isteyebiliriz. Bu gibi durumlar için kullanabileceğimiz sql server locking hint leri aşağıdaki gibidir;
HOLDLOCK = Kilitlenme işleminin transaction bitimine kadar sürmesini sağlar. Tablock gibi bazı ifadeler sadece statement bazında kilitleme yapmaktadır. Bunların transaction bazında kilitleme yapması isteniyorsa HOLDLOCK ifadesiyle beraber kullanılması gerekmektedir. HOLDLOCK, SERIALIZABLE ile aynı işi yapmaktadır.
NOLOCK = Kilitli bir tablodan kilidin açılmasını beklemeden kayıt çekmeye yarar. Kirli kayıt (dirty read) alınması mümkündür. Kullanımı Select * from TableName WITH (NOLOCK) şeklindedir. NOLOCK, READUNCOMMITTED ile aynı işi yapmaktadır.
PAGELOCK =  Sayfa bazında kilitleme yapmak için kullanılır.
READCOMMITTED = Kilitli tabloları kullanabilmek için kilidinin açılmasını bekler. SQL Server default udur.
READUNCOMMITTED = NoLock ile aynı işi yapar.
ROWLOCK = Kayıt bazında kilitleme yapmak için kullanılır.
SERIALIZABLE = HoldLock ile aynı işi yapar.
TABLOCK = Tablock ile lock edilen tablolarda read işlemi yapılabilirken insert ve update işlemi yapılamamaktadır. Ayrıca transaction boyutunda çalışabilmesi için holdlock ifadesi ile beraber kullanılması gerekmektedir.
BEGIN TRAN
SELECT * FROM ATBL WITH (TABLOCK, HOLDLOCK) --Update, Insert Kilitler
WAITFOR DELAY '00:00:15'
COMMIT TRAN

TABLOCKX = Tablockx in tablock dan farkı read işleminide izin vermemesidir. Ayrıca transaction bazında çalışabilmekte dolayısıyla ekstradan holdlock ifadesine gerek kalmamaktadır.
BEGIN TRAN
SELECT * FROM ATBL WITH (TABLOCKX, HOLDLOCK)  --Select,Update, Insert Kilitler
WAITFOR DELAY '00:00:05'
COMMIT TRAN

UPDLOCK = Updlock ile locklanmış tablo larda select ve insert işlemleri yapılabilirken, update işlemi yapılamamaktadır. Statement ve transaction bazında çalışır. Transaction bazında çalışması için ayrıca HOLDLOCK ifadesine gerek yoktur.
BEGIN TRAN
SELECT * FROM ATBL WITH (UPDLOCK)  --Update Kilitler
WAITFOR DELAY '00:00:15'
COMMIT TRAN

XLOCK = Tablockx gibidir. Farkı statement da ki bütün işlemlerin bitmesini bekler. En kapsamlı lock işlemidir.
Sistemde bulunan kilitli tablolar EXEC sp_lock komutuyla görüntülenebilir.