21 Şubat 2017 Salı

T-SQL ile Tablodaki Alanların Listesini Alma

T-SQL ile Tablodaki Alanların Listesini Alma

Projelerinizde bir alana giriş sınırı koyacağınız zaman örnek Ad girişi yaptığınız bir nesne var bu nesneye Ad uzunluğu olarak girilmesini istediğiniz uzunluğu veritabanındaki alan boyutu ile eşleştirerek engelleyebilirsiniz veri giriş boyutu sınırını veritabanındaki değere göre baz almanız daha önemlidir nedeni ise daha sonra veritabanındaki bu boyut değiştiğinde projenizdende değiştirmeniz gerekmeyecektir.

T-SQL Kodu

SELECT COLUMN_NAME,
       *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'TabloAdi'
  AND COLUMN_NAME LIKE 'AlanAdi'
ORDER BY ORDINAL_POSITION
Tabloya ait açıklama dahil edilerek ve gerekli alanlar filtrelenerek oluşturulmuş daha kullanışlı sorgu altta yer almaktadır.
SELECT OBJECT_NAME(c.OBJECT_ID) TabloAdi,
       CONVERT(NVARCHAR(500), ep_tab.value) AS TabloDetayBilgi,
       AlanAdi = c.name,
       AlanDetayBilgi = ep.value,
       AlanOtomatikArtan = c.is_identity,
       t.name AS AlanTipi,
       AlanBoyutu = c.max_length,
       AlanOndalikBasamak = c.PRECISION,
       AlanVarsayilanDeger = ISNULL(sc.COLUMN_DEFAULT, '')
FROM sys.columns AS c
JOIN sys.types AS t ON c.user_type_id = t.user_type_id
JOIN sys.objects so ON so.object_id = c.object_id
LEFT OUTER JOIN sys.extended_properties ep ON ep.name = 'MS_Description'
AND ep.major_id = so.object_id
AND ep.minor_id = c.column_id
LEFT OUTER JOIN sys.extended_properties ep_tab ON ep_tab.name = 'MS_Description'
AND ep_tab.major_id = so.object_id
AND ep_tab.minor_id = 0
INNER JOIN INFORMATION_SCHEMA.COLUMNS sc ON sc.TABLE_NAME = so.name
AND sc.COLUMN_NAME = c.name
WHERE so.type = 'U'

Sql Serverda Sorgu ile Port Ve Host Bilgilerine Erişme

Sql Serverda Sorgu ile Port Ve Host Bilgilerine Erişme

Sql serverda sorgu ile port ve host bilgilerinin çoğuna erişebilirsiniz makale devamındaki sorguyu kullanarak Port, Host, Cpu, Session, User gibi bigileri elde etmiş olacaksınız.

Sql Serverda Sorgu ile Port ve Host Bilgilerine Erişme

Sql Serverda Sorgu ile Port Ve Host Bilgilerine ErişmeAlttaki sorguyu kullanarak Port, Host, Cpu, Session, User gibi bigilerini elde etmiş olacaksınız.

Sorgu


SELECT s.host_name ,
       c.local_net_address ,
       c.local_tcp_port ,
       s.login_name ,
       s.program_name ,
       c.session_id ,
       c.connect_time ,
       c.net_transport ,
       c.protocol_type ,
       c.encrypt_option ,
       c.client_net_address ,
       c.client_tcp_port ,
       s.client_interface_name ,
       s.host_process_id ,
       c.num_reads AS num_reads_connection ,
       c.num_writes AS num_writes_connection ,
       s.cpu_time ,
       s.reads AS num_reads_sessions ,
       s.logical_reads AS num_logical_reads_sessions ,
       s.writes AS num_writes_sessions ,
       c.most_recent_sql_handle
FROM sys.dm_exec_connections AS c
INNER JOIN sys.dm_exec_sessions AS s ON c.session_id = s.session_id



Sql Server NOCOUNT Komutu Kullanımı

Sql Server NOCOUNT Komutu Kullanımı

Sql Server NOCOUNT komutunu kullanarak sorgu sonucunda dönen etkilenen satır sayısı bilgisi hesaplamasını kapatarak çok azda olsa performans kazanmış olursunuz.

Sql Server NOCOUNT Komutu Kullanımı

Sql Server NOCOUNT Komutu Kullanımı
NOCOUNT komutu ile sorgu sonucunda dönen etkilenen satır sayısı bilgisine genellikle ihtiyaç duymayız. Bu komutu kullanarak etkilenen satır sayısı bilgisi hesaplamasını devre dışı bırakarak çok azda olsa performans kazanmış olursunuz.
Bazen bu bilginin geri dönmesi istenebilir bu durumda NOCOUNT komutunu sorgu içinde kullanmadan etkilenen kayıt sayısına zaten ulaşmış olacaksınız fakat çoğunlukla bu bilgi hiç kullanılmaz.

Kullanımı

Bu komutu sorgu öncesinde yazmalısınız.

Sql

Üstteki kod sayesinde Sql Server sadece komuttan sonraki sorgu için etkilenen satır sayısı hesaplamasını devre dışı bırakacaktır.

SQL İle Tüm Kayıtları Tek Satırda Birleştirme Yöntemi

SQL İle Tüm Kayıtları Tek Satırda Birleştirme Yöntemi

Bu makalemizde benim ilk defa ihtiyaç duyduğum bir şeyi sizlerle paylaşmak istiyorum programlama tarafında çok basit bir şekilde join metod’ları ile 1’den fazla kaydın aralarında ayraç konularak birleştirilmesi sağlanabiliyorken sql’de ne yazıkki direk olarak bu işi gören fonksiyon yok.

SQL İle Tüm Kayıtları Tek Satırda Birleştirme Yöntemi

Sql’de birleştirme işlemi için sizlerle paylaşmış olduğum alttaki kodu deneyerek direk olarak birden fazla kaydın aralarında virgül ayracı konularak tek satırda birleştirildiğini görebilirsiniz.

Örnek

SQL


CREATE TABLE mytable (id int identity(1,1),
                             PersonID int, Unit varchar(10))
INSERT INTO mytable VALUES (1,'Che')
INSERT INTO mytable VALUES (1,'Mat')
INSERT INTO mytable VALUES (1,'Phy')
INSERT INTO mytable VALUES (1,'a')
INSERT INTO mytable VALUES (1,'s')
INSERT INTO mytable VALUES (1,'d')
INSERT INTO mytable VALUES (1,'p')
INSERT INTO mytable VALUES (1,'o')
INSERT INTO mytable VALUES (1,'m')
INSERT INTO mytable VALUES (1,'aa')
INSERT INTO mytable VALUES (1,'ss')
INSERT INTO mytable VALUES (1,'dd')
INSERT INTO mytable VALUES (1,'f')
INSERT INTO mytable VALUES (1,'g')
INSERT INTO mytable VALUES (1,'h')
INSERT INTO mytable VALUES (1,'ff')
INSERT INTO mytable VALUES (1,'gg')
INSERT INTO mytable VALUES (1,'hh')
INSERT INTO mytable VALUES (2,'Che2')
INSERT INTO mytable VALUES (2,'Mat2')
INSERT INTO mytable VALUES (2,'Phy2')
INSERT INTO mytable VALUES (3,'Phy3')
SELECT t1.PersonID,
       Units =REPLACE(
                        (SELECT Unit AS [data()]
                         FROM mytable t2
                         WHERE t2.PersonID = t1.PersonID
                         ORDER BY Unit
                         FOR XML PATH('') ), ' ',
                                             ',')
FROM mytable t1
GROUP BY PersonID ;


DROP TABLE mytable

Sonuç

PersonIdUnits
1a,aa,Che,d,dd,f,ff,g,gg,h,hh,m,Mat,o,p,Phy,s,ss
2Che2,Mat2,Phy2
3Phy3

Aynı Kayıtları Listelemek

Aşağıdaki sorguyla kolon1, kolon2, kolon3 kolonları aynı olan satırları bulabilirsiniz

?
1
2
3
4
SELECT kolon1, kolon2, kolon3
FROM tabloadi
GROUP BY kolon1, kolon2, kolon3
HAVING COUNT(*) > 1