Job(email) de 1000 em 1000
07/10/2013
0
Mariana Carvalho
Posts
05/11/2013
Mariana Carvalho
;-.b
ah ta certo.
27/12/2013
Leonardo Ferrareto
------------------------------------------------------------------------
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[sp_SQLNotify]
@From varchar(100) ,
@To varchar(100) ,
@Subject varchar(100)=" ",
@Body varchar(4000) = "Motley Fool Inc."
/*********************************************************************
This stored procedure takes the above parameters and sends an e-mail.
All of the mail configurations are hard-coded in the stored procedure.
Comments are added to the stored procedure where necessary.
Reference to the CDOSYS objects are at the following MSDN Web site:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cdosys/html/_cdosys_messaging.asp
***********************************************************************/
AS
Declare @iMsg int
Declare @hr int
Declare @source varchar(255)
Declare @description varchar(500)
Declare @output varchar(1000)
--************* Create the CDO.Message Object ************************
EXEC @hr = sp_OACreate 'CDO.Message', @iMsg OUT
--***************Configuring the Message Object ******************
-- This is to configure a remote SMTP server.
-- http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cdosys/html/_cdosys_schema_configuration_sendusing.asp
EXEC @hr = sp_OASetProperty @iMsg, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/sendusing").Value','2'
-- This is to configure the Server Name or IP address.
-- Replace MailServerName by the name or IP of your SMTP Server.
EXEC @hr = sp_OASetProperty @iMsg, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value', '10.1.1.10'
-- Save the configurations to the message object.
EXEC @hr = sp_OAMethod @iMsg, 'Configuration.Fields.Update', null
-- Set the e-mail parameters.
EXEC @hr = sp_OASetProperty @iMsg, 'To', @To
EXEC @hr = sp_OASetProperty @iMsg, 'From', @From
EXEC @hr = sp_OASetProperty @iMsg, 'Subject', @Subject
-- If you are using HTML e-mail, use 'HTMLBody' instead of 'TextBody'.
EXEC @hr = sp_OASetProperty @iMsg, 'TextBody', @Body
EXEC @hr = sp_OAMethod @iMsg, 'Send', NULL
-- Sample error handling.
IF @hr <>0
select @hr
BEGIN
EXEC @hr = sp_OAGetErrorInfo NULL, @source OUT, @description OUT
IF @hr = 0
BEGIN
SELECT @output = ' Source: ' + @source
PRINT @output
SELECT @output = ' Description: ' + @description
PRINT @output
END
ELSE
BEGIN
PRINT ' sp_OAGetErrorInfo failed.'
RETURN
END
END
-- Do some error handling after each step if you need to.
-- Clean up the objects created.
EXEC @hr = sp_OADestroy @iMsg
PRINT 'Mail Sent!'
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
27/12/2013
Isaac Jose
so pra frisar uma coisa que vi certa vez em um cliente...
o mesmo precisava fazer algo que so era permitido na versao enterprise e claro na developer. como ele nao tinha a enterprise o pessoal fez o caminho obvio e intalou a developer.
e jogou em ambiente de produção..
o problema é que o developer nao pode entrar em produção por questoes de direitos da Fabricante.
portanto achei relevante comentar caso tenha alguem que nao saiba,,e ou o utilize em producao rsrs...
abraços
03/01/2014
João Françozo
TENHO ISSO VEJA A CONFIGURAÇÃO ABAIXO O DATABASE EMAIL. EU USO EM ALGUNS CLIENTES.
--** Como configurar o Database Mail para envio de e-mail pelo SQLSERVER 2005
--1)Abrir base MSDB
USE MSDB
GO
--2)Habilitando o Database Mail
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Database Mail XPs', 1;
GO
RECONFIGURE;
GO
--3) -- Criação do Perfil
EXEC msdb.dbo.sysmail_add_profile_sp
@profile_name = 'Atak0',
@description = 'Esse perfil será utilizado para envio de e-mails';
--4) -- Criação da Conta
EXEC msdb.dbo.sysmail_add_account_sp
@account_name = 'jtassoli@atak.com.br',
@description = 'Essa é a conta principal para o envio de e-mails SqlServer',
@email_address = 'jtassoli@atak.com.br',
@display_name = 'envio automatico de ntsativo',
@replyto_address = 'jtassoli@atak.com.br',
@mailserver_name = 'mail.atak.com.br',
@port = 110;
--5) -- Vinculação da Conta ao Perfil
EXEC msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = 'Atak0',
@account_name = 'jtassoli@atak.com.br',
@sequence_number = 1;
EXEC sysmail_verify_principal_sp
--6) -- Concedendo a permissão de um usuário ao Perfil
EXEC msdb.dbo.sysmail_add_principalprofile_sp
@profile_name = 'Atak0',
@principal_name = 'dbo',
@is_default = 1;
--7) -- Enviando um e-mail simples
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'Atak0',
@recipients = 'jtassoli@atak.com.br',
@body = 'Se você receber esse e-mail, o recurso Database Mail está funcionando',
@subject = 'Verificação do Recurso Database Mail'
--8) -- Enviando o resultado de uma Query em Anexo
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'Atak0',
@recipients ='jtassoli_@hotmail.com',
@body = 'SEGUE ANEXO PRODUTOS COM ESTOQUE BAIXO',
@subject = 'PRODUTOS PARA COMPRA DO ALMOXARIFADO',
@query = 'select * from satkcastanhal..tbramo',
@attach_query_result_as_file = 1,
@query_attachment_filename = 'produtos.txt'
---
--Algumas stored procedure
--para verificar se o serviço está startado
EXEC msdb.dbo.sysmail_help_status_sp ;
--para parar o serviço
sysmail_stop_sp
--para comercar o serviço
sysmail_start_sp
--para verificar o log
SELECT * FROM msdb.dbo.sysmail_event_log ;
------------------------------------------------------------------------------------------------------------------------------
AI FIZ UMA PROCEDURE ( Envia_email_espelho_pedido_compra400)
---------------------------------------------------------------------------------------------------------------------------
APÓS ISSO FIZ UMA TRIGGER QUE VERIFICA OS DOCUMENTOS BLOQUEADOS E ATUALIZADOS, E CHAMA A PROCEDURE PARA ENVIAR O E-MAIL.
CREATE TRIGGER [dbo].[tiLogOperacao] on [dbo].[tbLogOperacao]
FOR INSERT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for trigger here
declare @cf char(9);
-- Insert statements for trigger here
Select @cf=Chave_fato from Inserted novo
where
cod_rotina='MOV016' and abreviatura_operacao IN('DESBLOQ') and
--Observacao like '%atualização automática%' and
Observacao like '%APE%';
if @@Rowcount<>0
Exec [dbo].[Envia_email_espelho_pedido_compra400] @Chave_fato = @cf;
END
GO
-----------------------------------------------------------------------------------------------------------------------
Acho que te ajuda isso.
03/01/2014
Mariana Carvalho
03/02/2014
Alex Lekao
VC conseguiu o que queria?
Deixa so eu entender mais um pouco, pq esse seu problema nao saiu de minha lembranca desde a criacao do post.
Vc precisa de um job que qdo a tabela, comecando sem nenhum registro envie um e-mail para o DBA avisando que ela atingiu 1000 registros, e qdo ela atingir 2000 registros um novo email correto?
Estive pensando que talves seja necessario criar uma tabela para esse tipo de monitoria, pq nao consigo pensar em um laco que seja possivel usar os registros para considerar que sejam superiores a mil e proceder com o envio do email.
ja pensei em calculos matematicos para tentar fazer esse laco e possibilitar o envio sem a criacao de uma tabela para monitorar, mas ate o momento nao consegui.
Se vc tiver alguma coisa deste tipo que possamos usar para tentar ajudar a montar alguma coisa, seria interessante.
Eu ja estou usando envio de emails, fazendo o uso do job, so que o meu eh o envio de um arquivo csv de um cadastro de produtos para um parceiro.
Vamos ver se conseguimos algo que atenda a sua necessidade.
encontrei alguns codigos e tal para monitoria diversas, mas especificamente do jeito q vc precisa nao tem.
vamos tentar amadurecer mais e tentar ver o que conseguimos.
Abraco.
Alex - Lekao
05/02/2014
Mariana Carvalho
sobre os codigos, sem cerimonias, pode colocar. rsrsrs
06/02/2014
Rafael Dantas
06/02/2014
Alex Lekao
sobre os codigos, sem cerimonias, pode colocar. rsrsrs
Oi Mariana, nao entendi... rssr
to meio lesado hoje... leeeento... rssr
06/02/2014
Alex Lekao
Oi Rafael, eh legal viu..
funciona direitinho...
eu estou usando com arquvio CSV, para xml muda um pouco a estrutura, pq vc tera que montar um pouco diferente, acho que nao eh o colocar o nome do arquivo e tal.
Mas funciona balinha.
Dependendo de como for, abre um topico e a galera vai cair em cima para te ajudar.
Abraco.
Alex - Lekao
06/02/2014
Fabiano Carvalho
Voce pode criar uma trigger para que quando inserir verifica o modulo (resto da divisão), divide a quantidade por 1000, e ai dispara o e-mail. (gambiarra)
06/02/2014
Alex Lekao
acho que o caminho ta surgindo... rsrsr
usar a Funcao MOD(), se nao me engano eh essa certo.
mas se o resto de divisao for 1000 certo?
06/02/2014
Mariana Carvalho
sobre os codigos, sem cerimonias, pode colocar. rsrsrs
Oi Mariana, nao entendi... rssr
to meio lesado hoje... leeeento... rssr
deixa pra lá.
06/02/2014
Mariana Carvalho
Voce pode criar uma trigger para que quando inserir verifica o modulo (resto da divisão), divide a quantidade por 1000, e ai dispara o e-mail. (gambiarra)
hahahaha...essa foi otima...tb sinto isso...as vezes.
Clique aqui para fazer login e interagir na Comunidade :)