Implantação
-
Instalando .NET Framework 3.5 em Servidor Windows
Caso precise acessar o banco nos ambientes Cloud, é preciso usar o Query Express e este, exige o dotnet 3.5. Para instalar, baixar microsoft-windows-netfx3-ondemand-package pacote e colocar no servidor.
Deixe o zip dentro de uma pasta e inicie a adição de uma nova função. Não precisa extrair, só coloque o arquivo dentro de uma pasta qualquer. Marque a opção vista abaixo:

Na tela seguinte, clique em Próximo.
Na próxima, especifique o caminho alternativo.

Coloque o caminho onde está o arquivo zipado e prossiga com a instalação.

-
Criando Jobs do Gerenciador de Mailing
Na implantação do Gerenciador de Mailing do nMonitor, torna-se necessário criar 3 procedures e seus respectivos Jobs no SQL Server Agent, conforme detalhamento abaixo.
⚠️ Atenção: Os scripts abaixo devem ser executados somente por administradores do banco de dados.
Antes de executar, ajuste as variáveis iniciais conforme o ambiente de implantação.🔧 Variáveis de ambiente (ajustar antes da execução)
DECLARE @Sigla VARCHAR (20) = 'SIGLA_AMBIENTE' -- Ex: RGSMGF, TACTIUM, etc. , @Banco VARCHAR (20) = 'DATABASE' -- Nome do banco de dados do discador (base histórica) , @Usuario VARCHAR (20) = 'USUARIO_DATABASE' -- Owner do job , @PathLayout VARCHAR(800) = '\\caminho\para\layout\' -- Apenas para Job 2
📌 Job 1 – Monitora Agendamento de Mailing
Item Descrição Job TACTIUM – Monitora Agendamento de MailingProcedure SP_GeraMailingAgendadoObjetivo Gerar segmentos de mailings para discagem que estejam agendados ou em fila Local de execução Banco do TactiumIP (base histórica) Comando Exec SP_GeraMailingAgendadoPeriodicidade A cada 10 segundos 🧾 Script de criação do Job 1
USE [msdb] GO BEGIN TRANSACTION DECLARE @Sigla VARCHAR (20) = 'SIGLA_AMBIENTE' , @Banco VARCHAR (20) = 'DATABASE' , @Usuario VARCHAR (20) = 'USUARIO_DATABASE' DECLARE @NomeJob VARCHAR(255) = Concat(@sigla, ' - Monitora Agendamento de Mailing') , @NomeEtapa VARCHAR(255) = Concat(@sigla, ' - Gera Mailing Agendado') , @StartDate INT = FORMAT(GETDATE(), 'yyyyMMdd') DECLARE @schedule_uid UNIQUEIDENTIFIER; DECLARE @ReturnCode INT = 0 IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1) BEGIN EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]' IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback END DECLARE @jobId BINARY(16) EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=@NomeJob, @enabled=1, @notify_level_eventlog=2, @notify_level_email=2, @notify_level_netsend=0, @notify_level_page=0, @delete_level=0, @description=N'Nenhuma descrição disponível.', @category_name=N'[Uncategorized (Local)]', @owner_login_name=@usuario, @notify_email_operator_name=N'Sac Tactium', @job_id = @jobId OUTPUT IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=@NomeEtapa, @step_id=1, @cmdexec_success_code=0, @on_success_action=1, @on_success_step_id=0, @on_fail_action=2, @on_fail_step_id=0, @retry_attempts=0, @retry_interval=0, @os_run_priority=0, @subsystem=N'TSQL', @command=N'Exec SP_GeraMailingAgendado', @database_name=@Banco, @flags=0 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'Execucao a cada 10 segundos', @enabled=1, @freq_type=4, @freq_interval=1, @freq_subday_type=4, @freq_subday_interval=1, @freq_relative_interval=0, @freq_recurrence_factor=0, @active_start_date=@StartDate, @active_end_date=99991231, @active_start_time=0, @active_end_time=235959, @schedule_uid=@schedule_uid OUTPUT IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)' IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback COMMIT TRANSACTION GOTO EndSave QuitWithRollback: IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION EndSave: GO
📌 Job 2 – Transfere Mailing para o Discador
Item Descrição Job TACTIUM – Transfere Mailing para o DiscadorProcedure SP_TransfereParaDiscadorObjetivo Transferir a lista de discagem do gerenciador de mailings para o discador Local de execução Banco do TactiumIP (base histórica) Comando Exec SP_TransfereParaDiscador @PathLayout, @Banco, 0Periodicidade A cada 10 segundos 🧾 Script de criação do Job 2
USE [msdb] GO BEGIN TRANSACTION DECLARE @Sigla VARCHAR (20) = 'SIGLA_AMBIENTE' , @Banco VARCHAR (20) = 'DATABASE' , @Usuario VARCHAR (20) = 'USUARIO_DATABASE' , @PathLayout VARCHAR(800) = '\\caminho\para\layout\' DECLARE @NomeJob VARCHAR(255) = Concat(@sigla, ' - Transfere Mailing para o Discador') , @NomeEtapa VARCHAR(255) = Concat(@sigla, ' - Transfere Mailing para o Discador') , @Comando VARCHAR(800) = Concat('Exec SP_TransfereParaDiscador ''', @PathLayout, ''', ''', @Banco, ''', 0') , @StartDate INT = FORMAT(GETDATE(), 'yyyyMMdd') DECLARE @schedule_uid UNIQUEIDENTIFIER; DECLARE @ReturnCode INT = 0 IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1) BEGIN EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]' IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback END DECLARE @jobId BINARY(16) EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=@NomeJob, @enabled=1, @notify_level_eventlog=2, @notify_level_email=2, @notify_level_netsend=0, @notify_level_page=0, @delete_level=0, @description=N'Nenhuma descrição disponível.', @category_name=N'[Uncategorized (Local)]', @owner_login_name=@Usuario, @notify_email_operator_name=N'Sac Tactium', @job_id = @jobId OUTPUT IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=@NomeEtapa, @step_id=1, @cmdexec_success_code=0, @on_success_action=1, @on_success_step_id=0, @on_fail_action=2, @on_fail_step_id=0, @retry_attempts=0, @retry_interval=0, @os_run_priority=0, @subsystem=N'TSQL', @command=@Comando, @database_name=@Banco, @flags=0 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'Execucao a cada 10 segundos', @enabled=1, @freq_type=4, @freq_interval=1, @freq_subday_type=4, @freq_subday_interval=1, @freq_relative_interval=0, @freq_recurrence_factor=0, @active_start_date=@StartDate, @active_end_date=99991231, @active_start_time=0, @active_end_time=235959, @schedule_uid=@schedule_uid OUTPUT IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)' IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback COMMIT TRANSACTION GOTO EndSave QuitWithRollback: IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION EndSave: GO
📌 Job 3 – Recebe resultado do Discador
Item Descrição Job TACTIUM – Recebe resultado do DiscadorProcedure SP_RecebeDoDiscadorObjetivo Transferir tentativas realizadas pelo discador para a base do gerenciador de mailings Local de execução Banco do TactiumIP (base histórica) Comando Exec SP_RecebeDoDiscador @BancoPeriodicidade A cada 1 minuto 🧾 Script de criação do Job 3
USE [msdb] GO BEGIN TRANSACTION DECLARE @sigla VARCHAR (20) = 'SIGLA_AMBIENTE' , @banco VARCHAR (20) = 'DATABASE' , @usuario VARCHAR (20) = 'USUARIO_DATABASE' DECLARE @NomeJob VARCHAR(255) = Concat(@sigla, ' - Recebe resultado do Discador') , @NomeEtapa VARCHAR(255) = Concat(@sigla, ' - Recebe resultado do Discador') , @Comando VARCHAR(800) = Concat('Exec SP_RecebeDoDiscador ''', @Banco, '''') , @StartDate INT = FORMAT(GETDATE(), 'yyyyMMdd') DECLARE @schedule_uid UNIQUEIDENTIFIER; DECLARE @ReturnCode INT = 0 IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1) BEGIN EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]' IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback END DECLARE @jobId BINARY(16) EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=@NomeJob, @enabled=1, @notify_level_eventlog=2, @notify_level_email=2, @notify_level_netsend=0, @notify_level_page=0, @delete_level=0, @description=N'Nenhuma descrição disponível.', @category_name=N'[Uncategorized (Local)]', @owner_login_name=@usuario, @notify_email_operator_name=N'Sac Tactium', @job_id = @jobId OUTPUT IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=@NomeEtapa, @step_id=1, @cmdexec_success_code=0, @on_success_action=1, @on_success_step_id=0, @on_fail_action=2, @on_fail_step_id=0, @retry_attempts=0, @retry_interval=0, @os_run_priority=0, @subsystem=N'TSQL', @command=@Comando, @database_name=@banco, @flags=0 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'Execucao a cada 1 minuto', @enabled=1, @freq_type=4, @freq_interval=1, @freq_subday_type=4, @freq_subday_interval=1, @freq_relative_interval=0, @freq_recurrence_factor=0, @active_start_date=@StartDate, @active_end_date=99991231, @active_start_time=0, @active_end_time=235959, @schedule_uid=@schedule_uid OUTPUT IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)' IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback COMMIT TRANSACTION GOTO EndSave QuitWithRollback: IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION EndSave: GO
✅ Observações finais
- As procedures (
SP_GeraMailingAgendado,SP_TransfereParaDiscador,SP_RecebeDoDiscador) já devem existir no banco de dados do Tactium antes da criação dos Jobs. - Ajuste o parâmetro
@freq_subday_intervalpara 10 segundos manualmente via interface do SQL Server Agent, se necessário, pois o T-SQL padrão não permite menos que 1 minuto diretamente. - O
@PathLayoutdeve apontar para um diretório acessível pelo SQL Server. - O operador de e-mail
Sac Tactiumdeve existir no SQL Server Agent ou pode ser removido/alterado conforme necessidade.
⚠️ Importante: Após criar os jobs, verifique se eles estão habilitados e com as permissões corretas para execução.
- As procedures (
-
Como habilita a função bulkadmin no SQL Server?
Para habilitar essa função torna-se necessário acessar as propriedades do usuário do SQL Server (no exemplo abaixo as configurações estão sendo feitas no usuário chamado “callback”). No menu lateral entrar em “Funções de Servidor” e marcar a opção de “bulkadmin”.

-
Problema de não estabelecimento de conexão com computador VPN RRAS
Entendendo o problema?
Ao tentar acessar a VPN é apresentado o seguinte erro:
Não foi possível estabelecer uma conexão com o computador remoto. Talvez seja necessário alterar as configurações da rede para essa conexão

Motivo
Esse problema é presente a partir do Windows 8 ainda não solucionado pela Microsoft em atualização de correção. Consiste em uma divergência das WAN Miniport ao acesso do RRAS.
O que fazer?
- Acesse o MMC do Windows: Menu iniciar -> Digite mmc -> Aperte enter.
- Com o MMC do Windows aberto você deverá adicionar o SNAP-IN do gerenciador de dispositivos, conforme imagem abaixo:


- Abra o gerenciador de dispositivos e expanda a opção de adaptadores de rede:

- Desinstale todos os drivers referente a WAN Miniport conforme clicando nos mesmos com o botão direito e escolhendo a opção desinstalar:

- Após desinstalar todos os drivers em questão pode fechar o MMC. Abra o Gerenciador dor de dispositivos: Menu iniciar -> Digite “Gerenciador de dispositivos” -> Aperte enter.
- Com o Gerenciador de dispositivos aberto, clique em Ação -> verificar se há alterações de Hardware.

- Teste a VPN.
