2009-03-23

Kullanıcı Tablolarında Bulunan İndexlerin Filegrouplarını Bulma

Primary filegroup üzerinde bulunan indexleri aşağıdaki kod ile bulabiliriz:

SELECT o.[name], o.[type], i.[name], i.[index_id], f.[name]
FROM sys.indexes i (nolock) INNER JOIN sys.filegroups f (nolock) ON i.data_space_id = f.data_space_id
INNER JOIN sys.all_objects o (nolock) ON i.[object_id] = o.[object_id]
WHEREo.type<>'s' and o.type='U' and f.name='PRIMARY'
ORDER BY o.name, i.name


Bu kod özellikle nesnelerinizi filegroup'lar arasında taşırken; özellikle "Hangi indexleri taşımadım?" sorusuna cevap niteliğinde.

2009-03-22

Bir Tabloya Ait İndekslerin İstatistiklerini Bulma

SELECT
object_name(sys.indexes.Object_id) AS Table_Name,
ISNULL(sys.indexes.name, '---') AS index_name,
partitions.Rows,
partitions.SizeMB,
sys.indexes.type_desc,
sys.indexes.is_unique,
sys.indexes.is_primary_key,
sys.indexes.is_unique_constraint,
sys.indexes.is_unique,
ISNULL(Index_Columns.index_columns_key, '---') AS index_columns_key,
ISNULL(Index_Columns.index_columns_include, '---') AS index_columns_include,
ISNULL(sys.dm_db_index_usage_stats.user_seeks,0) AS user_seeks,
ISNULL(sys.dm_db_index_usage_stats.system_seeks,0) AS system_seeks,
ISNULL(sys.dm_db_index_usage_stats.user_scans,0) AS user_scans,
ISNULL(sys.dm_db_index_usage_stats.system_scans,0) AS system_scans,
ISNULL(sys.dm_db_index_usage_stats.user_lookups,0) AS user_lookups,
ISNULL(sys.dm_db_index_usage_stats.system_lookups,0) AS system_lookups,
ISNULL(sys.dm_db_index_usage_stats.user_updates,0) AS user_updates,
ISNULL(sys.dm_db_index_usage_stats.system_updates,0) AS system_updates,
(
(
(CONVERT(Numeric(19,6), ISNULL(sys.dm_db_index_usage_stats.user_seeks,0))+CONVERT(Numeric(19,6), ISNULL(sys.dm_db_index_usage_stats.system_seeks,0)))*10
+ CASE WHEN sys.indexes.type=2 THEN (CONVERT(Numeric(19,6), ISNULL(sys.dm_db_index_usage_stats.user_scans,0))+CONVERT(Numeric(19,6), ISNULL(sys.dm_db_index_usage_stats.system_scans,0)))*1 ELSE 0 END
+ 1
)
/CASE WHEN sys.indexes.type=2 THEN (CONVERT(Numeric(19,6), ISNULL(sys.dm_db_index_usage_stats.user_updates,0))+CONVERT(Numeric(19,6), ISNULL(sys.dm_db_index_usage_stats.system_updates,0))+1) ELSE 1 END
) AS Score
FROM
sys.indexes
JOIN (
SELECT
object_id, index_id, SUM(row_count) AS Rows,
CONVERT(numeric(19,3), CONVERT(numeric(19,3), SUM(in_row_reserved_page_count+lob_reserved_page_count+row_overflow_reserved_page_count))/CONVERT(numeric(19,3), 128)) AS SizeMB
FROM sys.dm_db_partition_stats
GROUP BY object_id, index_id
) AS partitions ON sys.indexes.object_id=partitions.object_id AND sys.indexes.index_id=partitions.index_id
CROSS APPLY (
SELECT
LEFT(index_columns_key, LEN(index_columns_key)-1) AS index_columns_key,
LEFT(index_columns_include, LEN(index_columns_include)-1) AS index_columns_include
FROM
(
SELECT
(
SELECT sys.columns.name + ', '
FROM
sys.index_columns
JOIN sys.columns ON
sys.index_columns.column_id=sys.columns.column_id
AND sys.index_columns.object_id=sys.columns.object_id
WHERE
sys.index_columns.is_included_column=0
AND sys.indexes.object_id=sys.index_columns.object_id AND sys.indexes.index_id=sys.index_columns.index_id
ORDER BY key_ordinal
FOR XML PATH('')
) AS index_columns_key,
(
SELECT sys.columns.name + ', '
FROM
sys.index_columns
JOIN sys.columns ON
sys.index_columns.column_id=sys.columns.column_id
AND sys.index_columns.object_id=sys.columns.object_id
WHERE
sys.index_columns.is_included_column=1
AND sys.indexes.object_id=sys.index_columns.object_id AND sys.indexes.index_id=sys.index_columns.index_id
ORDER BY index_column_id
FOR XML PATH('')
) AS index_columns_include
) AS Index_Columns
) AS Index_Columns
LEFT OUTER JOIN sys.dm_db_index_usage_stats ON
sys.indexes.index_id=sys.dm_db_index_usage_stats.index_id AND sys.indexes.object_id=sys.dm_db_index_usage_stats.object_id
AND sys.dm_db_index_usage_stats.database_id=DB_ID()
WHERE
sys.indexes.object_id=object_id('TableName')

2009-03-18

Bir Veritabanının Büyümesini İzleme

Bir veritabanının büyümesini hızlı olarak aşağıdaki kod ile alabilirsiniz:

select
backup_start_date BackupDate
, floor(backup_size/1024000000) SizeGB
from msdb..backupset
where database_name = db_name()
and type = 'd'
order by backup_start_date desc

2009-03-17

Askerlikten Damlalar

Siyaha boyanmış bir pencereden
Seyretmek zor dünyayı...
Hayatın henüz baharında
Solmaya başlamış gülü yeşertmek zor.

Ekip ruhundan yoksun insanlardan uzak dur!
Vakit doldu, yeni bir gün bitti; son budur...

Akdağ/Karaburun, İzmir
17.06.2002 16:53 (Mesai çıkışı)

2009-03-11

Extended Property Nasıl Eklenir?

Bir tablo yada tablonun bir field'ına extended property nasıl eklenir? sorusuyla sık sık karşılaştığım için ekleme ihtiyacı hissettim.

--Tablonun extended property'sini ekleme
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Tablo Aciklamasi’, @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TabloAdi'
GO

--Field extended property'i ekleme
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'İlgili fieldin Aciklamasi’, @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TabloAdi', @level2type=N'COLUMN',@level2name=N'FieldAdi'
GO

2009-02-19

Veritabanındaki EXECUTE Yetkisinin Otomatik Oluşturulması

Değerli Okuyucular,

Geçenlerde iki farklı ortamda aynı veritabanının EXECUTE yetkilerinin aynı olmadığı iletilince gerçek ortamdaki EXECUTE yetkilerini bulup diğer ortama uygulamam gerekti. Bunun için EXECUTE yetkilerini otomatik oluşturan aşağıdaki SQL kodunu yazdım. Umarım sizin de işinize yarar.

select PE.state_desc + ' ' + PE.permission_name + ' ON ' + object_schema_name (Pe.major_id) + '.' + object_name(PE.major_id) + ' TO ' + CAST(PR.Name COLLATE Latin1_General_CI_AS as nvarchar(255))
from sys.database_permissions PE INNER JOIN sys.database_principals PR ON PE.grantee_principal_id=PR.principal_id

where PE.type='EX' and PE.major_id>0

2009-02-12

SSIS'te Fuzzy Group Sorunu

Değerli Okuyucular,

Üzerinde SQL Server 2008'ın Standart Edition'ın kurulu olduğu bir sunucum vardı ve üzerinde SSIS paketlerini barındırıp istediğim yerden bu paketlere erişip çalıştırmak istiyordum. Paketi düzgünce SSIS üzerine deploy ettim. Başka sunucumdan bu paketi değişik konfigürasyonlarda denedim. Paketim düzgün çalışmadı ve sürekli hata aldım. Hata package load edememe ile ilgiliydi. Paketi Visual Studio üzerinden düzgün çalıştırabiliyordum. Demek ki server tarafında bir sorun vardı. Paketin içerisinde Fuzzy Group'ta yapılıyordu. Meğer Standart Edition Fuzzy Group'u desteklemiyormuş. Fuzzy Group için Enterprise Edition veya üstü bir sürümü istiyor. Standart Edition'ı Enterprise Edition'a Upgrade ettim sorunum çözüldü.

Bu arada Visual Studio 2005 ile hazırlanan SSIS paketlerin sadece SQL Server 2005 ile; Visual Studio 2008 ile hazırlanan paketlerin sadece SQL Server 2008 ile çalışabildiğini; benzer hatalar ile karşılaşan yada karşılaşacak değerli okuyucularıma hatırlatırım.

2009-02-02

Sysadmin Rolündeki Kullanıcıları Bulma

sysadmin rolündeki kullanıcıları aşağıdaki üç farklı sorgu ile bulabilirsiniz:

  1. SQL Server 2005  ve sonrası için:

    select name
    from sys.syslogins

    where sysadmin=1
    SQL Server 2000 için:

     select name
    from syslogins
    where sysadmin=1
  2. SQL Server 2005 ve sonrası için

    SELECT p.name AS [Name]
    FROM sys.server_principals r INNER JOIN sys.server_role_members m ON r.principal_id = m.role_principal_id
    INNER JOIN sys.server_principals p ON p.principal_id = m.member_principal_id
    WHERE ( r.type ='R' ) and (r.principal_id =3) 
  3.  EXEC sys.sp_helpsrvrolemember 'sysadmin'; -- SQL Server 2005 ve sonrasında çalışır

2009-01-14

2008 Yılı Günlük İstatistikleri

2008 yılında 36.671 tekil kişi günlüğümü ziyaret etti. Bu ziyaretçilerin 34.000'i yurt içinden 2.671'i ise yurt dışından(başta ABD, Almanya, Fransa, İngilitere ve diğer ülkelerden) ulaştı. Toplam 61.872 sayfa görüntülendi. Ziyaretçilerin %78,56'sı Internet Explorer, %19,31'i Firefox üzerinden ulaştı.

Günlüğüme 2008 yılında aşağıdaki adreslerden ulaşıldı:
SıraErişim KaynağıZiyaretYüzde
1.www.google.com/31.27575,92
2.www.mehmetguzel.net/ (direk)7.670 18,62
3.www.ceturk.com/6081,48
4.www.blogger.com/3280,80
5.whos.amung.us214 0,52
6.aydinunlu.blogspot.com700,17
7.2008.blogodulleri.com 680,17
8.www.memikyanik.com/630,15
9.www.search.com/57 0,14
10.www.facebook.com/510,12
11.www.5nk.org/500,12

İlk sırayı geçen sene olduğu gibi büyük bir farkla yine google çekiyor. Google'da bazı anahtar kelimelerle yapılan aramalarda günlüğümün ilk sıralarda gelmesi google'ın günlüğümü kayırması olsa gerek:)

Günlüğüme ziyaretçi gönderen tüm erişim kaynaklarına teşekkürlerimi iletiyorum.

2008-12-27

Bilgisayar Mühendisliği Bölümü Öğrencilerine Tavsiyeler

  • Hangi alanda çalışmak istediğinize karar verin
  • Yazılım geliştirmek istediğiniz platformu seçin
  • İhtiyacınız olan programlama dillerini ve veritabanlarını iyi öğrenin
  • Okul hayatı boyunca proje geliştirin
  • Stajlarınızı iyi şirketlerde yapın
  • Yazın muhakkak yazılım geliştiren şirketlerde ücretli/ücretsiz çalışın
  • Deneyim kazanmak için part-time çalışın.

Şimdilik benim aklıma gelenler bunlar. Yazdıklarıma eklemek isteyen arkadaşların Bilgisayar Mühendisliği bölümünde okuyan arkadaşlara katkılarını bekliyorum.

.::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.