5 Mart 2013 Salı

Database de Kullanılmayan Stored Procedureleri Listelemek

Databaselerimiz plansız yapılan bir çok  stored procedure ile doludur.

Kullanılmayan sp leri bulmak için

SELECT p.*
 FROM sys.procedures AS p
 LEFT JOIN sys.dm_exec_procedure_stats AS s ON s.[object_id] = p.[object_id]
 WHERE s.object_id IS NULL

sorgusunu kullanabilirsiniz.
 

Stored Procedure lerde Kullanımayan Tabloları Bulmak

Günümüz ICT masraflarının en büyük gider kalemlerinden biri IO sıkıntılarını gidermek adına yaptıkları yatırımlardır.
Storage alanında teknolojinin henüz yeterli seviyeye ulaşmaması nedeniyle diskleri ne kadar verimli kullanırsak okadar az maliyet oluşturacağını biliriz.
Planlanmadan oluşturulan yazılım projelerinin oluşturmuş olduğu databaseler üzerinde çalışıyorsanız, içerisinde kaybolmak an meselesidir. kesinlikle kullanılmayan temp tabloların olduğunu bilirsiniz ama kritik bir uygulamaya dokunacağından tedirgin olabilirsiniz.
Bu durumda yapılacak işlerden biride sp lerin içerisinde kullanılmayan tabloları bulmak ve gereçekten ihtiyaç duyulmuyor olduğundan emin olduktan sonra silmektir.

Stored procedure lerde kullanılmamış tabloları aşağıdaki sorugu ile bulabilirsiniz.

select t.name, sys.objects.name foundin, sys.objects.type_desc from sys.objects t
left outer join   sys.sql_modules
inner join sys.objects on sys.objects.object_id = sys.sql_modules.object_id on sys.sql_modules.definition like '%' + t.name + '%'
where t.type = 'U' and sys.objects.name is null
order by t.name, type_desc, foundin

Not:Tablo sayınıza ve sp adedinize göre sorgunun tamamlanması uzayacaktır.

21 Kasım 2012 Çarşamba

sql server veritabanların da şuan kaç connection olduğunu listeleyen query

sql server veritabanların da şuan kaç connection olduğunu listelemek için aşağıdaki sorguyu çalıştırabilirsiniz. 

SELECT DB_NAME(dbid) as 'DbNAme', COUNT(dbid) as 'Connections' from master.dbo.sysprocesses with (nolock) WHERE dbid > 0 GROUP BY dbid

Stopping durumda olan bir windows servisini çalıştırma yöntemi

Bir servis uygulamamız veya herhangi bir windows servisi stopping durumda da ise o servisi durdurmada sorun yaşayabiliriz.
Bu durumda presesi kill edip tekrar çalıştırabiliriz.

Kill etmek için ise, command prompt a aşağıdaki komutu çalıştırıp, stopping durumda olan servisin PID (p id sini alıyoruz)

SC QUERYEX genbandSBStransfer 

Bu komutu çalıştırdığımızda aşağıdaki sonucu stopping durumda olan servis için alacağız



SERVICE_NAME:"stopping durumda olan windows service adı"
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 3  STOP_PENDING
                                (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0
        PID                : 123321
        FLAGS             :



sonrasında almış olduğumuz pid numarasını

TASKkill /F /PID 123321   şeklinde komut satırına yazıp çalıştırarak servisi stop etmiş oluyoruz. 

Stop edilen servisi services  pencersinden tekrar çalıştırabiliriz. 

29 Ağustos 2012 Çarşamba

Bir Sql Serverdan Başka Bir Serverda ki Job'u Çalıştırmak

Farklı iki instance olsun yada farklı serverlarda bulunan sql server üzerindeki jobları diğer bir serverdan çalıştırmak bazen yapmamız gereken bir senaryo olarak karşımıza çıkabilir.

Bu durumda çalıştırılacak script aşağıdaki gibidir.

declare @remotecod int
declare @job_name varchar(300)
declare @server_name varchar(200)
declare @query varchar(8000)
declare @cmd varchar(8000)

set @job_name = 'Gunluk Islemler' --Çalıştırılacak Job ismini tırnak içerisine yazıyoruz.
set @server_name = 'GTSS11'  --Çalıştırılacak Job'ın bulunduğu diğer serverın adı yada ip si.

set @query = 'exec msdb.dbo.sp_start_job @job_name = ''' + @job_name + ''''
set @cmd = 'osql -E -S ' + @server_name + ' -Q "' + @query + '"'

exec @remotecod = master.dbo.xp_cmdshell @cmd

if @remotecod <> 0 or @retcode is null
begin
print 'xp_cmdshell @retcode = '+isnull(convert(varchar(20),@retcode),'NULL @retcode')
end

24 Ağustos 2012 Cuma

Heterogeneous queries require the ANSI_NULLS and ANSI_WARNINGS options to be set for the connection. This ensures consistent query semantics. Enable these options and then reissue your query.

Sql server da bir sp yi çalıştırdığınızda "Heterogeneous queries require the ANSI_NULLS and ANSI_WARNINGS options to be set for the connection. This ensures consistent query semantics. Enable these options and then reissue your query." hatasını alırsanız çözüm için
sp tanımlama kısmında aşağıdaki düzenlemeleri yaparak sorunu giderebilirsiniz.

SET ANSI_WARNINGS ON
SET ANSI_NULLS ON
  


 

10 Ağustos 2012 Cuma

SQLIO Disk Subsystem Benchmark Tool raporunu nasıl analiz ederiz

SQLIO Disk Subsystem Benchmark Tool server üzerinde kendi oluşturduğu değişik dosya boyutları ile serverınızın I/O performans sonuçlarını raporlamaya yarayan microsoftun bir toolu dur.

http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=20163
adresinden microsoft üzerinden güvenli bir şekilde indirebilirsiniz.
Kurulumu ve kullanımı için,
http://www.brentozar.com/archive/2008/09/finding-your-san-bottlenecks-with-sqlio/
adresinden bilgi alabilirsiniz.
Sonuçlarının değerlendirmesini yapabilmek için ise aşağıdaki adresten bilgi alabilirsiniz. 
http://support.microsoft.com/kb/231619

Sağlam bir analiz toolu arıyorsanız SQLIO test sonuçları için mutlaka
http://tools.davidklee.net/sqlio/sqlio-analyzer.aspx
adresini deneyin excele dökümünüzü verip raporlar sunuyor, raporu indirebiliyorsunuz.
Analiz için çok büyük bir yükten kurtarıyor sizi.
 

23 Temmuz 2012 Pazartesi

Sql server Standby / read only durumdan çıkarmak

Restore işlemi sonucu veya herhangi bir sebeple standby duruma geçmiş olan database'inizi online yapabilmek için restore etmeniz yeterli olabilir.
aşağıdaki t-sql kullanarak çözüme ulaşabilirsiniz.

RESTORE DATABASE WITH RECOVERY

Bazı durumlarda bu yöntem işe yaramaya bilir, işe yaramadığı durumlar için, aşağıdaki bloğu deneyebilirsiniz.

RESTORE DATABASE FROM
    WITH RECOVERY;
 

SQL server da partition table'a sahip bir veritabınını restore nasıl ederiz

Sql server veritabanımızda bazen performans arttırımı veya güvenliğimiz gibi çeşitli nedenlerden dolayı başvurduğumuz partition table lar restore işleminde başımıza çeşitli sorunlar açabilir ve backupdan geri dönemeyiz.
Aşağıdaki gibi bir hata mesajı alırsanız anlayın ki partition bir tablonuz var ve .ndf dosylarını oluşturmanız kaç partition var ise her biri için ayrı path lere kopyalayıp restore sırasında path'ini göstermeniz gerekmektedir.

Restore failed for Server 'BT-MICRO\TESTSQL'.  (Microsoft.SqlServer.SmoExtended)
ADDITIONAL INFORMATION:

System.Data.SqlClient.SqlError: File 'D:\sqlserver\MSSQL10_50.TESTSQL\MSSQL\DATA\denemece.ndf' is claimed by 'DataFile1'(5) and 'netone2004_IDX'(3). The WITH MOVE clause can be used to relocate one or more files. (Microsoft.SqlServer.Smo)

21 Mayıs 2012 Pazartesi

sql server management studio ide sinde result paneli kapatmak ve açmak

Yoğun T-sql kodları kullandığımız zamanlarda sonuç penceresini kapatmak istedim, bu olayı gizleme işlemiyle gerçekleştirebileceğimi öğrendim.
Kısayol tuş kombinasyonu şu şekilde.
CTRL + R