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'
);
26 Şubat 2016 Cuma
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.
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)
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)
Kaydol:
Kayıtlar (Atom)
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 "...
-
Bugün sizlere SQL Server 2012 ile gelen bir fonksiyon olan Concat fonksiyonundan bahsetmek istiyorum. Concat fonksiyonu 2 veya daha fazla ...
-
SET NO COUNT : set nocount on olarak ayarlandığında, sayım d öndürülmez. set nocount off olduğunda, sayısı döner. Yapılması gereken sorg...