Anasayfa » Forum

SQL 2012 mail g...
 
Bildirimler
Hepsini Temizle

SQL 2012 mail gönderme hakkında.  

  RSS
ali aliskan
(@alialiskan)
Üye

Merhaba Oluşturduğum stored procedure 'yi otomatik mail gönderebilirmiyim böyle bir imkanımız var mı. Gerekli configure'yi yaptım aşağıdaki kod ile manuel basit bir sorguyu manuel test maili atabiliyorum. Bu konuda daha önce bir tecrübem yok.Yardımlarınız için şimdiden teşekkürler.

EXEC msdb.dbo.sp_send_dbmail

@profile_name = 'ali',

@recipients = 'abc@gmail.com',

@query = 'SELECT * FROM deneme' ,

@subject = 'test',

@attach_query_result_as_file = 1 ;

Alıntı
Gönderildi : 05/02/2013 19:49
Hakan ÜSTÜN
(@HakanUSTUN)
Üye

CREATE PROCEDURE xp_CDOMailGonder(
    @Kimden varchar(100),
    @Kime varchar(255),
    @Baslik varchar(255),
    @Mesaj varchar(500)
) AS
DECLARE @Obj int, @OLESonuc int
EXECUTE @OLESonuc = sp_OACreate 'CDONTS.NewMail', @Obj OUT
execute @OLESonuc = sp_OAMethod @Obj, 'Send', Null, @Kimden, @Kime, @Baslik, @Mesaj, 0
EXECUTE @OLESonuc = sp_OADestroy @Obj
return @OLESonuc

CevapAlıntı
Gönderildi : 05/02/2013 20:46
ali aliskan
(@alialiskan)
Üye

Cevabınız için teşekkürler. Daha önce böyle bir uygulama yapmadım.İnternetten araştırarakta belli bir noktaya kadar gelebildim.Yapı böyle olacak sanırım. Peki ben bu sorgu yapısını nerede çalıştırmam gerekiyor.New Jop Step penceresinde Transact-SQL script(T-SQL) seçip burdamı çalıştırmam gerekli.Yazdığım Proceduredeki sorguyu günün belli saatlerinde mail atmak istiyorum.Yardımcı olabilirmisiniz.

Teşekkürler. 

CevapAlıntı
Gönderildi : 06/02/2013 01:06
Hakan ÜSTÜN
(@HakanUSTUN)
Üye

sql management studio açın new query tikliyoruz ve üstteki proceduru boş ekrana yapıştırın gerekirse kendinize göre düzenleyin  eğer sistemde farklı database mevcutsa use databaseismi ile kullanmak istediğiniz database seçin sonra boş query ekranına yapıştırdığınız proceduru F5 ile çalıştırıp yaratılmasını sağlayın yaratılıp yaratılmadığını kontrol için database genişletip programmability altında stored procedures altina bakin orda procedurunuz eğer genişletirsenizde alacağı değerler ekranda gözükür daha sonra proceduru çalıştırma komutu  exec parametreler şeklindedir  bu proceduru script olarak kaydedip sql Server Agent çalıştırıp oraya job olarak kaydedip çalıştırabilirsiniz R2 sürüme sahipseniz orada admin Notification için ayrıca mail tanımıda vardır job tanımı için şu linki lütfen inceleyeniz aşağılarda bir yerde  executing the sp_start_job stored procedure. yazan yerde bilgi veriyor ben daha önce hiç böyle bir şey yapmadım sadece bildiğim kadariyla çözüm üretmeye çalıştım

http://technet.microsoft.com/en-us/library/ms189237.aspx

CevapAlıntı
Gönderildi : 06/02/2013 02:38
ali aliskan
(@alialiskan)
Üye

Merhaba; Epey uğraştım işin içinden çıkamadım. Ama şu noktaya kadar geldim, aşagıdaki ilgili kodu. New Jop Step penceresinde Transact-SQL script(T-SQL) seçip alana yapıştırınca basit sorguyu istediğim saatte otomatik mail atıyor. Ama sorguyu detaylandırınca kabul etmiyor. Stored Procudere'yi buraya gömmenin bir yolu olsa keşke. Veya sorguyu çalıştırabilsem.

EXEC msdb.dbo.sp_send_dbmail

@profile_name = 'ali',

@recipients = 'abc@gmail.com',

@query = 'SELECT * FROM deneme' ,

@subject = 'test',

@attach_query_result_as_file = 1 ;

CevapAlıntı
Gönderildi : 06/02/2013 18:01
Hakan ÜSTÜN
(@HakanUSTUN)
Üye

[quote user="ali aliskan"]

Merhaba; Epey uğraştım işin içinden çıkamadım. Ama şu noktaya kadar geldim, aşagıdaki ilgili kodu. New Jop Step penceresinde Transact-SQL script(T-SQL) seçip alana yapıştırınca basit sorguyu istediğim saatte otomatik mail atıyor. Ama sorguyu detaylandırınca kabul etmiyor. Stored Procudere'yi buraya gömmenin bir yolu olsa keşke. Veya sorguyu çalıştırabilsem.

EXEC msdb.dbo.sp_send_dbmail

@profile_name = 'ali',

@recipients = 'abc@gmail.com',

@query = 'SELECT * FROM deneme' ,

@subject = 'test',

@attach_query_result_as_file = 1 ;

[/quote]

 

sorguyu detaylandırmak derken o kismi anlamadım detaylandırdığı halini atip birde hatayı tam olarak söylerseniz beraber bir çözüm üretmeye çalışalım stored procedur zaten programbility altında kayitli halde kalir yada script olarak alip dışardan execute edebilirsiniz hiç bir şey yapılamıyorsa 3 ncü parti sql toolları ile yapılabilir hatta fonksiyon bile yazılabilir gibi geliyor bana

CevapAlıntı
Gönderildi : 06/02/2013 18:45
ali aliskan
(@alialiskan)
Üye

EXEC msdb.dbo.sp_send_dbmail

@profile_name = 'ali',

@recipients = 'abc@gmail.com',

@query = 'SELECT sube, sum (tutar )-sum(iskonto)as TOPLAM

 FROM dbo.STOKHAREKET 
where CIKIS ('1') AND tarih between '2013-01-01' and '2013-01-31'

   group by sube' ,

@subject = 'test',

@attach_query_result_as_file = 1 ; 
 
 
 
 
Örneğin böyle bir sorgu  , Sanırım where 'den sonrasını yapamıyorum veya şartların böyle verilmemesi gerekiyor. 
CevapAlıntı
Gönderildi : 07/02/2013 01:03
Hakan ÜSTÜN
(@HakanUSTUN)
Üye

[quote user="ali aliskan"]

EXEC msdb.dbo.sp_send_dbmail

@profile_name = 'ali',

@recipients = 'abc@gmail.com',

@query = 'SELECT sube, sum (tutar )-sum(iskonto)as TOPLAM

 FROM dbo.STOKHAREKET 
where CIKIS ('1') AND tarih between '2013-01-01' and '2013-01-31'

   group by sube' ,

 

@subject = 'test',

@attach_query_result_as_file = 1 ; 
 
 
 
 
Örneğin böyle bir sorgu  , Sanırım where 'den sonrasını yapamıyorum veya şartların böyle verilmemesi gerekiyor. 

[/quote]

 

bildiğim kadarıyla Toplam fonksiyonlarını kullanırken kısıt girilmesi gerektiginde WHERE yantümcesini kullanamıyoruz aynı sorguyu where silin group by dan sonra having ile yapmaya çalışın yani şöyle

SELECT productid, SUM(quantity) AS total_quantity
FROM [order details]
GROUP BY productid
HAVING SUM(quantity) gibi gibi ...

CevapAlıntı
Gönderildi : 07/02/2013 18:16
Paylaş: