SQL Server’da partitioning, büyük veritabanı tablolarını daha yönetilebilir ve performanslı hale getirmek amacıyla kullanılan bir tekniktir. Bu teknik, tablonun verilerini fiziksel olarak değil, mantıksal olarak parçalara ayırır. Veriler, belirli bir partition function ve partition scheme kullanılarak farklı bölümlere yönlendirilir. Partitioning, özellikle büyük veri kümeleriyle çalışan veri tabanlarında sorgu performansını artırır ve veri yönetimini kolaylaştırır. Partition Function ve Partition Scheme nedir? Partition Function: Verilerin hangi kriterlere göre bölüneceğini belirler. Örneğin, bir tarih aralığına göre verileri ayırmak. Partition Scheme: Verilerin hangi filegroup’larda depolanacağını belirler. Örnek olarak Range LEFT ve Range RIGHT olmak üzere iki ayrı tabloda partition nasıl yapılır sizlere göstereceğim. İlk olarak Range LEFT olan partition yapısından başlayacağım. Öncelikle Veri tabanıma yeni filegroup ve file ekliyorum Şimdi sıra FUNCTION ve SCHEME oluşturmakta ben tablomu yıllık olarak partition yaptım sizler ihtiyaçlarınız doğrultusunda aylık,günlük vs yapabilirsiniz. LEFT partition dediğimiz olay vermiş olduğunuz tarih aralığına eşit bir veri geldiğinde bu veriyi solundaki partition […]
Partitioning Nedir? SQL Server’da partitioning (bölümleme), büyük veritabanlarını yönetilebilir parçalara ayırmak amacıyla kullanılan bir tekniktir. Bu sayede büyük veri setlerinin yönetimi daha verimli hale gelir. Tabloyu veya indeksleri birden fazla bölüme ayırarak, her bölümün ayrı bir veri dosyasında saklanmasını sağlarsınız. Bu, sorgu performansını artırabilir ve bakım işlemlerini kolaylaştırabilir. Partition Range Split ve Merge: Range Split: Partitioning aralığını (range) bölme işlemi, mevcut bir partition’un iki ayrı bölüme ayrılması anlamına gelir. Bu, veri büyüdükçe daha ince kontrol sağlamak için yapılabilir. Merge: Partition’ları birleştirme işlemi, veritabanı yapısını sadeleştirmek veya daha büyük veri kümelerini tek bir partition içinde toplamak için kullanılır. Partition split ve merge işlemleri yaparken kullanılan partition tipi çok önemlidir. Range RIGHT ve Range LEFT arasında bazı önemli temel farklar bulunmaktadır. Bu farklar var olan partition yapınızı güncellemek,yeni bir bölümlemeye sahip olmak istediğinizde hali hazırda kullanımda olan partition bölümlemenizin bozulmasına sebebiyet verebilir. Peki nedir bu Farklar; Tablonuzda Range LEFT olan bir partition […]
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 […]
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 […]
Bir veri tabanını Always On Availability Group’a eklerken karşılaşmış olduğum “Password Required” durumunda yapabileceğiniz bir kaç adımdan bahsedeceğim. Öncelikle bu durumla şifrelenmiş veri tabanını Always On Availability Group’a eklerken karşılaşırsınız. Hangi veri tabanlarında şifreleme olduğunu aşağıda script yardımıyla görebilirsiniz. USE MASTER SELECT * FROM sys.symmetric_keys Şimdi gelelim veri tabanımızı Always On Availability Group’a eklemeye Yukarıda gördüğünüz yere veri tabanını uygulamış olduğunuz şifreyi girmeniz daha sonrasında refresh dediğinizde ilerlemenize izin verecektir. Peki şifremizi unuttuysak neler yapabiliriz 🙂 1- Master key’i drop edebiliriz. USE [DENEMEDB] GO DROP MASTER KEY 2- Master key şifresini değiştirebiliriz. ALTER MASTER KEY REGENERATE WITH ENCRYPTION BY PASSWORD=’YENİ_ŞİFRENİZ’ Her adımı denediniz fakat aşağıdaki gibi bir hata alıyorsanız ne yapmanız gerek? Msg 15329, Level 16, State 2, Line 1 The current master key cannot be decrypted. If this is a database master key, you should attempt to open it in the session before performing this operation. The FORCE option […]
Sql server ortamında bir veri tabanını yedekten geri yüklemeye çalıştığımda veri tabanı kullanılmaktadır geri yükleme başarısız hatası almaktaydım bununla alakalı nasıl bir yol izleyebileceğinize değineceğim Yukarıda göstermiş olduğum hatanın 2 farklı çözüm yolunu sizlere göstermek istiyorum. İlk olarak Veri tabanımızın özellikler kısmına giriyoruz. Bu kısımımda Options sekmesine geldiğimizde ‘Restrict Access’ kısmının ‘MULTI_USER’ olduğunu görmekteyiz bu kısmı ‘SINGLE_USER’ olarak değiştirmemiz gerekmektedir. 2. yöntem olarak Activity Monitor üzerinden açık kalan ve veri tabanımızın kullanıma devam ettiği process’i kapatmamız gerekmektedir. İnstance kısmına gelip sağ tık Activity Monitor sekmesine giriyoruz. Açılan ekranda Processes kısmında veri tabanımızla ilgili olan hizmeti bulup sağ tıkladıktan sonra ‘Kill Process’ sekmesine tıklıyoruz. Artık veri tabanımızı kullanan process kalmadığından restore işlemimizi yapabiliriz.
Sql server’da replikasyonda kullanılan bir veri tabanını restore edip daha sonrasında silmek istediğimde karşılaştığım hatayı sizlerle paylaşmak istiyorum. Bu hatanın anlamı Deneme veri tabanı replikasyon tarafından kullanılmaktadır. Böyle bir senaryo ile karşılaştığınızda Aşağıda vermiş olduğum scriptler işinize yarayacaktır. Select * from sys.databases where is_published=1 Burada replikasyon tarafından kullanılan published olarak hizmet veren veri tabanlarının listesini görüyoruz. Bizim silmek istediğimiz ‘DENEME’ veri tabanının repliklasyonda kullanıldığını görebiliyoruz. Peki bunu nasıl kaldırabilirim? exec sp_removedbreplication ‘DENEME’ Yukarıdaki script yardımıyla replikasyonda kullanılan veri tabanımızı Replikasyondan çıkardıktan sonra silme işlemimizi gerçekleştirebiliriz.
Arkadaşlar bugüne kısa bir makale ile başlayalım. Veri tabanına yeni bir file ekleyip daha sonrasında bu file’ı Shrink&Empty yapıp kaldırmayı ve bu işlemleri yaparken karşılaşabileceğiniz hatalardan adım adım bahsedeceğim. Bu yapacağımız işlemler kritik ve çok dikkat edilmesi gereken işlemlerdir. Veri tabanınızın hizmet verememesi gibi sonuçlar doğurabilir. Teknik açıdan bilgili kişilerin yardımına başvurmanızı öneririm. 1-İlk adımız olarak veri tabanımıza bir file ekleyeceğiz hatta bu file ekleme işlemini yaparken uzantısını belirtmeyeceğim sql server bu ekleyeceğimiz file içerisine acaba veri yazabilecek mi 🙂 Veri tabanımızın özellikler bölümüne giriyoruz. 2-Açılan pencerede “files” bölümüne geliyoruz ve yeni bir file ekliyoruz. 3-Aşağıda gördüğünüz üzere FGAdventureWorks_2011_2015 filegroup içerisine AdventureWorks_2012_2 adında bir file ekliyorum fakat file uzantısını “mdf”,”ndf” yada “ldf” olarak belirtmedim. 4-Eklediğim file dosyasının birde gidip diskte nasıl göründüğüne bakalım. 5-Şimdi ise “DBCC showfilestats” komutu ile file içerisine “UsedExtents“ kolonuna bakarak veri yazılıp yazılmadığını kontrol edebiliriz. Bizim eklemiş olduğumuz file içerisine yazılan herhangi bir veri olmadığını […]
Bu makalede aynı ortamda kurulu olan MSSQL ve ORACLE arasında MSSQL ortamında linked server kurulumu yapılarak MSSQL üzerinden ORACLE ortamında bulunan veri tabanına erişim işlemi amaçlanmaktadır. Öncelikle MSSQL Kurulu sunucumuza ORACLE ODBC Driver kurmamız gerekmektedir. https://www.oracle.com/tr adresinden kurulumunu yapmış olduğumuz ODBC driver sürümünü indirip kurabilirsiniz. MSSQL sunucumuzda Denetim Masası>Sistem ve Güvenlik>Yönetimsel Araçlar yolunu izleyerek (başlat çubuğuna ODBC yazarak da bulabilirsiniz) OS sistem türünüze uygun (32 bit veya 64 bit) uygun olan ODBC Veri Kaynakları(32-bit veya 64 bit) aracını yönetici olarak çalıştırırız. Açılan pencerede System DSN sekmesinde Ekle seçeneği seçilerek yüklemiş olduğumuz ORACLEODBC driverımızı seçilir(Oracle in OraClient19Home1). Aşağıda açılan pencerede ilgili alanları aşağıda belirtilen şekilde doldurduktan sonra bilgilerin doğruluğunu “Test” butonunu tıklayarak kontrol edebiliriz. Yukarıdaki resimde görüldüğü üzere TNS Service Name kısmına ORACLE üzerinde erişmek istediğimiz veritabanına ait IP bilgisini yazıyoruz. User ID kısmına Oracle üzerinde yetkili olan kullanıcı ve Password kısmına ise Oracle kullanıcısının şifresini girmemiz gerekmektedir. Tüm bu alanları doldurduktan […]
SQL Server’da kullanmış olduğumuz bir çok fonksiyon vardır. Bu fonksiyonlardan bir taneside tarih ile alakalı olarak kullanmış olduğumuz “DATE” fonksiyonlarıdır. Bu yazımızda sizlere; DATEDIFF DATEPART VE DATENAME DATEADD DATEDIFF_BIG GETDATE Fonksiyolarını anlatacağım. DATEDIFF(interval, date1, date2) FUNCTIONS DATEDIFF() fonksiyonun temel kullanım amacı girilen iki tarih arasında geçen zaman farkı yıl, ay veya gün olarak “INT” türünden almamızı sağlamaktadır. Bu fonksiyon 3 adet parametreden oluşur. Bulmak istediğiniz zaman farkını hangi zaman diliminden istediğiniz(Year-Month-Day) Başlangıç tarihi Bitiş tarihi DATEDIFF_BIG(datepart,startdate,enddate)FUNCTIONS DATEDIFF_BIG fonksiyonu, verilen iki tarih arasındaki farkı “BIGINT” türünden hesaplamaktadır. DATEDIFF fonksiyonuda verilen iki tarih arasındaki farkı hesaplamaktadır fakat “INT” türünden hesap yapar ve bizim yapacağımız çalışma “INT (max=2,147,483,647)”türünden büyük ise yetersiz kalacaktır. Yukarıdaki sorgumuzda DATEDIFF fonksiyonunun yapabileceği işlem limitinden fazla bir değer aralığı yaptık ve hata aldık. Aynı sorguyu DATEDIFF_BIG ile yaptığımızda ise herhangi bir hata almadık DATEPART&DATENAME(datepart , date) FUNCTIONS DATENAME ve DATEPART fonksiyonları belli bir zaman dilimindeki tarihlerin belirtilen bir bölümünü döndürür. Aralarındaki […]