2013-12-11

Partition Scheme Bulma

Veritabanızda bulunan tabloların ve indekslerin bulunduğu partition scheme'ya aşağıdaki T-SQL ile bulabilirsiniz:

select object_schema_name(i.object_id) as [ObjectSchemaName],
object_name(i.object_id) as [ObjectName],
i.name as [IndexName],
s.name as [PartitionSchemeName]
from sys.indexes i
inner join sys.partition_schemes s on i.data_space_id = s.data_space_id


-- Kodlar SQL Server 2012 ile test edildi.

2013-12-08

Foreign Key Bulma

Bugün foreign key ile ilgili işinize yarayacak iki T-SQL scripti paylaşıyorum:

1. Bir veritabanındaki tüm foreign key'leri bulma:

select
f.name as ForeignKeyName,

schema_name(f.schema_id) SchemaName,
object_name(f.parent_object_id) as TableName,
col_name(fc.parent_object_id, fc.parent_column_id) as ColumnName,
object_name (f.referenced_object_id) as ReferenceTableName,
col_name(fc.referenced_object_id, fc.referenced_column_id) as ReferenceColumnName
from sys.foreign_keys as f 
inner join sys.foreign_key_columns as fc on f.object_id = fc.constraint_object_id



2.Bir tabloya hangi tablolardan foreign key oluşturulmuş?

select f.name as ForeignKeyName,
schema_name(f.schema_id) SchemaName,
object_name(f.parent_object_id) as TableName,
col_name(fc.parent_object_id, fc.parent_column_id) as ColumnName,
object_name (f.referenced_object_id) as ReferenceTableName,
col_name(fc.referenced_object_id, fc.referenced_column_id) as ReferenceColumnName
from sys.foreign_keys as
inner join sys.foreign_key_columns as fc on f.object_id = fc.constraint_object_id
where fc.referenced_object_id=object_id('TableName')

--T-SQL kodlar, SQL Server 2012 SP1 ile test edildi.

2013-12-05

Veritabanında LDF Dosyası Olmadan MDF Dosyasını Attach Etme

Elinizde veritabanına ait MDF data dosyası var fakat LDF log dosyası yoksa yada LDF log dosyası bozuk ise aşağıdaki iki yöntem ile MDF dosyasından veritabanınızı oluşturabilirsiniz:

Örnek olarak AdventureWorks2012 veritabanını iki yöntem ile oluşturalım:
1.

USE [master]
GO
CREATE DATABASE [AdventureWorks2012] ON
( FILENAME = N'D:\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\AdventureWorks2012_Data.mdf' )
 FOR ATTACH_REBUILD_LOG

2.

USE [master]
GO
EXEC sp_attach_single_file_db @dbname='AdventureWorks2012',
@physname=N'D:\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\AdventureWorks2012_Data.mdf'
GO

-- Her iki yöntemteki kodlar SQL Server 2012 SP1 ile test edildi.

2013-06-20

Checkdb'nin En Son Yapıldığı Tarihi Bulma

Aşağıdaki sorguyu ilgili veritabanınızda çalıştırarak o veritabanında çalıştırılan Checkdb'nin en son yapıldığı tarihi bulabilirsiniz. Aşağıdaki sorguyu tüm veritabanlarınız için genişletebilirsiniz. 

  declare @DBName sysname=db_name(), @SQL varchar(512); 

 create table #DBCC( ParentObject varchar(255),
 [Object] varchar(255), 
 Field varchar(255),
 [Value] varchar(255) ) 

 set @SQL = 'dbcc dbinfo([' + @DBName + ']) with tableresults;'

 insert into #DBCC 
exec(@SQL) 

 select top 1 cast(value as date) 
from #DBCC 
where Field = 'dbi_dbccLastKnownGood';

drop table #DBCC 

 --SQL Server 2008 SP3, SQL Server 2012 SP1 ve SQL Server 2014 CTP1 ile test edilmiştir.

2013-04-30

SQL Server'ın Bir Sonraki Versiyonunda Beklenen Yeni Özellikler

Merhaba,

Bana göre uzun sayılabilecek bir aradan sonra yeni yazılarımla karşınızdayım.

SQL Server ile ilgili yenilikleri, beklenen yeni özellikleri bir çok kişiden önce aşağıdaki satırlar ile haberdar olacaksınız:

Eminin bir çoğunuz "Codename SQL14" duymamışsınızdır. Zaten arama motorlarında henüz pek izi yok; bu yazı ile biz iz bırakalım. Microsoft, SQL Server 2012'den sonraki versiyonu "Codename SQL14" kod adıyla karşımıza çıkaracak.

Codename SQL14 ile beklenen yeni özellikler:
- In-memory for OLTP(Codename Hekaton) : İstediğiniz tablodaki OLTP işlemleri memory'de yapabileceksiniz.
- Columnstore indeks OLTP ye uygun hale getiriliyor yani  columnstore indeksli tablolarda üzerinde full update ve bulk insert işlemler yapabileceğiz.
- AlwaysON'daki secondary sayısı 4'ten 8'e çıkarılacak.
- Partition bazında Online Index Rebuild edebileceğiz(Bu özelliği 2008 yılından beri bekliyordum).

Kişisel tahminlerim:
- Codename SQL14, SQL Server'ın yeni versiyonu SQL Server 2012 R2 adıyla karşımıza çıkacak.
- SQL Server 2012 versiyonu 2014 yılının sonlarına doğru çıkmasını bekliyorum.

Tempdb Veritabanına Çoklu Veri Dosyası Ekleme


Tempdb sistem veritabanına istediğiniz kadar veri dosyasını aşağıdaki T-SQL  script ile ekleyebilirsiniz:

declare      @FileCount smallint=24,                 --Tempdb de olmasını istediğiniz toplam data dosyası sayısı
             @i smallint=1,
             @Path varchar(128)='T:\',
             @FileSize varchar(16)='512MB',
             @FileGrowth varchar(16)='512MB',
             @SQL varchar(8000)=''

while @i < @FileCount
begin
       set @i=@i+1

       set @SQL='USE [master];
ALTER DATABASE [tempdb] ADD FILE ( NAME = N''tempdev' + cast(@i as varchar(5)) + ''', FILENAME = N''' + @Path + 'tempdev'+ cast(@i as varchar(5))  + '.ndf'' , SIZE = ' + @FileSize + ' , FILEGROWTH = ' + @FileGrowth+ ' );'
       exec ( @SQL )
end

2013-01-15

Kullanılmayan Stored Procedure Bulma

SQL Server servisinin başlatıldığı tarihten bu yana kullanılmayan stored procedure'leri aşağıdaki sorgu ile bulabilirsiniz:

select schema_name(schema_id) as SchemaName,p.name as SpName
from sys.procedures as p
   
except
   
select schema_name(schema_id) as SchemaName,p.name as SpName
from sys.procedures as p inner join sys.dm_exec_procedure_stats as qs on p.object_id = qs.object_id

-- SQL Server 2008 ile test edildi.

2013-01-12

Server Role Sahip Kullanıcıları Bulma

SQL Server'da herhangi bir server role(sysadmin, setupadmin, serveradmin, dbcreator, diskadmin, processadmin, securityadmin) sahip tüm kullanıcıları aşağıdaki sorgu ile bulabilirsiniz:


use master
go
select p.name,sp.name  
from sys.server_principals  p
inner join  sys.server_role_members  pr  on  p.principal_id= pr.member_principal_id
inner join sys.server_principals sp on pr.role_principal_id=sp.principal_id
where sp.type='R'


--SQL Server 2008 de test edildi.

2013-01-01

SQL Server Portlarını Komut Satırından Nasıl Açabilirim?

Windows 2008 Server'da:
@echo =========  SQL Server Ports  ===================
@echo Enabling SQLServer default instance port 1433
netsh firewall set portopening TCP 1433 "SQLServer"
@echo Enabling Dedicated Admin Connection port 1434
netsh firewall set portopening TCP 1434 "SQL Admin Connection"
@echo Enabling conventional SQL Server Service Broker port 4022 
netsh firewall set portopening TCP 4022 "SQL Service Broker"
@echo Enabling Transact-SQL Debugger/RPC port 135
netsh firewall set portopening TCP 135 "SQL Debugger/RPC"
@echo =========  Analysis Services Ports  ==============
@echo Enabling SSAS Default Instance port 2383
netsh firewall set portopening TCP 2383 "Analysis Services"
@echo Enabling SQL Server Browser Service port 2382
netsh firewall set portopening TCP 2382 "SQL Browser"
@echo =========  Misc Applications  ==============
@echo Enabling port for SQL Server Browser Service's 'Browse' Button
netsh firewall set portopening UDP 1434 "SQL Browser"
@echo Allowing multicast broadcast response on UDP (Browser Service Enumerations OK)
netsh firewall set multicastbroadcastresponse ENABLE

Windows Server 2008 R2 ve Windows Server 2012 versiyonu:

@echo =========  SQL Server Ports  =================== 
@echo Enabling SQLServer default instance port 1433
 netsh advfirewall firewall add rule name="SQL Server" dir=in action=allow protocol=TCP localport=1433 @echo Enabling Dedicated Admin Connection port 1434
 netsh advfirewall firewall add rule name="SQL Admin Connection" dir=in action=allow protocol=TCP localport=1434
@echo Enabling Conventional SQL Server Service Broker port 4022
netsh advfirewall firewall add rule name="SQL Service Broker" dir=in action=allow protocol=TCP localport=4022
@echo Enabling Transact SQL/RPC port 135
netsh advfirewall firewall add rule name="SQL Debugger/RPC" dir=in action=allow protocol=TCP localport=135
@echo =========  Analysis Services Ports  ==============
@echo Enabling SSAS Default Instance port 2383
netsh advfirewall firewall add rule name="Analysis Services" dir=in action=allow protocol=TCP localport=2383
@echo Enabling SQL Server Browser Service port 2382
netsh advfirewall firewall add rule name="SQL Browser" dir=in action=allow protocol=TCP localport=2382 @echo Enabling port for SQL Server Browser Service's 'Browse' Button
netsh advfirewall firewall add rule name="SQL Browser" dir=in action=allow protocol=UDP localport=1434

Kaynak: Microsoft.com

2012-12-26

Silinen Bir SQL Modülünün Kodunu Geri Kurtarma

İki tarih arasında sildiğiniz trigger, stored procedure, view, function'ın kodunu aşağıdaki T-SQL kodu ile alabilirsiniz:

declare @StartDate Datetime='2012-01-01',
@EndDate Datetime='2013-01-01'

select convert(varchar(max),substring([rowlog contents 0],33,len([rowlog contents 0]))) as [script]
from fn_dblog(null,null)
where [operation]='lop_delete_rows' and [context]='lcx_mark_as_ghost'
and [allocunitname]='sys.sysobjvalues.clst'
and [transaction id] in (select distinct [transaction id] from    sys.fn_dblog(null, null)
where context ='LCX_NULL'
and operation ='LOP_BEGIN_XACT'
and [transaction name]='DROPOBJ'
and  convert(nvarchar(11),[Begin Time]) between @StartDate AND @EndDate)
and substring([RowLog Contents 0],33,len([RowLog Contents 0]))<>0

Not: T-SQL kod SQL Server 2012 ile test edildi.

.::YASAL UYARI::.

©2004-2013 Mehmet GÜZEL, http://www.mehmetguzel.net/ & http://www.mehmetguzel.com/

Site içeriği kaynak gösterilmek koşuluyla yayınlanabilir. Yazılan yazı ve yorumlar sadece yazı ve yorum sahiplerini bağlar.