0

MS Sql Database Mail Kurulumu

Merhaba,
Bazen sql serverda yapılan toplu işlemleri (yedek alma, bakımların yapılması, dataların çekildiğini bilgilendirmek gibi) tek tek kontrol etmek yerine bilgilerndirme amaçlı mail atarız. Bunun için mail ayarlarının nasıl yapılacağını aşağıdaki görsellerle göstereceğim.

Adım 1. Microsoft SQL Server Management Studio açın
Adım 2. Mevcut instance ‘nizinin altında Management ‘in altına giriniz.

Adım 3. Database Mail ‘e sağ tıklayınız.

Adım4. Açılan kurulum sihirbazında ilk (1) seçenek yeni bir profil yaratmak için ikinci (2) seçenek mevcut ayarlarınızı değiştirmek yada silmek için. ilk seçeneği işaretleyip next’e tıklayarak sonraki adıma ilerleyin..

Adım 5. Bu adımda profile bir isim verip Add düğmesine tıklayınız.

Adım 6. Mail ayarlarını, kendi Gmail yada farklı mail servislerine göre doldurun.

Adım 7. Smtp ayarlarına yapmış olduğunuz email ayarları geldiyse sonraki adıma geçiniz.

Adım 8. Eklemiş olduğunuz profili public olarak işaretleyip sonraki adıma geçiniz.

Adım 9. Sistem parametre ayarlarını default ayarlarda bırakıp devam ediniz.

Adım 10. Finish 🙂

database mail ayarlarımızı yaptık.

Artık yapılan ayarları test edebilirsiniz

 

sp_send_mail proceduru ile standart t-sql kodu ile mail gönderebilirsiniz.

 

sp_send_dbmail [ [ @profile_name = ] 'profile_name' ]  
[ , [ @recipients = ] 'recipients [ ; ...n ]' ]  
[ , [ @copy_recipients = ] 'copy_recipient [ ; ...n ]' ]  
[ , [ @blind_copy_recipients = ] 'blind_copy_recipient [ ; ...n ]' ]  
[ , [ @from_address = ] 'from_address' ]  
[ , [ @reply_to = ] 'reply_to' ]   
[ , [ @subject = ] 'subject' ]   
[ , [ @body = ] 'body' ]   
[ , [ @body_format = ] 'body_format' ]  
[ , [ @importance = ] 'importance' ]  
[ , [ @sensitivity = ] 'sensitivity' ]  
[ , [ @file_attachments = ] 'attachment [ ; ...n ]' ]  
[ , [ @query = ] 'query' ]  
[ , [ @execute_query_database = ] 'execute_query_database' ]  
[ , [ @attach_query_result_as_file = ] attach_query_result_as_file ]  
[ , [ @query_attachment_filename = ] query_attachment_filename ]  
[ , [ @query_result_header = ] query_result_header ]  
[ , [ @query_result_width = ] query_result_width ]  
[ , [ @query_result_separator = ] 'query_result_separator' ]  
[ , [ @exclude_query_output = ] exclude_query_output ]  
[ , [ @append_query_error = ] append_query_error ]  
[ , [ @query_no_truncate = ] query_no_truncate ]   
[ , [ @query_result_no_padding = ] @query_result_no_padding ]   
[ , [ @mailitem_id = ] mailitem_id ] [ OUTPUT ]

basit örnek;

EXEC msdb.dbo.sp_send_dbmail  
@profile_name = 'Adventure Works Administrator',  
@recipients = 'yourfriend@Adventure-Works.com',  
@body = 'The stored procedure finished successfully.',  
@subject = 'Automated Success Message' ;

 

 

Yazımı okuduğunuz için teşekkürler.

 

kaynak

https://docs.microsoft.com/en-us/sql/relational-databases/database-mail/create-a-database-mail-profile?view=sql-server-2017

https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-send-dbmail-transact-sql?view=sql-server-2017

 

0

Missing Index Script

SELECT TOP 25
dm_mid.database_id AS DatabaseID,
dm_migs.avg_user_impact*(dm_migs.user_seeks+dm_migs.user_scans) Avg_Estimated_Impact,
dm_migs.last_user_seek AS Last_User_Seek,
OBJECT_NAME(dm_mid.OBJECT_ID,dm_mid.database_id) AS [TableName],
'CREATE INDEX [IX_' + OBJECT_NAME(dm_mid.OBJECT_ID,dm_mid.database_id) + '_'
+ REPLACE(REPLACE(REPLACE(ISNULL(dm_mid.equality_columns,''),', ','_'),'[',''),']','') 
+ CASE
WHEN dm_mid.equality_columns IS NOT NULL
AND dm_mid.inequality_columns IS NOT NULL THEN '_'
ELSE ''
END
+ REPLACE(REPLACE(REPLACE(ISNULL(dm_mid.inequality_columns,''),', ','_'),'[',''),']','')
+ ']'
+ ' ON ' + dm_mid.statement
+ ' (' + ISNULL (dm_mid.equality_columns,'')
+ CASE WHEN dm_mid.equality_columns IS NOT NULL AND dm_mid.inequality_columns 
IS NOT NULL THEN ',' ELSE
'' END
+ ISNULL (dm_mid.inequality_columns, '')
+ ')'
+ ISNULL (' INCLUDE (' + dm_mid.included_columns + ')', '') AS Create_Statement
FROM sys.dm_db_missing_index_groups dm_mig
INNER JOIN sys.dm_db_missing_index_group_stats dm_migs
ON dm_migs.group_handle = dm_mig.index_group_handle
INNER JOIN sys.dm_db_missing_index_details dm_mid
ON dm_mig.index_handle = dm_mid.index_handle
WHERE dm_mid.database_ID = DB_ID()
ORDER BY Avg_Estimated_Impact DESC

Kaynak :

SQL SERVER – Missing Index Script – Download

0

Sql Server 2012 ve sonrası otomatik identity kolonda değer atlaması

Micrososft, SQL server 2012 ve üst sürümlerde otomatik kimlik değerlerini ele alış şeklini değiştirdi ve bunun sonucu olarak Sql Instance yada sunucuyu yeniden başlattığınızda kayıtlarınız arasında kimlik değerlerinde boşluklar görebilirsiniz.

Bunu durumdan kurtulmak için aşağıdaki yöntemi kullanabilirsiniz,

  • “SQL Server Yapılandırma Yöneticisi” ni açın
  • Sol bölmede “SQL Server Hizmetleri” ni tıklayın
  • Sağ bölmede SQL Server örnek adınızı sağ tıklatın -> Varsayılan: SQL Server (MSSQLSERVER)
  • “Özellikler” i tıklayın
  • “Başlangıç ​​Parametreleri” ni tıklayın.
  • Başlangıç parametresi kutusuna “-T272” yazınız
  • “Ekle” yi tıklayın.
  • Değişiklikleri onaylayın
  • Sql server yeniden başlatın

0

c# : datatable row larında baş harfe göre gezinme

 char temp = '';
 int count;
 int step = 1;
 public void GoToLetterTypedInDataGridView(string columnName, int columnPosition, char letterTyped)
 {
     try
     {

         DataTable dt = dtHesapTanim;
         char letter = letterTyped;
         DataView dv = dt.DefaultView;
         bool hasCount = false;




         while ((!hasCount))
         {
             dv.Sort = columnName;
             dv.RowFilter = columnName + " like '" + letter + "%'";
             count = dv.Count;

             if (temp.Equals(letterTyped))
             {
                 temp = letterTyped;
                 if (step == count - 1)
                     step = 0;
                 else
                     step = step+ 1;
             }
             else
             {
                 temp = letterTyped;
                 step = 0;
             }



             if (dv.Count > 0)
             {
                 hasCount = true;
                 string x = dv[0][columnPosition].ToString();
                 dv.RowFilter = "";
                 BindingSource bs = new BindingSource();
                 bs.DataSource = dt;
                 c1TrueDBGrid1.Row = bs.Find(columnName, x) + step;
             }
             else {

                 sayac = 0;
                 count = 0;

                 if (letter == 'z')
                 {
                     letter = 'a';
                 }
                 else if (letter == 'Z')
                 {
                     letter = 'A';
                 }
                 else {
                     letter = Microsoft.VisualBasic.Strings.Chr(Microsoft.VisualBasic.Strings.Asc(letter) + 1);
                 }
             }
         }


     }
     catch
     {

     }
 }

 private void dataGrid_KeyPress(object sender, KeyPressEventArgs e)
 {
     if (dataGrid.RowCount > 0)
     {
         GoToLetterTypedInDataGridView("KisaTanim", 1, e.KeyChar);
     }
 }