Masters Of SQL

SQL Server ile ilgili bilgiler, hayata dair paylaşımlar ve birazda eğlence tabii...
Deadlock’sız, Blocking’siz, Contention’sız günler diliyoruz :)
Sysadmin sizinle olsun

SQL Server sp_change_users_login :)

Selamlar MastersOfSql okucuları :) 

Sizlere faydalı olacağını düşündüğümüz bir yazı ile karşınızdayız. Her DBA’nin karşılaşmasının kaçınılmaz olduğu, karşılaşmamışsa da yakın bir zamanda karşılaşabileceği bir sorun olan Database User SID ile Server Login SID’nin uyuşmamasından kaynaklanan hatanın çözümünün, anlatacağımız sp ile ne kadar kolay olduğunu sizlere de göstermiş olacağız. 

Başka bir sunucuda aldığımız backup’ı kendi sunucumuza restore ettiğimizde SID’lerin uyuşmaması sorunu ile karşılaşırız. Sp_change_users_login sp si ile bu durumu düzeltebiliriz. 

Nasıl yaparız? 

İsterseniz sizin de deneyebilmeniz için adım adım başlayalım. 

İlk olarak, bu durumla karşılaşacağımız case’i oluşturalım. Bunun için birkaç yol mevcut. Ben size birkaç tane seçenek sunacağım. Siz kolayınıza geleni seçersiniz :) 
  • Başka bir sunucudan aldığımız backup’ı kendi sunucumuza restore edebiliriz. Başka sunucudan geldiği için, restore ettiğimiz database’de bu sunucuda login’i olmayan user’lar mevcut olur. Halk arasında Orphan User dediğimiz olay :) 
  • Benim bir tane SQL’im var. Nereden bulayım farklı 2 tane instance’ı derseniz eğer; aynı sunucuda database’in backup’ını alarak, loginleri silip restore edebilirsiniz. 
  • Backup restore’u anlatmadınız ama biz bu konuyu görmedik henüz(:P) derseniz; ona da bir yöntemimiz mevcut :D (Kendimi şu an 1 değil 2 değil 3 değil tam tamına 5 kavanoz bal 100 TL reklamlarında gibi hissettim :)) Sunucunuzda loginler oluşturarak, bunlara database’de bazı haklar verin. Bu şekilde o database’de user’ı oluşturmuş olacaksınız. Sonrasında loginleri silerseniz, database’in içindeki user’ları silmiş olmazsınız, bu sebeple de loginleri olmayan user’lar elde etmiş olursunuz. Bir login’i bile olmadığı için, öksüz kalmış olurlar. Orphan user dediğimiz olayın oluştuğunu görürüz. 
Gerekli yeter ve şartları sağladıysak, konu başlığımız olan sp_change_users_login ile neler yapabileceğimize bakalım. Benim yapacağım örnekte, denek olarak kullanacağım 2 tane user’ım mevcut.   

DARTHVADER’ı kırmızı kutu içine alırken PADAWAN’ı mavi kutu içine aldım. Bunun sebebi iyi ve kötü diye ayırmak gibi görünse de öyle değil :) İkisi de GALAXY database’inin user’ları olsa da, PADAWAN’ın ne yazık ki bir Logini yok. DARTHVADER için durumlar biraz daha karışık. Onun bir Login’i var ama eskiden bildiği parolası ile sunucuya giriş yapmak istese de yapamaz, çünkü isim olarak aynı gözükse de, parola ve SID olarak bambaşka iki login aslında.

Bakınız, login kısmında sevgili PADAWAN’dan eser dahi yok :(
                                                                 





O zaman sp_change_users_login ile bu duruma bir çözüm yolu bulabiliyor muyuz bakalım :) 
Sp_change_users_login 4 parametre (@Action, @UserNamePattern, @LoginName, @Password) barındıran bir prosedürdür. Kullanımlarını örneklerle açıklayacağız. @Action parametresine 3 seçenek yazarak kullanabiliriz. Report parametresi ile kullanırsak, bize Orphan User’ları verecektir.
use GALAXY
GO
EXEC sp_change_users_login @Action='Report'
Bakınız DARTHVADER ve PADAWAN nasıl da hemen kendini belli etti. 
İlk olarak Darth Vader’dan başlayalım isterseniz. İşini hemen çözelim de sonumuz, nefesini kestiği zavallı askerler gibi olmasın :P Hiç belli olmaz, bir bakmışız configuration manager’dan servisimiz stop edilmiş, sql server’ımız uninstall olmuş olabilir :P :D 

Sysusers’dan ve syslogins’den sid’leri karşılaştırdığımızda sid’lerin aynı olmadıklarını görüyoruz.


Sid’leri eşitleyelim de DARTHVADER rahat rahat GALAXY database’ini kullanabilsin :P Bunun için, @Action parametresi yerine Update_One yazarak yapabiliriz.
exec sp_change_users_login 'Update_One','DARTHVADER','DARTHVADER'



Bakalım olmuş mu?


Sid’ler eşitlendiğine göre DARTHVADER’ın Galaxy’e erişmesindeki engel de kalkmış oldu. Gelelim, zavallı PADAWAN’a. Onun bir login’i bile yok. Ona bir login verebilir miyiz bakalım. @Action parametresindeki Auto_Fix seçeneği ile yapabiliriz.
EXEC sp_change_users_login 'Auto_Fix', 'PADAWAN', NULL, 'MasterYoda*R2D2*'



Artık Sevgili PADAWAN da Orphan User olmaktan kurtuldu :)

Geldik, bir konumuzun daha sonuna :) 

DARTHVADER Login olsa da GALAXY database’indeki hakkı data_reader :) Ne yazık ki SELECT çekmekten öteye geçemeyecek :D Şimdilik endişelenecek bir şey yok diyelim o vakit :) 

Yoda diyor ki boşverin Darth Vader’ı, Olsun Güç Sizinle;)


SQL Server 2012 SP3 çıktı

Microsoft SQL Server ekibi gecelerini gündüzlerine katmış, gelen feedbackleri incelemiş, kendi yaptıkları testleri sonuçlandırmış bizler için onlarca sorunu düzeltmiş ve SP3 ü çıkartmışlar :):) peki Bize ne kalıyor güzelce alttaki linkleri inceleyip sistemimiz için uygunsa yüklemek.

Kişisel olarak SP çıktığında çözülen soruları inceler ve çalıştığım sistemlerde bu sorunlar yoksa ilk CU çıkana kadar beklerim, sonuçta büyük bir ekip çalışıyor ve gözden kaçabilecek noktalar olabiliyor.

Download linkleri

Direk Microsoft linki Download Service Pack 3 for Microsoft® SQL Server® 2012

Detaylı anlatım için SQL Server 2012 Service Pack 3 is now Available

Tüm sürümlere bakmak için Microsoft SQL Server Version List için yeni

O zaman son notumuz aşağıda :):)

SQL İle Takılmacalar :)

Merhabalar, 

Yoğun bir haftanın daha sonuna doğru gelirken, yeni bir bulmaca ile karşınızdayız. Bulmacamızı çözen arkadaşlar info@mastersofsql.com adresine mail atabilirler.

Bulmacamızın, Word halini indirmek için buyrun tık tık : SQL_Takılmacalar_Puzzle.docx (17,94 kb) 

Sorular için yardım almak isterseniz, aşağıdaki linklerden faydalanabilirsiniz :) Şimdiden iyi eğlenceler dileriz:)


1
                                               
            2                
                          3                    
            4                                
                                           
                                           
                      6                   7
          5      
                                         
                                         
                        8
9                    
                    10                        
                                           
                                           
                                             
                                             
          11            
                                             
                                             
                                             
                                               
                                               
                                               

Soldan sağa
2. Sp_WhoIsActive’i, yaptığı işlev dışında, bir tür olarak değerlendirdiğimizde bu kategoriye girer. Cevabı adında saklı:) 

5. Lokalde bulunan veri tabanının tarihsel olarak değişimlerini azure da bulunan sql sunucuya göndererek, bu sayede hem lokal db de çalışırken hem de uzak verilere kesintisiz olarak erişmemizi sağlayan SQL Server 2016 nın gelecek olan özelliklerinden biri. Yakında gelişen bu teknoloji ile işimiz gücümüz kalmayacak galiba :P :D 

8. Sp_WhoIsActive yazarı. Saygı değer abimize sevgilerimizi yolluyoruz. 

9. Sp_WhoIsActive’i get_plan parametresi ile çalıştırıyorsak, aslında neyi görmeyi hedefliyoruzdur? İpucu da verelim, sağdan başlarız okumaya :P 

11. Kendisi kullanmayacak olsa dahi(!), bir sonraki junior DBA ler için yararlı olabilecek tecrübelerini aktarmak amacıyla yazılan, DBA’in görevlerinden biridir. Buradan MASTER olan güzel insana(YODA diyoruz biz halk arasında :P) duyrulur. Daha çok yazarak, Padawan’ına tecrübelerini aktarabilir mesela :P :D (Neyse, yiğidi öldür hakkını ver demişler, kendisi tecrübelerini aktarma konusunda number 1, ekstra teşekkürlerimi iletiyorum buradan da :) ) 

Yukarıdan aşağıya
1. Açık olması büyük güvenlik açığı barındıran sp_configure özelliği nedir? Prodda açalım da şenlik çıksın :D 

3. SQL Server 2008 de aramıza katılarak, 2012 sürümünde gelen güncellemeleri ile öğrenmek istediğimiz bazı soruların cevabını verebilen bir özellik. “Bazı sorulara” örnek verecek olursak, tablomdaki şu kaydı kim silmiş acaba? Ya da ben bu login'i oluşturduğumu hatırlamıyorum, kim yaptı peki? Aramızdaki haini bulalım :P :D 

4. SQL cümleciklerimizin WHERE kısmının, bir bakıma Audits’deki ismi. Türkçe anlamını yazmak istemiyorum, zira İngilizcesine çok benziyor :D 

6. SQL de konfigürasyon ayarlarını düzenlemek istediğimizde ilk olarak sp_configure’den neyi açmamız gerekir? 

7. DBA lerin görmek istemediği, mecbur kaldıklarında session’ı kill etmek zorunda kaldıkları olay. Sp_WhoIsActive sağolsun, bu olayı bulmada işimizi bir hayli kolaylaştırıyor. 

10. SQL Server 2016 da gelecek olan gizli kalması gereken veriler için kullanacağımız bir özellik. Aman aman kimseler görmesin! :) 

Sorular için yardımcı olabilecek yazılar :)

2,6,7,8,9 numaralı sorular için : 

http://www.mastersofsql.com/post/2015/11/23/dba-toolkit-sp-whoisactive

1 numaralı soru için : 

http://www.mastersofsql.com/post/2015/11/25/sql-server-best-practices

3,4 numaralı sorular için : 

http://www.mastersofsql.com/post/2015/11/21/nedir-bu-sql-server-audit

http://www.mastersofsql.com/post/2015/11/21/nedir-bu-sql-server-audit-bolum-2

5,10 numaralı sorular için : 

http://www.mastersofsql.com/post/2015/11/16/sql-2016-yenilikleri-ctp3

11 numaralı soru için : 

http://www.mastersofsql.com/post/2015/11/10/dba-mi-o-ne-olaki

http://www.mastersofsql.com/post/2015/11/10/dba-mi-o-ne-olaki-bolum-2