Partilhar via


Utilizar procedimentos armazenados para conjuntos de SQL dedicados no Azure Synapse Analytics

Este artigo fornece sugestões para desenvolver soluções de conjuntos de SQL dedicadas através da implementação de procedimentos armazenados.

O que esperar

O conjunto de SQL dedicado suporta muitas das funcionalidades T-SQL utilizadas no SQL Server. Mais importante ainda, existem funcionalidades específicas de aumento horizontal que pode utilizar para maximizar o desempenho da sua solução.

Além disso, para o ajudar a manter a escala e o desempenho do conjunto de SQL dedicado, existem funcionalidades e funcionalidades adicionais que têm diferenças comportamentais.

Introdução aos procedimentos armazenados

Os procedimentos armazenados são uma excelente forma de encapsular o código SQL, que é armazenado perto dos dados do conjunto de SQL dedicados. Os procedimentos armazenados também ajudam os programadores a modularizar as suas soluções ao encapsularem o código em unidades geríveis, facilitando assim uma maior reutilização de código. Cada procedimento armazenado também pode aceitar parâmetros para torná-los ainda mais flexíveis.

O conjunto de SQL dedicado fornece uma implementação simplificada e simplificada do procedimento armazenado. A maior diferença em comparação com SQL Server é que o procedimento armazenado não é código pré-compilado.

Em geral, para os armazéns de dados, o tempo de compilação é pequeno em comparação com o tempo que demora a executar consultas em grandes volumes de dados. É mais importante garantir que o código do procedimento armazenado está corretamente otimizado para consultas grandes.

Dica

O objetivo é poupar horas, minutos e segundos, não milissegundos. Por isso, é útil pensar nos procedimentos armazenados como contentores para a lógica do SQL.

Quando um conjunto de SQL dedicado executa o procedimento armazenado, as instruções SQL são analisadas, traduzidas e otimizadas no tempo de execução. Durante este processo, cada instrução é convertida em consultas distribuídas. O código SQL que é executado nos dados é diferente da consulta submetida.

Aninhar procedimentos armazenados

Quando os procedimentos armazenados chamam outros procedimentos armazenados ou executam SQL dinâmico, o procedimento armazenado interno ou invocação de código é considerado aninhado.

O conjunto de SQL dedicado suporta um máximo de oito níveis de aninhamento. Em contraste, o nível de ninho no SQL Server é 32.

A chamada de procedimento armazenado de nível superior equivale ao nível 1 do aninhamento.

EXEC prc_nesting

Se o procedimento armazenado também fizer outra chamada EXEC, o nível de ninho aumenta 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 ninho aumenta 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 conjunto de SQL dedicado não suporta @@NESTLEVEL. Como tal, tem de controlar o nível do ninho. É pouco provável que exceda o limite de oito níveis de ninho. No entanto, se o fizer, terá de reformular o código para se ajustar aos níveis de aninhamento dentro deste limite.

INSERT.. EXECUTAR

O conjunto de SQL dedicado não lhe permite consumir o conjunto de resultados de um procedimento armazenado com uma instrução INSERT. No entanto, existe uma abordagem alternativa que pode utilizar. Por exemplo, veja o artigo sobre tabelas temporárias.

Limitações

Existem alguns aspetos dos procedimentos armazenados transact-SQL que não são implementados no conjunto de SQL dedicado, que são os seguintes:

  • procedimentos armazenados temporários
  • procedimentos armazenados numerados
  • procedimentos armazenados expandidos
  • Procedimentos armazenados clR
  • opção de encriptação
  • opção de replicação
  • parâmetros com valor de tabela
  • parâmetros só de leitura
  • parâmetros predefinidos
  • contextos de execução
  • declaração de devolução

Passos seguintes

Para obter mais sugestões de desenvolvimento, veja Descrição geral do desenvolvimento.