2010-11-16

SQL Server 2012 - T-SQL Paging

SQL Server 2012 ile birlikte gelen güzel özelliklerden birisi de T-SQL'de paging yapısı. Paging  ile istediğimiz sıradaki yada sıralar arasındaki kayıtları listeleyebileceğiz. Dilersek bu sıraları parametrik hale de getirebileceğiz.

Örnek-1: 10.kayıttan sonraki tüm kayıtları aşağıdaki T-SQL kodu ile alabiliriz.:

SELECT PersonID, FirstName, LastName
FROM Person
ORDER BY PersonID
OFFSET 10 ROWS

Örnek-2: 10  ile 20. kayıtlar arasındakı kayıtları aşağıdaki T-SQL kodu ile alabiliriz:

SELECT PersonID, FirstName, LastName
FROM Person
ORDER BY PersonID
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY;

Syntax:

ORDER BY order_by_expression
[ COLLATE collation_name ]
[ ASC | DESC ]
[ ,...n ]
[ ]


 
 ::=
{
OFFSET { integer_constant | offset_row_count_expression } { ROW | ROWS }
[
FETCH { FIRST | NEXT } {integer_constant | fetch_row_count_expression } { ROW | ROWS } ONLY
]
}

2010-11-11

SQL Server 2011 (Code Name Denali)'nin CTP1'i Çıktı

SQL Server 2011'in CTP1 versiyonunu http://www.microsoft.com/downloads/en/details.aspx?FamilyID=6a04f16f-f6be-4f92-9c92-f7e5677d91f9&displaylang=en adresinden indirebilirsiniz. SQL Server 'Denali' ile gelen yeniliklere http://msdn.microsoft.com/en-us/library/bb510411(v=SQL.110).aspx adresinden ulaşabilirsiniz.

Index Fragmentation

Bir tablo yada view'daki index ve data fragmantasyonunu sys.dm_db_index_physical_stats DMV'si ile alabilirsiniz.

Örnek-1: Test adlı veritabanımızdaki musteri adlı tablomuzun fragmantasyonu aşağıdaki SQL kodu ile alabiliriz:

select * from sys.dm_db_index_physical_stats(db_id('Test'),object_id('musteri'),null,null,null)

Örnek-2: Test adlı veritabanımızdaki tüm tablo ve view'lerimizin fragmantasyonu aşağıdaki SQL kodu ile alabiliriz:

select * from sys.dm_db_index_physical_stats(db_id('Test'),null,null,null,null)

Örnek-3: Tüm veritabanlarımızdaki tüm tablo ve view'lerimizin fragmantasyonu aşağıdaki SQL kodu ile alabiliriz:

select * from sys.dm_db_index_physical_stats(null,null,,null,null,null)

Fragmente oranı %30 dan büyük olan indexlerinizi rebuild etmenizi; %10-%30 arasında olan indexlerinizi ise reorganize etmenizi tavsiye ederim.

2010-11-04

Tüm Kullanici Veritabanlarının Boyutlarını Almak

Bir instance üzerinde bulunan tüm kullanici veritabanlarının boyutlarını aşağıdaki SQL kodu ile alabilirsiniz:

select db_name(database_id) DatabaseName,sum(size)*8/1024 DatabaseSizeMB
from sys.master_files
where database_id>4
group by db_name(database_id)

2010-10-26

Logical/Physical CPU Sayısını Bulma

SQL Server 2008 ve SQL Server 2008 R2 sürümlerinde logical/physical cpu sayısını aşağıdaki sql kodu ile alabilirsiniz:

SELECT cpu_count AS [Logical CPU Count],
hyperthread_ratio AS [Hyperthread Ratio],
cpu_count/hyperthread_ratio AS [Physical CPU Count]
FROM sys.dm_os_sys_info;

2010-10-25

SQL Server Servis Account Adını Bulma

SQL Server'ı çalıştıran servis account'ını aşağıdaki gibi alıp öğrenebilirsiniz:

DECLARE @ServiceaccountName varchar(128)
EXECUTE master.dbo.xp_instance_regread
N'HKEY_LOCAL_MACHINE',
N'SYSTEM\CurrentControlSet\Services\MSSQLSERVER',
N'ObjectName',
@ServiceAccountName OUTPUT,
N'no_output'
SELECT @ServiceaccountName

SQL Server 2008 R2 SP1'den sonra gelen sys.dm_server_services DMV ile servisler ile ilgili bir çok bilgiye ulaşabilirsiniz. Benzer şekilde aşağıdaki T-SQL ile de servis account bilgisini alabilirsiniz:

select servicename, service_account
from sys.dm_server_services


2010-10-15

SQL Server'ın Başlatıldığı Zamanı Bulma

SQL Server'ın başlangıç zamanını SQL Server 2008 ile birlikte gelen sys.dm_os_sys_info DMV'i ile aşağıdaki gibi bulabilirsiniz:

SELECT sqlserver_start_time
FROM sys.dm_os_sys_info

SQL Server Error Log Dosyası Nerede?

SQL Server error log dosyasının adını ve dosyanın bulunduğu dizini aşağıdaki undocumented sql kodu ile alabilirsiniz:
SELECT SERVERPROPERTY('ErrorLogFileName')

2010-09-30

MS SQL Server 2008 Service Pack 2 (SP2) Çıktı

Microsoft daha önce 2010 yılının 4.çeyreğinde çıkaracağını duyurduğu SQL Server 2008 SP2'yi yayınladı.
SQL Server 2008 Service Pack 2'yi http://www.microsoft.com/downloads/en/details.aspx?FamilyID=8fbfc1de-d25e-4790-88b5-7dda1f1d4e17&displaylang=en adresinden indirebilirsiniz.

SQL Server 2008 Service Pack 2'de giderilen hataların listesini http://support.microsoft.com/kb/2285068 adresinden detaylı olarak inceleyebilirsiniz.

2010-09-16

Partition Tabloların Filegroup ve Diğer Bilgilerini Alma

Partition yapısındaki bir tablonun partition aralıklarını ve bu aralıkların hangi filegroup'ta tutulduğunu aşağıdaki sorgu ile alabilirsiniz:

select isnull(d.name,ps.name) FileGroupNameOrSchemeName
,isnull(d.type_desc , ps.type_desc ) FileGroupTypeOrSchemeType
,OBJECT_NAME(p.object_id) ObjectName
,p.rows
,p.data_compression_desc
,p.partition_id
,p.partition_number
,isnull(case when boundary_value_on_right =1 then '<' else '>' end + cast(minprv.value as varchar(100)),'~') + ' to '
+isnull( case when boundary_value_on_right =1 then '>='
else '<=' end + cast(prv.value as varchar(100)), '~') Criteria
,d2.name FilegroupName
from sys.partitions p join sys.indexes i on i.index_id = p.index_id and i.object_id = p.object_id
left join sys.data_spaces d on d.data_space_id = i.data_space_id
left join sys.partition_schemes ps on ps.data_space_id = i.data_space_id
left join sys.partition_functions pf on pf.function_id = ps.function_id
left join sys.partition_range_values prv on prv.function_id = ps.function_id and prv.boundary_id = p.partition_number
left join sys.partition_range_values minprv on minprv.function_id = ps.function_id and minprv.boundary_id = p.partition_number -1
left join sys.destination_data_spaces dds on dds.partition_scheme_id = ps.data_space_id and dds.destination_id = p.partition_number
left join sys.data_spaces d2 on d2.data_space_id = dds.data_space_id
where p.object_id=object_id('TabloAdi')

2010-09-12

Performans Counter'a Binlik Ayıracı Ekleme

Windows Vista'dan önceki işletim sistemlerinde perfmon'da binlik ayıracı default olarak yoktur ve bu eksiklik özellikle uzun sayıları okumamızda zorluk çıkartır. Perfmon'a binlik ayıracını aşağıdaki adımları uygulayarak ekleyebilirsiniz:
  1. Regedit'i çalıştırın.
  2. HKEY_CURRENT_USER\Software\Microsoft\SystemMonitor\ sekmesini açın.
  3. Edit menu'de New deyip DWORD değeri seçin.
  4. Oluşturduğunuz yeni alana "DisplayThousandsSeparator" adını verin.
  5. "DisplayThousandsSeparator" değerini 1 olarak set edin.
  6. Perfmon'u yeniden başlatın.

.::YASAL UYARI::.

©2004-2023 Mehmet GÜZEL, www.mehmetguzel.net

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