Referência dos wrappers no ambiente SQL Compartilhado SkyNova
Referência de wrappers
No SQL Compartilhado, você tem liberdade total dentro dos seus databases: Criar tabelas, procedures, views, índices e dados, do jeito de sempre.
Algumas tarefas, porém, mexem em partes do SQL Server que são da plataforma, como o SQL Agent, o e-mail, a conexão com outros servidores, a senha e a manutenção do banco. Para essas, a plataforma oferece
procedimentos prontos. Você chama o procedimento, e ele faz a tarefa com segurança e deixa registrado o que foi feito.
Regras:
- Chame sempre com o nome completo, incluindo o banco: msdb.dbo... ou master.dbo....
- Use parâmetros com nome: @Parametro = valor.
- Nas exclusões, o nome é pedido duas vezes, para evitar apagar por engano.
- Cada login só enxerga e altera o que é do próprio tenant.
- Os procedimentos de SQL Agent do msdb (operator, alert, categoria e dono de job) devem ser chamados pela janela de consulta do SSMS, e não de dentro de um step de job.
1. SQL Agent — Jobs
Você cria e edita jobs pelo caminho normal do SQL Server (msdb.dbo.sp_add_job, sp_add_jobstep, sp_add_jobschedule), como mostra a receita 4.0. A plataforma entra só onde o SQL Server exigiria administrador:
| Procedimento | Para que serve |
|---|---|
msdb.dbo.usp_TenantSqlAgentJob_SetOwner | Troca o dono de um job para outro login do seu tenant. |
msdb.dbo.usp_TenantSqlAgentJob_ReassignOwner | Passa todos os jobs de um login para outro. |
EXEC msdb.dbo.usp_TenantSqlAgentJob_SetOwner
@JobName = N'MEU_JOB', @NewOwnerLogin = N'outro_login';Nota: Na agenda semanal (@freq_type = 8), informe @freq_recurrence_factor = 1. Sem ele, o SQL Server recusa com Msg 14278.
2. SQL Agent — Categorias
| Procedimento | Para que serve |
|---|---|
msdb.dbo.usp_TenantSqlAgentCategory_List | Lista suas categorias. |
msdb.dbo.usp_TenantSqlAgentCategory_Create | Cria uma categoria. |
msdb.dbo.usp_TenantSqlAgentCategory_Update | Renomeia uma categoria. |
msdb.dbo.usp_TenantSqlAgentCategory_Delete | Exclui uma categoria. |
A classe (@CategoryClass) pode ser JOB (padrão), ALERT ou OPERATOR.
EXEC msdb.dbo.usp_TenantSqlAgentCategory_Create
@CategoryName = N'Rotinas Noturnas', @CategoryClass = N'JOB';3. SQL Agent — Operators (quem recebe os avisos)
| Procedimento | Para que serve |
|---|---|
msdb.dbo.usp_TenantSqlAgentOperator_List | Lista seus operators. |
msdb.dbo.usp_TenantSqlAgentOperator_Create | Cria um operator, com e-mail e horários. |
msdb.dbo.usp_TenantSqlAgentOperator_Update | Altera ou renomeia um operator. |
msdb.dbo.usp_TenantSqlAgentOperator_SetJobNotification | Faz um job avisar um operator ao terminar. |
msdb.dbo.usp_TenantSqlAgentOperator_Delete | Exclui um operator. |
EXEC msdb.dbo.usp_TenantSqlAgentOperator_Create
@OperatorName = N'Equipe TI', @EmailAddress = N'ti@suaempresa.com.br';
-- Avisar quando o job falhar (2 = em caso de falha)
EXEC msdb.dbo.usp_TenantSqlAgentOperator_SetJobNotification
@JobName = N'MEU_JOB', @OperatorName = N'Equipe TI', @NotifyLevelEmail = 2;4. SQL Agent — Alerts
| Procedimento | Para que serve |
|---|---|
msdb.dbo.usp_TenantSqlAgentAlert_List | Lista seus alerts. |
msdb.dbo.usp_TenantSqlAgentAlert_Create | Cria um alert por número de erro, por severidade ou por condição de desempenho. |
msdb.dbo.usp_TenantSqlAgentAlert_Update | Altera ou renomeia um alert. |
msdb.dbo.usp_TenantSqlAgentAlert_SetNotification | Liga ou desliga o aviso de um alert para um operator. |
msdb.dbo.usp_TenantSqlAgentAlert_Delete | Exclui um alert. |
EXEC msdb.dbo.usp_TenantSqlAgentAlert_Create
@AlertName = N'Erro 50001 no ERP', @MessageId = 50001, @DatabaseName = N'MEU_DATABASE';
EXEC msdb.dbo.usp_TenantSqlAgentAlert_SetNotification
@AlertName = N'Erro 50001 no ERP', @OperatorName = N'Equipe TI';5. Database Mail — Envio de e-mail
Configurar:
| Procedimento | Para que serve |
|---|---|
msdb.dbo.usp_TenantDatabaseMail_List | Mostra seus perfis e contas. |
msdb.dbo.usp_TenantDatabaseMail_SaveProfile | Cria ou renomeia um perfil. |
msdb.dbo.usp_TenantDatabaseMail_SaveAccount | Cria ou altera a conta de e-mail (servidor SMTP, porta, SSL, usuário). |
msdb.dbo.usp_TenantDatabaseMail_SetProfileAccess | Libera o perfil para um login do seu tenant. |
msdb.dbo.usp_TenantDatabaseMail_DeleteAccount | Exclui uma conta. |
msdb.dbo.usp_TenantDatabaseMail_DeleteProfile | Exclui um perfil. |
Enviar e acompanhar:
| Procedimento | Para que serve |
|---|---|
msdb.dbo.usp_TenantDatabaseMail_Send | Envia um e-mail pelo seu perfil. |
msdb.dbo.usp_TenantDatabaseMail_QueueStatus | Mostra a situação da fila de envio. |
msdb.dbo.usp_TenantDatabaseMail_SentItems | Lista os e-mails enviados (@OnlyFailed = 1 mostra somente os que falharam). |
msdb.dbo.usp_TenantDatabaseMail_EventLog | Mostra o registro de eventos do e-mail. |
EXEC msdb.dbo.usp_TenantDatabaseMail_Send
@ProfileName = N'MeuPerfil',
@recipients = 'financeiro@suaempresa.com.br',
@subject = N'Relatório diário',
@body = N'O processamento terminou.';
--Se a plataforma configurou o e-mail para você: use msdb.dbo.usp_SkyNova_SendTenantMail, que envia sem precisar informar perfil. O msdb.dbo.usp_SkyNova_GetTenantMailStatus consulta a situação de um envio pelo número dele (@mailitem_id).6. Linked Server — Consultar outro servidor SQL
| Procedimento | Para que serve |
|---|---|
master.dbo.usp_TenantLinkedServer_List | Lista seus Linked Servers. |
master.dbo.usp_TenantLinkedServer_Create | Cria a conexão com outro servidor e já testa. |
master.dbo.usp_TenantLinkedServer_SetCredential | Troca o usuário ou a senha do servidor de destino. |
master.dbo.usp_TenantLinkedServer_Test | Testa a conexão. |
master.dbo.usp_TenantLinkedServer_Drop | Exclui o Linked Server. |
master.dbo.usp_TenantLinkedServer_Audit | Mostra o histórico do que foi feito (@Scope = 'LOGIN' mostra somente você; @Scope = 'INSTANCE' mostra todo o tenant). |
EXEC master.dbo.usp_TenantLinkedServer_Create
@ServerName = N'SRV_ERP',
@DataSource = N'servidor.suaempresa.com.br,1433',
@RemoteUser = N'usuario_no_destino',
@RemotePassword = N'<senha_no_destino>';
SELECT * FROM SRV_ERP.MeuBanco.dbo.MinhaTabela;
--O nome do Linked Server aceita letras, números, _, . e -.7. Endpoint remoto — Consulta a outro servidor sem Linked Server
| Procedimento | Para que serve |
|---|---|
master.dbo.usp_TenantRemoteEndpoint_List | Lista seus endpoints. |
master.dbo.usp_TenantRemoteEndpoint_Save | Cadastra ou altera um destino (servidor, banco, usuário e senha). |
master.dbo.usp_TenantRemoteEndpoint_Delete | Exclui um endpoint. |
master.dbo.usp_TenantRemoteQuery_Execute | Executa uma consulta no destino cadastrado. |
EXEC master.dbo.usp_TenantRemoteQuery_Execute
@EndpointName = N'ERP_ANTIGO',
@Query = N'SELECT TOP 10 * FROM dbo.Clientes';8. Senha — Trocar a sua própria senha
| Procedimento | Para que serve |
|---|---|
master.dbo.usp_TenantLogin_TrocarMinhaSenha | Troca a senha do login com que você está conectado. |
master.dbo.usp_TenantLogin_MinhaSenha_Estado | Mostra a situação da sua senha. |
EXEC master.dbo.usp_TenantLogin_TrocarMinhaSenha
@SenhaAtual = N'<senha_atual>', @NovaSenha = N'<nova_senha>';
--A senha de outro login é trocada pela equipe da plataforma. Basta pedir.9. Manutenção do database
Um procedimento só, master.dbo.usp_TenantDatabase_Maintenance, com a ação no parâmetro @Action:
| Ação | O que faz | Parâmetros extras |
|---|---|---|
CHECKDB | Verifica a integridade do banco. | Opcionais: @PhysicalOnly, @DataPurity, @ExtendedLogicalChecks, @NoIndex, @TabLock, @MaxDop |
SHRINKFILE | Reduz um arquivo do banco. | @FileName (nome lógico) e @TargetSizeMB |
UPDATESTATS | Atualiza as estatísticas que mudaram. | Nenhum |
RCSI_ON / RCSI_OFF | Liga ou desliga o READ_COMMITTED_SNAPSHOT. | @ForceDisconnect = 1 derruba as outras sessões do banco |
EXEC master.dbo.usp_TenantDatabase_Maintenance
@DatabaseName = N'MEU_DATABASE', @Action = 'CHECKDB', @PhysicalOnly = 1;Para conhecimento:
- Com @TabLock = 1, feche as outras sessões do banco antes, ou o SQL Server recusa com Msg 5030.
- ALTER INDEX e UPDATE STATISTICS de uma tabela você roda direto, sem o procedimento.
- Se você usa a DatabaseIntegrityCheck da Ola Hallengren, importe o script pela plataforma: ela é convertida para usar este procedimento, e o seu job continua igual.
10. O que fica com a equipe da SkyNova
Nesses casos, abra um chamado:
- Criar, remover ou renomear login e database;
- Dar ou tirar acesso de um login a um database;
- Mudar tamanho máximo, crescimento ou arquivos do banco;
- Backup e restore;
- Configurações do servidor.
11. Mensagens de erro mais comuns
| Mensagem | O que significa |
|---|---|
"Login não autorizado para ... Self-Service" | O seu login não foi liberado para aquele recurso. Peça à plataforma. |
"O prefixo informado é reservado para a plataforma" | Nomes que começam com SkyNova são da plataforma. Escolha outro nome. |
"A categoria / o objeto não pertence a este tenant" | Você tentou alterar algo que não é seu. |
Msg 14278 | Agenda semanal sem @freq_recurrence_factor = 1. |
Msg 5030 | CHECKDB com TABLOCK e outra sessão aberta no banco. |
Aviso do SSMS: "Você não fez logon como proprietário do banco de dados..." | É apenas um aviso da tela de criação de tabela. Clique em OK e salve normalmente. |