Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo fornece dicas para desenvolver soluções de pool SQL dedicadas implementando procedimentos armazenados.
O que esperar
O pool SQL dedicado oferece suporte a muitos dos recursos T-SQL usados no SQL Server. Mais importante ainda, há recursos específicos de expansão que você pode usar para maximizar o desempenho de sua solução.
Além disso, para ajudá-lo a manter a escala e o desempenho do pool SQL dedicado, há recursos e funcionalidades adicionais que têm diferenças comportamentais.
Introdução aos procedimentos armazenados
Os procedimentos armazenados são uma ótima maneira de encapsular seu código SQL, que é armazenado perto dos dados dedicados do pool SQL. Os procedimentos armazenados também ajudam os desenvolvedores a modularizar suas soluções, encapsulando o código em unidades gerenciáveis, facilitando assim uma maior reutilização do código. Cada procedimento armazenado também pode aceitar parâmetros para torná-los ainda mais flexíveis.
O pool SQL dedicado oferece uma implementação de procedimento armazenado simplificada e otimizada. A maior diferença em comparação com o SQL Server é que o procedimento armazenado não é código pré-compilado.
Em geral, para armazéns de dados, o tempo de compilação é pequeno em comparação com o tempo necessário para executar consultas em grandes volumes de dados. É mais importante garantir que o código do procedimento armazenado seja corretamente otimizado para consultas grandes.
Sugestão
O objetivo é economizar horas, minutos e segundos, não milissegundos. Portanto, é útil pensar em procedimentos armazenados como contêineres para lógica SQL.
Quando um pool SQL dedicado executa seu procedimento armazenado, as instruções SQL são analisadas, traduzidas e otimizadas em tempo de execução. Durante esse processo, cada instrução é convertida em consultas distribuídas. O código SQL que é executado em relação aos dados é diferente da consulta enviada.
Aninhamento de Procedimentos Armazenados
Quando os procedimentos armazenados chamam outros procedimentos armazenados ou executam SQL dinâmico, o procedimento armazenado interno ou a invocação de código é considerada aninhada.
O pool SQL dedicado oferece suporte a um máximo de oito níveis de aninhamento. Por outro lado, o nível de aninhamento no SQL Server é 32.
A chamada de procedimento armazenado de nível superior equivale ao nível de aninhamento 1.
EXEC prc_nesting
Se o procedimento armazenado também fizer outra invocação EXEC, o nível de aninhamento é incrementado para dois.
CREATE PROCEDURE prc_nesting
AS
EXEC prc_nesting_2 -- This call is nest level 2
GO
EXEC prc_nesting
Se o segundo procedimento executar algum SQL dinâmico, o nível de aninhamento aumentará para três.
CREATE PROCEDURE prc_nesting_2
AS
EXEC sp_executesql 'SELECT 'another nest level' -- This call is nest level 2
GO
EXEC prc_nesting
Atualmente, o pool SQL dedicado não oferece suporte a @@NESTLEVEL. Como tal, deves acompanhar o nível do ninho. É improvável que você exceda o limite de oito níveis de ninho. Mas, se o fizeres, terás de retrabalhar o teu código para ajustar os níveis de aninhamento dentro deste limite.
INSERIR.. EXECUTAR
O pool SQL dedicado não permite que você consuma o conjunto de resultados de um procedimento armazenado com uma instrução INSERT. Existe, no entanto, uma abordagem alternativa que pode utilizar. Para um exemplo, consulte o artigo sobre tabelas temporárias.
Limitações
Há alguns aspetos dos procedimentos armazenados Transact-SQL que não são implementados no pool SQL dedicado, que são os seguintes:
- Processos armazenados temporários
- Procedimentos armazenados numerados
- Procedimentos armazenados estendidos
- Procedimentos armazenados CLR
- opção de encriptação
- opção de replicação
- parâmetros com valor de tabela
- Parâmetros somente leitura
- parâmetros padrão
- contextos de execução
- Declaração de devolução
Próximos passos
Para obter mais dicas de desenvolvimento, consulte Visão geral do desenvolvimento.