Screenshot_5

SQL Server 2016 STRING_SPLIT Function

Herkese merhaba,

Bu yazımda SQL Server 2016 RC0 versiyonu ile hayatımıza giren “STRING_SPLIT” fonksiyonunu ele alacağım. Bu fonksiyon, adından da anlaşılacağı gibi parametre olarak verilen yazıyı belli bir ayraç ile ayırıp geriye tablo döndürüyor.

Aslında, neredeyse hepimiz bu işlemi ya custom function yazarak ya da CLR gibi çözümlerle yapabiliyorduk. SQL Server 2016 ile birlikte ise built-in table valued function olarak geliyor.

Okumaya devam et

remediation-mask-cardholder-data

SQL Server 2016 Dynamic Data Masking

Merhaba,

SQL Server 2016 ile gelecek harika özelliklerden biri olan Dynamic Data Masking sayesinde operasyonel hiçbir iş yapmadan verilerimizi kolaylıkla maskeleyebileceğiz.

Öncelikle maskeleme nedir ona bakalım;
Veri maskeleme, veritabanları içindeki hassas veya gizli verilere erişimi engelleyen bir güvenlik yöntemidir. Bu yöntem, gerçek verilerin yerine gerçek olmayan ancak uygun verilerin yerleştirilmesiyle gerçekleştirilir. (alıntı)

Okumaya devam et

Merge Statement Generator (Script)

Merhaba herkese,

Bu yazımda, Merge statement’ı kullanımında bizlere kolaylık sağlayacak scripti paylaşacağım. Merge, hayatımıza SQL Server 2008 ile girmişti. Çok işlevsel olmasına karşın alışkanlıklardan uzak olduğundan olsa gerek pek yaygın kullanılmıyor.

Merge’ün ne yaptığına burada değinmeyeceğim. Bunun için birçok makale mevcut. Fakat özetlemek gerekirse; 2 tablo arasında belli kurallara göre yapılan senkronizasyon ya da upsert işlemlerinde kullanılan bir statement diyebiliriz. Okumaya devam et

2 Server Arası Veri Tabanı Kopyalama

Merhaba,

2 sql server arası bir veya daha fazla veri tabanını taşıma ihtiyacı her zaman olmuştur. Tek tek backup alıp, diğer tarafa kopyaladıktan sonra tek tek restore etmemiz gerekirdi. Eğer kopyalanacak veri tabanı sayısı fazla ise bu işlem çok uzun ve can sıkıcı olabiliyor.

Bu işlemleri otomatize etmek için bir script geliştirdim. Parametre olarak verdiğimiz veri tabanlarını ilgili serverlar arası backup-restore yöntemi ile kopyalıyor.
Script size yeni bir script üretecek. Bu scripti management studio’da “SQLCMD” modunda çalıştırmanız gerekiyor.

Always On ya da mirroring kurulumu sırasında bu script oldukça işe yarayacaktır.
Okumaya devam et

Toplu Olarak MDF ve LDF Dosyalarını Taşımak / Moving Data and Log Files

Merhaba,

Bildiğiniz gibi databaselerimizin data ve log dosyalarını fiziksel olarak taşımak için detach / attach yöntemini kullanıyoruz.
Fakat bu işlem birden fazla database için yorucu olabilir.

Bunun için bir script geliştirdim. Bu script ile tüm databaseleri detach etmeden taşıyabiliyoruz. Veya isterseniz parametre olarak veriğiniz tek bir database için bu işlemi yapabilirsiniz.
Scriptin çalışması şu şekilde;

Okumaya devam et

Tüm Veritabanı Log Dosyalarını Shrink Etmek / Shrinking All Log Files

Veritabanı Log (.LDF) dosyalarımızın hepsini birden shrink etme ihtiyacımız olabilir. Recovery Model Simple olsa dahi bazen bunu yapmamız gerekebilir*

Yazmış olduğum SP ile tüm LDF dosyalarını topluca shrink edebilirsiniz. Bu SPyi tek olarak çalıştırabilir ya da sadece script ürettirebilirsiniz.

* Not: Shrink işleminin periyodik olarak ya da plansız yapılması önerilmeyen bir işlemdir. Shrink bir operasyon olarak ele alınmalı ve bilinçli bir şekilde yapılandırılmalı.

Kullanımı şu şekilde;

EXEC sp_shrinkLogFiles
@executeNumber = 2,  -- Kaç kes çalışsın?
@execute = 1         -- 1: çalıştırır 0: sadece script üretir

SP’nin create scripti;

CREATE PROC sp_shrinkLogFiles

@executeNumber INT = 1,
@execute BIT = 0

AS

DECLARE @cmd varchar(max)

SELECT @cmd = COALESCE(@cmd + '
', '') + '
USE [' + DB_NAME(database_id) + ']
DBCC SHRINKFILE (N'''+ name + ''' , 0, TRUNCATEONLY)'
FROM sys.master_files
WHERE database_id > 4 AND [type] = 1 AND [state] = 0

IF (@execute = 1)
 BEGIN
 PRINT '--- Started: ' + CONVERT(NVARCHAR(19),GETDATE(), 104) + ' ' + CONVERT(NVARCHAR(20),GETDATE(), 114) + ' ---'
 PRINT ''
 WHILE (@executeNumber > 0)
 BEGIN
 EXEC(@cmd)
 SET @executeNumber -= 1
 END
 PRINT ''
 PRINT '--- Finished: ' + CONVERT(NVARCHAR(19),GETDATE(), 104) + ' ' + CONVERT(NVARCHAR(20),GETDATE(), 114) + ' ---'
 END
ELSE
 BEGIN
 SELECT @cmd = REPLACE(@cmd,'TRUNCATEONLY)','TRUNCATEONLY)
GO ' + (SELECT CASE @executeNumber WHEN 1 THEN '' ELSE CAST(@executeNumber AS VARCHAR) END))

SELECT @cmd
 END

Veritabanı Restore Bilgisi / Database Restore Info

Merhaba;

Aşağıda yazmış olduğum script ile serverda bulunan tüm databaselerin en son restore bilgilerini elde edebilirsiniz.

Serverda bulunmayan databaselerin bilgilerini almak için ise scriptin alt satırlarında bulunan “sys.databases”  JOIN modelini LEFT JOIN yapabilirsiniz.
Eğer tek bir databasein bilgilerini istiyorsanız “SET @dbname = NULL” parametresine db ismini yazmanız yeterli.

Okumaya devam et

Bir Klasördeki Tüm TLog Backuplarını Restore Etmek / Restore All TLog Backup Files

Merhaba;

Bir önceki yazımda bir klasördeki backup dosyalarının nasıl restore edileceğine bakmıştık. Bu yazımda da bir klasörde ki tüm transaction log backuplarının restore edilmesine  bakacağız.

Geçen haftalarda SQL Server 2012 Always On mimarisine geçtik. Geçiş sırasında hem full backup hem de Tlog backupların restore edilmesi gerekiyordu. Bu senaryoda bu script oldukça işime yaradı.

Scripti isterseniz SP haline dönüştürebilirsiniz. Parametrelerin açıklamalarını script içinde bulabilirsiniz.

Okumaya devam et

Bir Klasördeki Tüm Backup Dosyalarını Restore Etmek / Restore All Backup Files

Merhaba;

Bu yazımda işinize yarayacağını düşündüğüm bir script paylaşmak istiyorum sizinle.

Çoğumuz belli bir serverda bulunan veritabanlarını başka bir servera taşıma ve kopyalama ihtiyacı duymuşuzdur. Ama sayı olarak çok fazla DB olduğunda bu işlem biraz yorucu ve sıkıcı olabilir🙂

Bunun için bir SP yazdım.
Bu sp ile parametre olarak olarak belirttiğiniz klasördeki tüm .bak dosyalarının içini okuyup databaseleri servera restore edebilirsiniz. Ayrıca eğer varsa full text search dosyalarınıda restore edecektir.
Create scriptini aşağıda bulabilirsiniz. SPyi master db veya DBA scriptlerinizin olduğu veritabanında çalıştırabilirsiniz.

SPnin kullanımı şu şekilde;

EXEC sp_RestoreAllBackupFiles
		 @BackupPath = 'C:\Backup'
		,@DataPath = NULL
		,@LogPath = NULL
		,@Replace = 0
		,@Recovery = 1
		,@Execute = 0

Okumaya devam et

Etkinlik: SQLSaturday #182

SQLSaturday etkinliğine davetlisiniz

Küresel çapta faaliyet gösteren en büyük SQL Server topluluğu olan PASS’in tam gün ücretsiz etkinliği SQLSaturday’in 182.si 1 Aralık 2012 tarihinde istanbul’da yapılıyor. Türkiye’de ikinci defa gerçekleştirilecek SQLSaturday etkinliğinde katılımcılara ileri seviye teknik içeriklerden oluşturulan 6 workshop oturumu sunulacaktır.

Katılımcılar SQL Server MVP ve konusunda uzman Microsoft çalışanları tarafından hazırlanan SQL Server odaklı workshop’lara katılma şansı yakalarken aynı zamanda diğer katılımcılar ve sponsorlar ile iletişime geçerek iş ağlarını geliştirme firsatı yakalayacaktır. Okumaya devam et