26 Şubat 2016 Cuma

Primary Key Olmayan Tabloları Bulmak

Bu yazımda sizlere bir databasede Primary Keyi olmayan tabloları bulmanın kolay yolunu anlatmaya çalışacağım. Primary Key olmayan tabloları bulmanın bir çok yolu var. Ben üç tanesini yazmak istiyorum.

1.Yöntem
Bu yöntemde OBJECTPROPERTY  fonksiyonun TableHasPrimaryKey kullanarak tüm tabloları kontrol edilir ve Primary Key olmayan tespit edilir.

use [AdventureWorks2016CTP3]
go
SELECT
SCHEMA_NAME(schema_id) AS [Schema name] ,
name AS [Table name] FROM sys.tables
WHERE
OBJECTPROPERTY(object_id,'TableHasPrimaryKey') = 0



2.Yöntem
En kolay yöntem sys.object adlı viewin kontrol edilmesidir. En kolay yöntem budur.

use [AdventureWorks2016CTP3]
GO
SELECT
  SCHEMA_NAME(schema_id) AS [Schema name]
, name AS [Table name] FROM sys.objects
WHERE
[type]='U' AND object_id
NOT IN (
SELECT parent_object_id FROM sys.objects
WHERE [type]='PK' )




3.Yöntem
Bu yöntem ise sys.tables & sys.key_constraints adlı system viewlerini kullanmaktadır.

use [AdventureWorks2016CTP3]
GO
SELECT
SCHEMA_NAME(schema_id) AS [Schema name]
, name AS [Table name]
FROM sys.tables
WHERE object_id NOT IN
(
SELECT parent_object_id
FROM sys.key_constraints
WHERE type = 'PK'
);

16 Şubat 2016 Salı

SQL Server 2016 Instant File Initialization

Instant File Initialization (Anında Dosya Oluşturulması) 2005 versiyonu ile karşımıza gelen bir özelliktir. Çok hızlı büyüyen veritabanlarında bu özelliğin aktif edilmesi önerilmektedir. Bu özellik sayesinde allocate edilen data dosyaları sıfır ile doldurulmadan anında allocate edilmesidir.

Eğer bu ayar aktif edilmezse allocate işlemi sırasında datafile sıfır ile doldurulmaktadır.

Bu sayede aşağıdaki işlemler çok hızlı bir şekilde yapılabilmektedir.
1-Database Oluşturulması
2-Mevcut veritabanına data file ekleme
3-Mevcut veritabanında datafile boyutunu manuel olarak büyütülmesi
4-Restore İşlemleri

2016 versiyonuna kadar bu işlemleri kurulum sonrasında yaptığımız bir çok ayar gibi kurulum sonrasında yapıyorduk. 2016 versiyonu ile birlikte“Grant Perform Volume Maintenance Task privilege to SQL Server Database engine Service” kutucuğunu işaretleyerek hızlıca yapılabilmektedir.

14 Şubat 2016 Pazar

Bütün Databaselerin AUTO_SHRINK Özelliğinin Açılması veya Kapatılması

Aşağıdaki T-SQL kodunu kullanarak AUTOSHRINK açabilir veya kapatabiliriz.

Kapatılması

DECLARE @name varchar(500)
DECLARE @sql varchar(8000)
SET @sql = ''
DECLARE Database_Cursor CURSOR READ_ONLY FOR
SELECT Name
FROM sysdatabases
WHERE DBID > 4
OPEN Database_Cursor
FETCH NEXT FROM Database_Cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGINSET @sql = @sql + 'ALTER DATABASE [' + @name + '] SET AUTO_SHRINK OFF' + CHAR(10)
FETCH NEXT FROM Database_Cursor INTO @name
ENDCLOSE Database_Cursor
DEALLOCATE Database_Cursor
print @sql
EXEC(@sql)

Sql Server DateTime Veri Tipindeki Datayı Türkçe Formatında Göstermek

  SQL'de tarihleri farklı formatlarda göstermek için FORMAT fonksiyonunu kullanabilirsiniz. Türkçe kısa tarih formatı genellikle "...