Sayfalar

30 Aralık 2014 Salı

MsSQL Database Index Düzeltme


declare @name varchar(100)
BEGIN
DBCC SHOWCONTIG
DECLARE reindex CURSOR FOR
select name from sysobjects where type='U' order by name
OPEN reindex
FETCH NEXT FROM reindex INTO @name
WHILE @@FETCH_STATUS =0
BEGIN
DBCC DBREINDEX (@name, '', 90)
print @name + ' duzenlendi....'
FETCH NEXT FROM reindex INTO @name
END
CLOSE reindex
DEALLOCATE reindex
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE
DBCC SHOWCONTIG
END

6 Aralık 2014 Cumartesi

netopenx exception visual studio


Netsis OS Yükleyici Kilidi Hatası ve Çözümü

netopenx dll'i ile visual studio üzerinde program geliştirmeye çalıştığınızda Aşağıdaki Hatayı Alabilirsiniz;


"OS Yükleyici kilidi içinde yönetilen yürütme girişiminde bulunuluyor. DllMain veya görüntü başlatma işlevi içinde yönetilen kod çalıştırma girişiminde bulunmayın, aksi durumda uygulamanın kilitlenmesine neden olabilir."




Uygulamanızı Build Ettikten Sonra bin/Debug klasörü içerisindeki .exe'den Çalıştırabilirsiniz.
Visual Studio "Debug" Menüsünden "Exceptions\Managed Debugging Assistans" içerisindeki LoaderLock Property'sinin "Thrown" Özelliğini False Olarak Değiştirebilirsiniz.,



23 Kasım 2014 Pazar

Kodla Backup Almak

BACKUP DATABASE [database adı] TO
DISK = N''H:\BACKUP\kaydedilecek dosya ismi ve yeri.bak''
WITH NOFORMAT, NOINIT,  NAME = N''kaydedilecek dosya ismi'',
SKIP, REWIND, NOUNLOAD, COMPRESSION,  STATS = 10

12 Kasım 2014 Çarşamba

MS SQL de XML okuma

DECLARE @idoc int
DECLARE @doc xml
DECLARE @TEMPSQL NVARCHAR(2000)
DECLARE @DOCPATH NVARCHAR(2000)
 set @DOCPATH = ‘C:\param.xml’
 SET @TEMPSQL = ‘SET @doc = (SELECT * FROM OPENROWSET(bulk ”’ + @DOCPATH + ”’,single_blob) as doc)’
 EXEC SP_EXECUTESQL @TEMPSQL, N’@doc xml OUTPUT’,
@doc = @doc OUTPUT
 EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
 SELECT    * FROM      OPENXML (@idoc, ‘/ParametreBilgileri/OzelParametreler/PRGOZELPRM/Kayit_1′,2)
WITH (GRUPKOD  varchar(20),  ANAHTAR varchar(20)) WHERE GRUPKOD=‘BANKA’
EXEC sp_xml_removedocument @idoc

SQL de Table Özelliklerini Öğrenme



Procedure ;

create proc getTableSize

as

Declare @T TABLE(name varchar(1000),
[rows] varchar(100),
[reserved] varchar(100),
[data] varchar(100),
[index_size] varchar(100),
[unused] varchar(100))

DECLARE P1 CURSOR FOR
SELECT NAME FROM SYS.OBJECTS WHERE TYPE='U'
OPEN P1
DECLARE @N AS VARCHAR(100)
FETCH NEXT FROM P1
INTO @N
WHILE @@FETCH_STATUS=0
BEGIN
INSERT INTO @T
exec sp_spaceused @N

FETCH NEXT FROM P1
INTO @N
END
CLOSE P1
DEALLOCATE P1
SELECT * FROM @T ORDER BY name ASC


-------------------------------------------------------


Stored prosedürü kullanmak için;


exec getTableSize

1 Kasım 2014 Cumartesi

Ms SQL Server Versiyon Öğrenme

SELECT SERVERPROPERTY('productversion') Version,
SERVERPROPERTY ('productlevel') SP,
SERVERPROPERTY ('edition') Edition

30 Ekim 2014 Perşembe

SQL - FETCH – CURSOR YAPISI


CURSOR NEDİR ?

Veri tabanı nesneleri içinde; kayıtlar arasında , satır bazlı hareket etmemizi sağlayan mekanizmadır.
- Bu sayede , istediğimiz bir satıra hareket ederek sonucunu alabiliriz.
- Aktif kaydı tespit edebiliriz.
- Aktif kayıtta değişiklik yapabiliriz.
- Script , Stored Prodecure ve Trigger yapılarında kullanabiliriz.
- Transact- SQL ifadeleri ile bir Cursor oluşturabileceğimiz gibi Database API fonksıyonlarını da kullanabiliriz.Bu Database API fonksiyonları olarak ADO , OLEDB ve ODBC yapılarını tercih edebiliriz.

FETCH ve DİĞER ÖZELLİKLER:

Satır hareketlerini yöneten , bir Cursor ifadesidir.
-Fetch First : İlk satıra gider.
-Fetch Next : Bir sonraki satıra gider.
-Fetch Prior : Bir önceki kayıda gider.
-Fetch Last : Bir sonraki kayıda gider.
-Fecth ABSOLUTE n: Burada “n” olarak ifade edilen sayılsal bir değerdir ve kaç kayıt gidileceğini belirler.ABSOLUTE ifadesi;bu kayıt hareketlerinin her zaman ilk kayıttan başlamasını sağlar.

Fetch RELATIVE n : Yukarıdaki ifadeden farklı olarak,kayıt ilerleme miktarını o an bulunan kayıda göre yapar.

Ayrıca Cursor içinde kullanılan Forward-Only ifadesi ile sadece ileri gitme işlemi gerçekleştirilir.Bu yapıda salt Fetch Next çalışır.Eğer tüm Fetch özelliklerini kullanmak istersek ; Scrollable yapısını tercih etmemiz gerekir.Bu,tüm Fetch seçeneklerini destekler.(Sadece Dynamic Cursor ile beraber Fetch Absolute kullanımına destek vermez.)

Bir Cursor OPEN ifadesi ile açılırken , CLOSE ifadesi ile de kapanır.

Örnekler;

USE ("Databese adı")
GO

DECLARE (Tablo adı) CURSOR FOR
SELECT (Alanlar)
FROM (Tablo adı)
ORDER BY AGE ASC

OPEN (Tablo adı)
FETCH NEXT FROM (Tablo adı)
WHILE @@FETCH_STATUS=0
BEGIN
FETCH NEXT FROM (Tablo adı)
END

CLOSE (Tablo adı)
DEALLOCATE (Tablo adı)

SQL de database bağlantılarını görüntüleme

 SELECT spid ProcessId, blocked as kilitleyenId, waittime/1000 as BeklemeSuresi_sn,
                    hostname,cmd, loginame,nt_username,program_name, *
                    from master.dbo.sysprocesses
                    where spid > 50
                    and dbId=(Select database_id from master.sys.databases where name='YORUKOGLU2014' )
                    --and blocked > 0 (istersek sadece database i kilitleyen bağlantıları görebiliriz)
                    order by  master..sysprocesses.spid desc, master..sysprocesses.waittime desc

27 Ekim 2014 Pazartesi

SQL DATETIME FORMATS

  1. SELECT convert(datetime, 'Oct 23 2012 11:01AM', 100) -- mon dd yyyy hh:mmAM (or PM)
  2. SELECT convert(datetime, 'Oct 23 2012 11:01AM') 
  3. SELECT convert(datetime, 'Oct 23 12 11:01AM', 0) -- mon dd yy hh:mmAM (or PM)
  4. SELECT convert(datetime, 'Oct 23 12 11:01AM') 
  5. SELECT convert(datetime, '10/23/2016', 101) -- mm/dd/yyyy
  6. SELECT convert(datetime, '2016.10.23', 102) -- yyyy.mm.dd
  7. SELECT convert(datetime, '23/10/2016', 103) -- dd/mm/yyyy
  8. SELECT convert(datetime, '23.10.2016', 104) -- dd.mm.yyyy
  9. SELECT convert(datetime, '23-10-2016', 105) -- dd-mm-yyyy
  10. SELECT convert(datetime, '23 OCT 2016', 106) -- dd mon yyyy
  11. SELECT convert(datetime, 'Oct 23, 2016', 107) -- mon dd, yyyy
  12. SELECT convert(datetime, '20:10:44', 108) -- hh:mm:ss
  13. SELECT convert(datetime, 'Oct 23 2016 11:02:44:013AM', 109
  14. SELECT convert(datetime, '10-23-2016', 110) -- mm-dd-yyyy
  15. SELECT convert(datetime, '2016/10/23', 111) -- yyyy/mm/dd
  16. SELECT convert(datetime, '20161023', 112) -- yyyymmdd
  17. SELECT convert(datetime, '23 Oct 2016 11:02:07:577', 113) -- dd mon yyyy hh:mm:ss:mmm
  18. SELECT convert(datetime, '20:10:25:300', 114) -- hh:mm:ss:mmm(24h)
  19. SELECT convert(datetime, '2016-10-23 20:44:11', 120) -- yyyy-mm-dd hh:mm:ss(24h)
  20. SELECT convert(datetime, '2016-10-23 20:44:11.500', 121) -- yyyy-mm-dd hh:mm:ss.mmm
  21. SELECT convert(datetime, '2008-10-23T18:52:47.513', 126) -- yyyy-mm-ddThh:mm:ss.mmm
  22. SELECT convert(datetime, STUFF(STUFF('31012016',3,0,'-'),6,0,'-'), 105)
  23. SELECT convert(datetime, '10/23/16', 1) -- mm/dd/yy
  24. SELECT convert(datetime, '16.10.23', 2) -- yy.mm.dd
  25. SELECT convert(datetime, '23/10/16', 3) -- dd/mm/yy
  26. SELECT convert(datetime, '23.10.16', 4) -- dd.mm.yy
  27. SELECT convert(datetime, '23-10-16', 5) -- dd-mm-yy
  28. SELECT convert(datetime, '23 OCT 16', 6) -- dd mon yy
  29. SELECT convert(datetime, 'Oct 23, 16', 7) -- mon dd, yy
  30. SELECT convert(datetime, '20:10:44', 8) -- hh:mm:ss
  31. SELECT convert(datetime, 'Oct 23 16 11:02:44:013AM', 9)
  32. SELECT convert(datetime, '10-23-16', 10) -- mm-dd-yy
  33. SELECT convert(datetime, '16/10/23', 11) -- yy/mm/dd
  34. SELECT convert(datetime, '161023', 12) -- yymmdd
  35. SELECT convert(datetime, '23 Oct 16 11:02:07:577', 13) -- dd mon yy hh:mm:ss:mmm
  36. SELECT convert(datetime, '20:10:25:300', 14) -- hh:mm:ss:mmm(24h)
  37. SELECT convert(datetime, '2016-10-23 20:44:11',20) -- yyyy-mm-dd hh:mm:ss(24h)
  38. SELECT convert(datetime, '2016-10-23 20:44:11.500', 21) -- yyyy-mm-dd hh:mm:ss.mmm 

SQL DateTime Functions

SQL de kullandığımız bazı Date/Time Function' ları


GETDATE()         Geçerli tarih ve saati döndürür
GETDATE()---> '2014-10-27 15:18:18.043'

DATEPART()      Bir tarih / zamanın tek bir kısmını döndürür
DATEPART(DAY,'2014-10-27 15:18:18.043') ---> 10

DATEADD()        Bir tarihten itibaren belirli bir zaman aralığı çıkarıp ekler
DATEADD(DAY,'10','2014-10-27 15:18:18.043') --->  2014-11-04 00:00:00.000

DATEDIFF()        İki tarih arasındaki zamanını döndürür
DATEDIFF(DATEDIFF(DAY,'10','2014-10-27 15:18:18.043')) ---> 10


CONVERT()        Bir Tarih/zamanın formatını değiştirir
DATEADD(DAY,10,'2014-10-27 15:18:18.043',102) ---> 2014.10.25