SQL Server 2012 – Code Snippet

 

SQL Server 2012 “Denali” ile gelen  yeni özelliklerden biride “Code Snippets” dır.

Önceki versiyonlarda bulunan Template Explorer özelliğinin geliştirilmiş hali olan bu özellik ile SQL cümlelerini taslak olarak saklayabiliyor ve daha sonra çağırıp kullanabiliyorsunuz. Özellikle Yazılım geliştiren arkadaşların oldukça işine yarayacak güzel bir özellik.

Intellisense destekli  Code Snippets özelliğinin Network desteği sayesinde, Snippet dosyalarını Ağ üzerinde saklayabilir, çalışma arkadaşlarınız ile ortak kullanabilirsiniz.

Kayıtlı Code Snippets ‘ı çağırmak için;
“Edit”-> “IntelliSense”  -> “Insert Snippet…” menü yolunu izleyebilir  veya
“Ctrl+K + X” tuş kombinasyonu ile çağırabilirsiniz.



Açılan Insert Snippet penceresinde kategori seçimi ve IntelliSense yardımıyla sistemde önceden tanımlı olan veya kendi oluşturduğunuz Kod parçasına kolayca ulaşabilirsiniz.


Açılan Snippet üzerinde;
Tab tuşu ile sonraki  “replacement”e ,
“Shift +Tab” ile de önceki “replacement”a  geçebiliyorsunuz.

Yeni Snippet eklemek için;
Aşağıdaki gibi bir Xml içeriği Gri renkli değerleri  girerek, dosya uzantısı  “.snippet “ olacak şekilde kaydedip,
“Tools” -> “Code Snippet Manager”  yolu ile açılan ekranda “Import” butonu içeri alabilir veya  “Add” butonu  ile dosyanın bulunduğu dizini Snippets dizini olarak atayabilirsiniz.

.snippet uzantılı XML dosyası içeriği örneği:

<?xml version=”1.0″ encoding=”utf-8″ ?>

<CodeSnippets xmlns=”http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet”>

<CodeSnippet Format=”1.0.0″> <Header><Title>ilkon</Title>

<Shortcut></Shortcut>

<Description>Tablonun ilk 10 kaydını getirir.</Description>

<Author>Orhan AKDOĞAN</Author>

<SnippetTypes>

<SnippetType>Expansion</SnippetType>

</SnippetTypes>

</Header>

<Snippet>

<Declarations>

<Literal>

<ID>tabloadi</ID>

<ToolTip>Tablo Adını Giriniz</ToolTip>

<Default>tabloadi</Default>

</Literal>

</Declarations>

<Code Language=”SQL”>

<![CDATA[Select TOP 10 * From $tabloadi$]]>

</Code>

</Snippet>

</CodeSnippet>

</CodeSnippets>

Not : Yukarıdaki örnekte de görüldüğü gibi Sorgu içerisindeki Replacement olarak ifade edilen değişebilir yerleri,  $değişken$ formatında olacak şekilde yazıyoruz ve her Replacement için “Literal” tag grubu eklememiz gerekiyor.
Yukarıdaki snippet a ait ekran görüntüleri:

Code Snippets oluşturma işini daha pratik hale getirmek için bir Add-on geliştirdim.
Bu uygulama ile .snippet uzantılı dosyayı en pratik şekilde oluşturabilirsiniz..

Aslında Snippet Generetor adında bir uygulama bulup kullanmaya başlamıştım fakat uygulamanın Replacament ekleme özelliğinin olmadığını görünce oturup yazayım dedim. Visual Studio vb. farklı bir uygulamaya ihtiyaç duymayan Replacement destekli ilk ve şu an için tek Snippet kaydedici Tool budur 🙂

Aşağıdaki Linkten indirebilirsiniz:
http://orhan.ws/download/SaveSnippet.rar

SQL Server 2012 “Denali” – Startup Parameters

SQL Server 2012 ile Servis parametrelerinin yapılandırılması daha pratik bir yapıya kavuşmuş;

başlangıç parametreleri

Listede master data ve log dosya pathleri ile error log
Varsayılan Başlangıç Parametreleri olarak bulunurlar.

-d master_file_path
-e error_log_path
-l master_log_path

Yeni Servis Başlangıç parametresi eklemek için;

1- SQL Server Configuration Manager uygulaması içerisinden “SQL Server Services” menüsüne girilir.

2- Sağ paneldeki service  -SQL Server (<instance_name>)- üzerinde sağ tıklayıp Properties denilir.

3- Startup Parameters tabı üzerinde, “Specify a startup parameter” kutusuna parametre girilir ve Add butonuna tıklanır.

4- Ok denilir ve Database Engine restart yapılır.

Kullanılan parametrelere örnek verecek olursak;

-x Parametresi bazı izleme özelliklerini devre dışı bırakır, nedir bunlar:
Performance monitor counters, “Keeping CPU time” ve “cache-hit ratio” istatistikleri, DBCC SQLPERF komutu,Dynamic Management Views vb.

-m Parametresi servisi Single User mode da açar.

Diğer parametreler hakkında detaylı bilgi için;
http://msdn.microsoft.com/en-us/library/ms190737.aspx

SQL Server 2012 – Management Studio – Moveable Query Panel

Harika bir özellik.
SQL Server 2012 de, Sorgu penceresini, Management Studio Ana ekranından çıkarabiliyoruz.
Aynı anda çok sorgu penceresiyle çalışan, özelliklede iki ekran kullanmaya alışmış kişiler için
çok fayda sağlayan bir özellik.

Aşağıda ikinci ekrana taşınmış bir denali sorgu paneli görünüyor.

SQL SERVER 2012 – Clipboard Ring – Ctrl + Shift + V

Visual Studio dan alışık olduğumuz Clipboard Ring özelliği, SQL Server 2012 (Denali)  Management Studio – Query Editor ile de karşınızda.

SQL SERVER 2012 de, Clipboard Ring özelliği ile “Ctrl + C” veya “Ctrl + X” ile Clipboard’a aldığınız değerler içerisinde,
Ctrl + Shift + V ile geriye doğru gidebiliyor ve Ctrl + V ile halkada gelinen noktayı yapıştırabiliyorsunuz.

Oracle – Session Monitor SQL

SELECT 
s.SCHEMANAME,
s.USERNAME,
UPPER(s.PROGRAM) PROGRAM,
 s.MACHINE,
 s.OSUSER,
s.MODULE
FROM V$SESSION S, V$PROCESS p,
      (SELECT DISTINCT SID, SERIAL#, AUTHENTICATION_TYPE, CLIENT_CHARSET, CLIENT_VERSION FROM V$SESSION_CONNECT_INFO) SCI
 WHERE  ( (s.USERNAME is not null) and (NVL(s.osuser,'x') <> 'SYSTEM') and (s.type <> 'BACKGROUND') )
and  p.addr(+) = s.paddr
and  sci.sid = s.sid and sci.serial# = s.serial#
order by "PROGRAM", OWNERID

Oracle – Tekrar eden kayıtları silmek

Silinecek Tekrarları Listelemek için;

SELECT * FROM tabloadi x
WHERE x.rowid > ( SELECT MIN(y.rowid) FROM tabloadi y WHERE x.tekrarfield= y.tekrarfield)

Tekrarları Silmek için;

DELETE FROM  tabloadi x
WHERE x.rowid > ( SELECT MIN(y.rowid)  FROM tabloadi y  WHERE x.tekrarfield = y.tekrarfield );

Oracle – Tablo Veri Boyutları (MB)

SELECT
owner AS "OWNER",
segment_name AS "OBJECT",
partition_name AS "PARTITION",
tablespace_name AS "TABLESPACE",
segment_type AS "TYPE",
ROUND (bytes / 1024 / 1024, 2)  AS "Boyut(MB)"
FROM dba_segments
WHERE segment_type IN ('TABLE', 'TABLE PARTITION')
AND owner = 'ABALI2011'
Order by ROUND (bytes / 1024 / 1024, 2) desc

C# – Exchange 2010 Impersonation

Exchange 2010 üzerinden mail atarken Impersonation kullanmak gerekiyorsa, ilk olarak Impersonation Mail adresine Exchange Console dan aşağıdaki komut satırı ile yetki açmalısınız;

ew-ManagementRoleAssignment -Name:_suImpersonateRoleAsg -Role:ApplicationImpersonation -User:'mail@domain.com'

 

Exchange 2010 üzerinden Impersonation kullanarak mail göderimi için servis yapılandırılmasını da aşağıdaki method ile sağlayabilirsiniz.

using Exchange2010;

static ExchangeServiceBinding service = new ExchangeServiceBinding();

    public static void InitMSExchange(string mailadres,string DomainName,string ImperUser,string imperPass, string serviceurl )
    {
        service.RequestServerVersionValue = new RequestServerVersion();
        service.RequestServerVersionValue.Version = ExchangeVersionType.Exchange2010;
        ServicePointManager.ServerCertificateValidationCallback = delegate(Object obj, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
        {
            return true;
        };
        service.EnableDecompression = true;
        service.UseDefaultCredentials = true;
        service.PreAuthenticate = true;
        service.Credentials = new NetworkCredential(ImperUser, imperPass, DomainName);
        service.Url = serviceurl ;
        //Imporsonate
        service.ExchangeImpersonation = new ExchangeImpersonationType()
        {
            ConnectingSID = new ConnectingSIDType()
            {
                ItemElementName = ItemChoiceType.PrimarySmtpAddress,
                Item = mailadres
            }
        };
    }

C# – Active Directory den attribute okuma

Csharp ile Active Directory den herhangi bir bilgiyi okumak için aşağıdaki pratik methodu kullanabilirsiniz;

Aşağıdaki Örnek de, IIS tarafında Windows Authentication şeklinde yapılandırılmış bir asp.net uygulamasında,
sayfayı görüntüleyen user ın mail adresi alınmaktadır.

//"System.DiretoryServices"  .NET Referansı projeye dahil edildikten sonra
using System.DirectoryServices;

 

//Kullanıcının mail adresini alır
string loginusername=
HttpContext.Current.User.Identity.Name.ToString().Replace("DOMAINADI\\","");
string mailadres=
ADdeger("DOMAINADI", loginusername, "mail");

 

public string ADdeger(string DomainName,string accountname,string attribute)
{
    DirectoryEntry entry = new DirectoryEntry("LDAP://"+DomainName);
    DirectorySearcher Dsearch = new DirectorySearcher(entry);
    Dsearch.Filter = "(&(sAMAccountName=" + accountname + "))";
    if(Dsearch.FindAll()[0].Properties.Contains(attribute))
    {return  Dsearch.FindAll()[0].Properties[attribute][0].ToString() ;}
    else {return  string.Empty;}
}

Web Configde System.Web altına

 

satırını eklyerek impersonate kullanmalısınız.

Kopya Mailleri Silme

Belli nedenlerle Outlookda ki maillerimiz, Görevler, Takvim veya kişilerin birden fazla olması durumu
ile karşılaşabiliriz, bunun kolay ve free çözümünü arıyorsanız doğru sayfadasınız;

1- Outlookda ALT+F11 yaparak VBA sayfasına geçelim.

2- Menüden “File” ==> “Import” ile
buradan indirebileceğiniz rar dosyası içeriğinde bulunan “ProgressBox.frm”, “OutlookContext.cls”   ve “OutlookMacro.bas”
dosyalarını sırayla içeri alalım.

3-ALT+F11 yaparak outlook ana ekrana dönelim.

4-Alt+F8 ile kayıtlı makroları listesinden “TekrarSil” i seçelim ve çalıştır diyelim.

Devamı ekran görüntülerinde, yorumsuz;