2009-12-09

text, ntext ve image veri tipleri

Microsoft, SQL Server'ın yeni çıkacak sürümlerinde text, ntext ve image veri tiplerini kaldıracağını bildiriyor. Bu veri tiplerinin yerine varchar(max), nvarchar(max) ve varbinary(max) veri tiplerini kullanabilirsiniz.

2009-09-03

SQL Server 2005/2008 Registered Server Listesi

SQL Server 2005/2008 de registered server isimlerini aşağıdaki path ve dosyalarda tutuluyor:

SQL Server 2005:
C:\Documents and Settings\\Application Data\Microsoft\Microsoft SQL Server\90\Tools\Shell\RegSrvr.xml

SQL Server 2008:
C:\Documents and Settings\\Application Data\Microsoft\Microsoft SQL Server\100\Tools\Shell\RegSrvr.xml

Bu listeler özellikle benim gibi SQL Server'ınızı tekrardan kurmak zorunda kalmışsanız çok işinize yarayacaktır.

2009-08-30

SQL Server Sistem Collation'ını Değiştirme

Komut satırından aşağıdaki komut yardımıyla SQL Server'ınızın sistem collation'ını değiştirebilirsiniz:

Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=MSSQLSERVER /SQLSYSADMINACCOUNTS=sa / SAPWD=Passw0rd /SQLCOLLATION=DegistirilecekCollation

Not: master system veritabanı değiştiği için tüm login, yetkiler vs bilgiler uçar(benden uyarması:))!

2009-08-25

SQL Server ile Bilgisayar Adını Bulma

SQL Server üzerinden xp_getnetname sp'ü ile server ismini alabilirsiniz. Bu sp yararlı bir undocumented extended sp olup; aşağıdaki gibi kullanabilirsiniz:

EXEC master.dbo.xp_getnetname

2009-08-19

Disklerdeki Boş Yer Büyüklüğünü Bulma

Server'ınıza bağlı disklerdeki boş yeri SQL Server üzerinden aşağıdaki sp ile bulabilirsiniz:

EXEC master.dbo.xp_fixeddrives

2009-08-16

Undocumented System Views

SQL Server 2005'te dökümante edilmemis sistem view'ları aşağıdaki gibidir:

Base Table Description
sys.sysschobjs : Exists in every database. Each row represents an object in the database.
sys.sysbinobjs : Exists in every database. Contains a row for each Service Broker entity in the database. Service Broker entities include the following:
Message type Service contract
Service The names and types use binary collation that is fixed.

sys.sysclsobjs : Exists in every database. Contains a row for each classified entity that shares the same common properties that include the following:
Assembly
Backup device
Full-text catalog
Partition function
Partition scheme
File group
Obfuscation key

sys.sysnsobjs : Exists in every database. Contains a row for each namespace-scoped entity. This table is used for storing XML collection entities.
sys.syscolpars : Exists in every database. Contains a row for every column in a table, view, or table-valued function. It also contains rows for every parameter of a procedure or function.
sys.systypedsubobjs : Exists in every database. Contains a row for each typed subentity. Currently, only parameters for partition function fall into this category.
sys.sysidxstats : Exists in every database. Contains a row for each index or statistics for tables and indexed views
Note:
Every index (except heap) is associated with a statistic that has the same name as the index.
sys.sysiscols : Exists in every database. Contains a row for each persisted index and statistics column.
sys.sysscalartypes : Exists in every database. Contains a row for each user-defined or system type.
sys.sysdbreg : Exists in the master database only. Contains a row for each registered database.
sys.sysxsrvs : Exists in the master database only. Contains a row for each local, linked, or remote server.
sys.sysrmtlgns : This system base table exists in the master database only. Contains a row for each remote login mapping. This is used to map incoming logins that claim to be coming from a corresponding server to an actual local login.
sys.syslnklgns : Exists in the master database only. Contains a row for each linked login mapping. Linked login mappings are used by remote procedure calls and distributed queries that emanate from a local server out to a corresponding linked server.
sys.sysxlgns : Exists in the master database only. Contains a row for each server principal.
sys.sysdbfiles : Exists in every database. If the column dbid is zero, the row represents a file that belongs to this database. In the master database, the column dbid can be nonzero. When this is the case, the row represents a master file.
sys.sysusermsg : Exists in the master database only. Each row represents a user-defined error message.
sys.sysprivs : Exists in every database. Contains a row for each database- or server-level permission.
Note: Server-level permissions are stored in the master database.
sys.sysowners : Exists in every database. Each row represents a database principal.
sys.sysobjkeycrypts : Exists in every database. Contains a row for each symmetric key, encryption, or cryptographic property associated with an object.
sys.syscerts : Exists in every database. Contains a row for each certificate in a database.
sys.sysasymkeys : Exists in every database. Each row represents an asymmetric key.
sys.ftinds : Exists in every database. Contains a row for each full-text index in the database.
sys.sysxprops : Exists in every database. Contains a row for each extended property.
sys.sysallocunits : Exists in every database. Contains a row for each storage allocation unit.
sys.sysrowsets : Exists in every database. Contains a row for each partition rowset for an index or a heap.
sys.sysrowsetcolumns : Exists in every database. Contains a row for each column, of partition rowset.
sys.syshobts : Exists in every database. Contains a row for each heap or B-tree (HOBT) that can host multiple rowsets
sys.syshobtcolumns : Exists in every database. Contains a row for each column of a HOBT.
sys.sysserefs : Exists in every database. Contains a row for each general storage engine metadata reference.
sys.sysrowsetrefs : Exists in every database. Contains a row for each index to rowset reference.
sys.syslogshippers : Exists in the master database only. Contains a row for each database mirroring witness.
sys.sysremsvcbinds : Exists in every database. Contains a row for each remote service binding.
sys.sysconvgroup : Exists in every database. Contains a row for each service instance in Service Broker.
sys.sysxmitqueue : Exists in every database. Contains a row for each Service Broker transmission queue.
sys.sysdesend : Exists in every database. Contains a row for each sending endpoint of a Service Broker conversation.
sys.sysdercv : Exists in every database. Contains a row for each receiving endpoint of a Service Broker conversation.
sys.sysendpts : Exists in the master database only. Contains a row for each endpoint created in the server.
sys.syswebmethods : Exists in the master database only. Contains a row for each SOAP-method defined on a SOAP-enabled HTTP endpoint that is created in the server.
sys.sysqnames : Exists in every database. Contains a row for each namespace or qualified name to a 4-byte ID token.
sys.sysxmlcomponent : Exists in every database. Each row represents an XML schema component.
sys.sysxmlfacet : Exists in every database. Contains a row for each XML facet (restriction) of XML type definition.
sys.sysxmlplacement : Exists in every database. Contains a row for each XML placement for XML components.
sys.syssingleobjrefs : Exists in every database. Contains a row for each general N-to-1 reference.
sys.sysmultiobjrefs : Exists in every database. Contains a row for each general N-to-N reference.
sys.sysobjvalues : Exists in every database. Contains a row for each general value property of an entity.
sys.sysguidrefs : Exists in every database. Contains a row for each GUID classified ID reference.

2009-08-15

En Son Alınan Backuplar(Last Backups)

SQL Server veritabanlarının en son alınan backupların başlangıç ve bitiş tarih ve saatlerini aşağıdaki SQL kodu ile alabilirsiniz:

SELECT user_name ,
database_name ,
server_name ,
backup_start_date ,
backup_finish_date ,
Type
FROM msdb.dbo.backupset
WHERE backup_set_id IN(SELECT MAX(backup_set_id) FROM msdb.dbo.backupset
WHERE TYPE in ('D','I')
GROUP BY database_name)
AND database_name IN(SELECT name FROM master.dbo.sysdatabases)
ORDER BY database_name

2009-08-05

Regaib Kandiliniz Mübarek Olsun

Regaib kandilinizi tebrik eder; kandilin hayırlara vesile olmasını Cenab-ı Hak'tan niyaz ediyorum.

2009-08-03

DBCC SHOWCONTIG

Tablo ve viewlarda bulunan veri ve indexlere ait fragmantasyonları aşağıdaki kod ile görebilirsiniz:

dbcc showcontig('TabloAdi') with ALL_INDEXES,TABLERESULTS , FAST

2009-07-27

T-SQL Best Practices

  1. select cümlelerinizde muhakkak field isimlerini açık bir şekilde yazın; select * kullanmaktan kaçının
  2. Mecbur kalmadıkça UNION kullanmayın. UNION yerine UNION ALL kullanmak daha performanslıdır.
  3. Yine mecbur kalmadıkça DISTINCT i kullanmayın. Çünkü DISTINCT ın yaptığı sıralama ve çift kayıtları tek e indirmektir.
  4. sp içerisinde tek bir kayıt döndürecekseniz bu kaydı select ile döndürmek yerine OUTPUT parametresi olarak verin.
  5. Zorunlu olmadıkça ORDER BY ifasesinden kaçının

2009-07-23

Login Failedleri Alma

/*
Son bir günde alınan login failed leri aşağıdaki SQL kodları ile alabilirsiniz.
*/

CREATE TABLE #tmploginfailed (
LogDate smallDATETIME,
ProcessInfo NVARCHAR(50),
[Text] NVARCHAR(MAX))
go


insert into #tmploginfailed
EXEC xp_readerrorlog 0,1,'login failed','login failed'

go

select cast(cast(LogDate as varchar(12)) as smalldatetime) as Date ,Text,count(1) as AttemptCount
from #tmploginfailed
where LogDate>=getdate()-1
group by cast(cast(LogDate as varchar(12)) as smalldatetime),text
order by count(1) desc,cast(cast(LogDate as varchar(12)) as smalldatetime)
go

drop table #tmploginfailed
go

2009-04-11

Blog Ödülleri 2009'a Katıldım

Günlüğüm Blog Ödülleri 2009'da Teknoloji kategorisinde yarışmaya katılıyor. Dilediğiniz kategorilerde iyi olduğuna inandığınız günlüklere 11-26 Nisan tarihleri arasında oy verip destek olabilirsiniz.

Tüm günlüklere başarılar diliyorum.

2009-04-08

SQL Server 2008 SP1 Yayında

SQL Server 2008'in beklenen Service Pack 1'i nihayet yayında. SQL Server 2008 SP1'i microsoft'tan indirebilirsiniz(Build 10.00.2531.00).

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.

.::YASAL UYARI::.

©2004-2018 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.