CaniasForum
3 hafta önce
Canias Doküman Arşivi
Canias
3 hafta önce
SQL’de herkesin sık ihtiyaç duyduğu bir ihtiyacımızın en basit halini sizlerle paylaşacağım. Bir tablo alanında belli bir karakterden öncesini veya sonrasını bulabilmemiz için fonksiyon oluşturmamız gerekmektedir. Fonksiyonların scriptini sayfanın aşağısında paylaştım. Şimdi sizlere kullanımından örnek vereceğim. Sınıflar Tablomuzda ASınıfı alanında (-) işaretine göre sağını veya solunu almayı göstereceğim. SELECT dbo.ysf_KeySuffix(ASınıfı, ‘-‘) FROM Sınıflar WITH(NOLOCK) –Bu (-) karakterinden öncesini yani solunda yazanları getirir. SELECT dbo.ysf_KeyPrefix(ASınıfı, ‘-‘) FROM Sınıflar WITH(NOLOCK) –Bu (-) karakterinden sonrasını yani sağ tarafında…
Index, veri tabanı tabloları üzerinde tanımlanan ve veriye daha az işlemle daha hızlı ulaşan veri tabanı nesneleridir. Indexler hakkında klasik bir örnek olarak telefon rehberi verilebilir. Telefon rehberindeki kayıtların sıralı olmaması durumunda, yani her kaydın telefon defterinde rastgele tutulması durumunda, arayacağımız bir isim için tüm rehberi gezmemiz gerekecek. Ama rehberinizdeki kayıtlar sıralı olsaydı, aradığımız ismin rehberin ortasındaki isimden ileride mi yoksa geride mi olduğuna bakabilirdik. Bu şekilde aradığımız verileri eleyerek bir kaç adımda istediğimiz sonuca ulaşabilirdik.…
Mssql de server performansına bakmak için aşağıdaki script çalıştırmak yeterli olur. SELECT SPID = er.session_id, STATUS = ses.status, [Login] = ses.login_name, Host = ses.host_name, BlkBy = er.blocking_session_id, DBName = DB_NAME(er.database_id), CommandType = er.command, SQLStatement = SUBSTRING( qt.text, er.statement_start_offset / 2, ( CASE WHEN er.statement_end_offset = -1 THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2 ELSE er.statement_end_offset END – er.statement_start_offset ) / 2 ), ObjectName = OBJECT_SCHEMA_NAME(qt.objectid, dbid) + ‘.’ + OBJECT_NAME(qt.objectid, qt.dbid), ClientAddress = con.client_net_address, ElapsedMin = (er.total_elapsed_time…
Herhangi bir tablomuzun tüm alan isimlerini tek satırda yanyana virgül ile ayrılarak alma scriptini sizlerle paylaşıyorum. DECLARE @Fld nvarchar(max) SELECT @Fld = STUFF(( SELECT name FROM sys.all_columns TBL (NOLOCK) WHERE object_id = OBJECT_ID('TABLOADI') AND is_computed = 0 AND is_identity = 0 ORDER BY name FOR XML PATH('') ), 1, 1, '') SET @Fld = REPLACE(REPLACE(REPLACE(@Fld, '</name><name>',','), 'name>',''), '</',',') SET @Fld = SUBSTRING(@Fld, 0, LEN(@Fld)) SELECT @Fld
Bazı durumlarda, programcılar belirli bir satırı bulmak ve yalnızca bu satır için bir şeyler yapmak için tablo üzerinde döngüler yapar. TROIA’da LOCATERECORD komutu sayesinde programcıların bir satır bulmak için döngü yapmasına gerek yoktur. Bu komut verilen parametrelere göre doğru satırı bulur ve tablodaki aktif satır imlecini değiştirir. LOCATERECORD komutu verilen parametrelerle doğru satırı bulamazsa, aktif satırı değiştirmez ve SYS_STATUS’u 1’e ayarlar, bu nedenle programcı verilen parametrelere sahip bir satır olup olmadığını kontrol eder. İşte LOCATERECORD komutunun temel ve en…