Tactium Cloud

  • 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 Mailing
    Procedure SP_GeraMailingAgendado
    Objetivo 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_GeraMailingAgendado
    Periodicidade 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 Discador
    Procedure SP_TransfereParaDiscador
    Objetivo 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, 0
    Periodicidade 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 Discador
    Procedure SP_RecebeDoDiscador
    Objetivo 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 @Banco
    Periodicidade 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_interval para 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 @PathLayout deve apontar para um diretório acessível pelo SQL Server.
    • O operador de e-mail Sac Tactium deve 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.

     


  • 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?

    1. Acesse o MMC do Windows: Menu iniciar -> Digite mmc -> Aperte enter.
    2. Com o MMC do Windows aberto você deverá adicionar o SNAP-IN do gerenciador de dispositivos, conforme imagem abaixo:
    3. Abra o gerenciador de dispositivos e expanda a opção de adaptadores de rede:
    4. Desinstale todos os drivers referente a WAN Miniport conforme clicando nos mesmos com o botão direito e escolhendo a opção desinstalar:
    5. 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.
    6. Com o Gerenciador de dispositivos aberto, clique em Ação -> verificar se há alterações de Hardware.
    7. Teste a VPN.