SQL Server

Microsoft SQL Server hakkında yazılar

DDM(Dynamic Data Masking)

T-SQL 3 gün önce

Veri yönetiminde karşılaşılan zorluklardan biri, hassas bilgilerin korunmasını sağlarken bu bilgilerin kullanımını sürdürmektir. Dynamic Data Masking (DDM), bu dengenin sağlanmasına yardımcı olarak, veri tabanlarındaki hassas verileri gizleyip, yetkili kullanıcıların yalnızca gerekli bilgileri görmesini mümkün kılar. Dynamic Data Masking’de default, email, ve partial olmak üzere üç adet parametre bulunmaktadır. default: Bu yöntem ile yapacağınız veri maskeleme işlemlerinde kolonun veri tipine göre maskeleme işlemi yapar. Metinsel kolonlarda veri maskelemeyi ‘xxx’ değeri ile yapar. Sayısal kolonlarda veri maskelemeyi tek byte’lık 0 değeri ile yapar. Tarihsel kolonlarda veri maskelemeyi ‘01.01.1700 00:00:00.0000000’ değeri ile yapar. email: E-Mail maskeleme işlemininde bu yöntemi kullanırız. Sadece ilk harfini alarak geri kalanını “XXX@XXXX.com” şeklinde şifreler. Örneğin;FXXX@XXXX.com partial: Veriyi istediğiniz formatta maskeleyebileceğiniz fonksiyondur.Kullanımına Örnek vermek gerekirse; partial(2,A,2) fonksiyonuyla maskelenmiş bir kolonda verilerin baştan iki karakteri ve sondan iki karakterini gösterecek kalan karakterlerini A harfiyle maskeleyecektir. random:Veriyi belirlemiş olduğunuz değerler arasında rastgele değerlerle maskeler. Numaric  alanlarda kullanılır. Örnek vermek gerekirse; random(10,20) fonksiyonuyla kolona gelen […]

ULAŞILAMAYAN DİSKTEKİ DATABASE FİLE KURTARMA

SQL Server 1 hafta önce

Bu makalede Sql Server ’da diskine ulaşılamayan bir veri tabanının files taşıma adımlarından bahsedeceğim. Diyelim ki database files konumlandırmış olduğumuz disklerden bir tanesi offline durumuna geçtiğini gördünüz ve diskin durumu hakkında net bilgi edinememektesiniz. Diskin içerisinde bulunan verileri kurtarmak istiyorsunuz ama disk offline durumda olduğundan dolayı içine erişim sağlayamıyorsunuz bu gibi durumda benim kullanmış olduğum bir yöntemi sizinle paylaşmak istiyorum, Robocopy. Şimdi bir örnek üzerinden adım adım neler yapabileceğimize bakalım. Öncelikle database files konumlandırını tespit ediyoruz; SELECT name as FileLogicalName, physical_name as FileLocation FROM sys.master_files WHERE database_id =DB_ID(N’MuratTest’) Görsel – 1   Database files konumlandırını tespit ettikten sonra offline durumuna getirerek ilgili files konumlarını değiştireceğiz. 1) Öncelikle database offline state çekiyoruz. use master GO ALTER DATABASE [MuratTest] SET OFFLINE WITH ROLLBACK IMMEDIATE 2) Database file taşıma işlemlerini gerçekleştiriyoruz, Command Prompt Rus aas administrator ile çalıştırılır; robocopy D:\Data3\Data D:\Data4\Data /mir /mt:60 /r:2 /w:5 /np /ts /bytes /xd >>D:\Data3\log1.txt Görsel – 2 […]

SQL Server Table Partition Switch

SQL Server 2 hafta önce

Modern veri merkezlerinde ve büyük ölçekli bilişim sistemlerinde, sistemlerin esnekliği ve verimliliği üzerine yapılan çalışmalar, partition switch’lerin (bölünme anahtarları) kritik rolünü giderek daha belirgin hale getirmektedir. Bu yazımızda sizlere Partition Switch işleminden bahsedeceğim. Partition Switch öncesi Partition işleminin nasıl yapıldığı hakkında bilgi almak için Duran BÜYÜKÖZTÜRK hocamın SQL Server Table Partition Oluşturmak makalesine göz atabilirsiniz. Öncelikle yapısal olarak birebir eş iki tablo oluşturuyoruz (Alan sayıları ve alanların Data tipleri eşit ve her ikisi de aynı Partition schema üzerinden partiton yapılmış). Resimde görüldüğü üzere içerisinde veri bulunan tablomuz ‘Satislar’, İçerisine switch işlemi ile verileri atacağımız tablomuz ‘Satislar2’. Bu iki tablo yapısal olarak birbirleriyle eş tablolardır ve aynı partition schema üzerine partition yapılmıştır. SELECT p.partition_number,p.partition_id, fg.name AS [filegroup],r.boundary_id, CONVERT(DATE,r.value) AS BoundaryValue, p.rows FROM sys.tables AS t INNER JOIN sys.indexes AS i ON t.object_id = i.object_id INNER JOIN sys.partitions AS p ON i.object_id = p.object_id AND i.index_id = p.index_id INNER JOIN sys.allocation_units a […]

SQL Server DMV ve DMF – 5

SQL Server 3 hafta önce

Bu yazıda SQL Server’da DMV ve DMF serisinin 4.süne devam edeceğiz. Bir önceki yazımızda sys.dm_os_sys_info DMV’si altında neleri göreceğimizi ve sciprtler ile baktığımızda neleri okuyabileceğimizi görmüştük. Özellikle CPU kaynaklarının SQL server tarafından nasıl kullanıldığı öğrenmiştik. Bu yazıda sys.dm_os_sys_info ve memory ile ilişkili DMV’ler yardımı ile Memory kaynaklarının nasıl kullanıldığı ve burada nelerin dikkat edilmesi hususunda bilgileri öğrenmiş olacağız. Bildiğiniz gibi kaynaklara ilişkin bilgilere sys.dm_os_sys_info üzerinden erişebiliyorduk. Buffer Pool kullanım durumunu kontrol etmek istediğimde;   SELECT (physical_memory_kb)/1024 AS physical_memory_MB, (committed_kb)/1024.0 as BPool_Committed_MB, (committed_target_kb)/1024.0 as BPool_Commit_Tgt_MB, (visible_target_kb)/1024.0 as BPool_Visible_MB FROM  sys.dm_os_sys_info; Görsel – 1 physical_memory_MB: Fiziksel olarak server üzerindeki memory miktarı. visible_target_KB: Buffer Pool içerisinde yer alan 8KB’lık Buffer’ların sayısını gösterir. Bu değerin çok düşük olması Memory hataları veya memory dump alınmasına neden olacaktır. committed_kb: SQL Server tarafından kullanılan Actual Memory değeridir. committed_target_kb: SQL Server tarafından tüketilmek için denenen memory miktarıdır. committed_target_kb > committed_kb durumunda; SQL Server Mmemory Manager ek memory ihtiyacı […]

FAILOVER CLUSTER INSTANCE (FCI) FAILOVER

SQL Server 1 ay önce

Bu makalede Windows Failover Cluster Instance (WFCI) kurulu olan sunucular arasında failover işlem adımlarından bahsedeceğim. SQL Server Failover Cluster Instance (WFCI) ortamımızda sunucular arasında failover işlemini gerçekleştirmeden önce dikkat edilmesi gereken adımlar: Ortamın hızlı bir şekilde failover işlemini gerçekleştirebilmesi için veri tabanlarının .ldf file ‘larının shrink edilmesi ve veri tabanlarına checkpoint atılması gerekmektedir. İlgili clusterda bulunan sunucuların versiyon ve konfigürasyon ayarlarının eşlenik olması gerekmektedir. Failover Cluster Instance ortak disk yedekli sunucu mantığı ile çalıştığı için uygulama veri tabanları ve sistem veri tabanlarını barındıran disklerin tüm sunucularda zone işlemlerinin gerçekleştirilmiş olması gerekmektedir. Yetkili kullanıcı olan service kullanıcılarının computer manager ‘dan sunucu üzerinde gerekli yetkilendirmelerinin yapılması. SQL Server Failover Cluster Instance (WFCI) ortamımızda sunucular arasında failover işlemi için iki yöntem bulunmaktadır bunlar; 1) Failover Cluster Manager > Roles > ilgili role sağ tık > Move > Select Node > failover edilmek istenilen node seçilir ve failover işlemi gerçekleşir. Ancak burada bu yönetimin […]

FAILOVER CLUSTER INSTANCE (WFCI) SERVER ÇIKARMA

SQL Server 1 ay önce

Bu makalede Windows Failover Cluster Instance (WFCI) kurulu olan sunucu ortamlarından belirlenen bir sunucunun çıkarılma adımlarından bahsedeceğim. Görsel – 1 SQL Server Failover Cluster Instance (WFCI) ortamında sunucuda service kontrol dışında bir down olma durumu ile karşılaşıldığında yukarıda Görsel – 1 ‘de görüntüleyebileceğiniz şekilde (Failover Cluster Manager > Roles > Resources > Policies ) bu durumda service nasıl bir aksiyon alacağına karar verme konumundayız.   Görsel – 2   Peki şimdi SQL Server Failover Cluster Instance (WFCI) ortamında sunucuda service kontrol dışında bir down olma durumu ile karşılaşıldığında yukarıda Görsel – 2 ‘de görüntüleyebileceğiniz şekilde (Failover Cluster Manager > Roles > ilgili role sağ tık > properties > Failover) ne kadar süre ile kaç kez tekrar failover olmaya çalışacağını görüntüleyebilirsiniz.   Görsel – 3 Şimdi sunucumuzu clusterdan çıkaracağız, “Failover Cluster Manager > Nodes > ilgili node sağ tık > Stop Cluster Service > ilgili node sağ tık > Evict” adımlarını […]

FAILOVER CLUSTER INSTANCE (WFCI) YENİ SERVER EKLEME

SQL Server 2 ay önce

Bu makalede Windows Failover Cluster Instance ortamına yeni node ekleme adımları, Failover Cluster Instance SQL Service ve Management kurulum adımlarından bahsedeceğim. CLUSTER KURULUMU Önce Server Manager üzerinden Failover Cluster Manager bileşenini kuruyoruz Görsel – 1 “Add roles and features” Seçerek başlıyoruz. Görsel – 2 “Next” Görsel – 3 “Role-based or feature-based installation” Seçerek ilerliyoruz. Görsel – 4 Kurulumunu yapmak istediğimiz sunucu seçeneği geliyor, “Select a server from the server pool” seçerek ilerliyoruz. Görsel – 5 “File and Storage Services” Seçerek ilerliyoruz. Görsel – 6 “Failover Clustering” Seçtiğimizde karşımıza gelen ekranda “Add Features” seçerek ilerliyoruz. Görsel – 7 Yukarıda bulunan restart seçeneğini genelde seçmiyoruz çünkü eğer gerekiyorsa kurulumu yapan bizim onayımız ile restarta gitmesini istediğimiz için, Install seçeneği ile devam ediyoruz. Görsel – 8 Görsel – 9 Kurulum işlemleri tamamlanıyor ve sunucunun restarta gönderilmesi gerektiği uyarısı veriyor, şimdi sunucumuzu kontrolümüzde restarta gönderiyoruz. Sunucumuz restarta gitti ve geldi şimdi kurulum adımlarına Node […]

MSSQL Server ColumnStore Index

SQL Server 2 ay önce

SQL Server’da Columnstore Index  Arşivlenmiş veriler, büyük veri ambarları ve analitik sorgular için performansı artıran bir index türüdür. Geleneksel satır tabanlı Index yerine, verileri sütunlar halinde depolar ve sorgu performansını önemli ölçüde artırır. MSSQL Server ‘da ColumnStore İndex ‘in Avantajları, Kullanım alanları , Sürümlere göre farkları , Performansa etkisi ve en önemlisi Data boyutunuzdaki Compress(Sıkıştırma) özelliğini nasıl kullandığını anlatmaya çalışacağım. İlk olarak SQL Server 2012‘de tanıtılan Columnstore Index, sütun bazında depolanan İndex’in oluşturulmasına olanak tanıyan ve Memory kullanan bir yapıdır. Sorgu performansını  mükemmel seviyeye taşıyabilecek bir index türüdür. Bir columnstore index, verileri farklı bir index Pagelerde depolar ve verileri büyük ölçüde sıkıştırır. Ayrıca, işleme hızını büyük ölçüde artıran ve CPU kullanımını azaltan yeni bir Batch Mode Processing modu sunar. Yeni depolama türü, sıkıştırılmış veriler ve batch mode processing işleminin birleşimi, SQL Server’ın daha az veri okumasını ve sorgu performansını büyük ölçüde iyileştirmesini sağlar. Peki bu yeni index geleneksel index’den nasıl […]

MSSQL Server Tablodaki Kolonun Yerini Değiştirme

SQL Server 2 ay önce

SQL Server’da tablo oluştururken kolonu yanlış konumlandırdım diyenlerdenseniz doğru yazıyı okuyorsunuz. SQL Server’da bir tablo oluştururken kolonların sırasını yanlış konumlandırabilirsiniz. Ancak, kolonların sırasını değiştirmek oldukça kolaydır ve aşağıdaki örnek olarak yaptığım adımları izleyerek bunu yapabilirsiniz. Test Veritabanımızın altında bulunan “kisiler” tablosunu oluştururken sırasıyla “ad” ve “soyad” kolonlarını oluşturmak isterken önce “soyad” ardından “ad” kolonunu yazdığınızı varsayalım. Tabloyu silip tekrar oluşturmak veya kolon isimlerini değiştirmekte bir yöntemdir ancak burada içerisine çok sayıda veri yazılan bir tablo olduğunu varsayarak başka bir yöntem kullanacağım. Değişiklik yapmak istediğimiz tabloda “design” kısmına giriyoruz. Görüldüğü üzere “soyad” kolonu önce “ad” kolonu sonra yazılmış. Bunların yerini değiştirmek için “ad” veya “soyad” yazan yerlerin hemen sol tarafında bulunan ok işaretinden istediğimiz yere sürükleyip bırakıyoruz. Yapmamız gereken tek işlem bu aslında.   Görüldüğü üzere kolonların yerleri değişti. Bu noktada yapılan işlemi kaydetmemiz lazım. Değişiklikleri kaydettiğimizde karşımıza aşağıdaki hata gelmektedir. Hata Mesajı: Değişikliklerin kaydedilmesine izin verilmez. Yaptığınız değişiklik aşağıdaki tablonun […]

SQL SERVER FULL-TEXT SEARCH

SQL Server 2 ay önce

Bu makalede Sql Server ’da metin tabanlı veriler üzerinde etkili arama performansı sağlayan Full-Text Search ’ten bahsedeceğim. Full-Text Search işlemlerini yapabilmesi için Full-Text index kolona sahip olmamız gerekmektedir. Full-Text indexler, metin içeriği barındıran ve belirli veri türlerine sahip kolonlarda oluşturulabilir. Bu veri türleri “Char, Varchar, NChar, NVarchar, Text, NText, XML, Varbinary, Image ” yer alır. Full-Text index oluşturulabilmesi için ilgili tabloda tek kolonlu bir unique bir index bulunması zorunlu bir koşuldur. Bu kısım biraz daha detaylandıralım, örnek olarak mevcut ortamda bulunan tablonuzda “Id” ve “Tarih” kolonları ile partition yapınız var bu yapıda mevcut partition index unique durumda bulunuyor ama yine de full-text index oluşturamıyorsunuz çünkü tek kolonlu bir unique index gerekmektedir. Benim test ettiğim yöntemlerden birisi de “Id” ve “Tarih” kolonları ile computed column oluşturarak bu kolona unique index oluşturmaya çalışmak oldu bu yöntem ile görece unique bir kolon oluşturarak bu kolona index oluşturulabilir ancak bu computed column oluştururken tablonuza […]