Execução direta

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)

A execução direta é o modo mais básico de executar uma instrução. Um aplicativo cria uma cadeia de caracteres que contém uma instrução Transact-SQL e a envia para execução usando a função SQLExecDirect . Quando a instrução atinge o servidor, SQL Server o compila em um plano de execução e, em seguida, executa imediatamente o plano de execução.

A execução direta normalmente é usada por aplicativos que compilam e executam instruções no tempo de execução e é o método mais eficiente para instruções que serão executadas de uma só vez. O problema com muitos bancos de dados é que a instrução SQL deve ser analisada e compilada sempre que é executada, o que adiciona sobrecarga se a instrução for executada várias vezes.

SQL Server melhora significativamente o desempenho da execução direta de instruções comumente executadas em ambientes multiusuário e o uso de SQLExecDirect com marcadores de parâmetro para instruções SQL comumente executadas pode abordar a eficiência da execução preparada.

Quando conectado a uma instância do SQL Server, o driver ODBC SQL Server Native Client usa sp_executesql para transmitir a instrução SQL ou o lote especificado em SQLExecDirect. SQL Server tem lógica para determinar rapidamente se uma instrução SQL ou lote executado com sp_executesql corresponde à instrução ou lote que gerou um plano de execução que já existe na memória. Se uma correspondência for feita, SQL Server simplesmente reutilizará o plano existente em vez de compilar um novo plano. Isso significa que instruções SQL normalmente executadas executadas com SQLExecDirect em um sistema com muitos usuários se beneficiarão de muitos dos benefícios de reutilização de plano que só estavam disponíveis para procedimentos armazenados em versões anteriores do SQL Server.

Esse benefício de reutilizar planos de execução só funciona quando vários usuários estiverem executando a mesma instrução ou lote SQL. Siga estas convenções de codificação para aumentar a probabilidade de as instruções SQL executadas por clientes diferentes serem semelhantes a ponto de permitirem a reutilização de planos de execução:

  • Não inclua constantes de dados nas instruções SQL; em vez disso, use marcadores de parâmetro associados para programar variáveis. Para obter mais informações, consulte Usando parâmetros de instrução.

  • Use nomes de objeto totalmente qualificados. Os planos de execução não serão reutilizados se os nomes de objeto não forem totalmente qualificados.

  • Faça com que as conexões de aplicativo usem, na medida do possível, um conjunto comum de opções de conexão e instrução. Os planos de execução gerados para uma conexão com um conjunto de opções (como ANSI_NULLS) não são reutilizados para uma conexão que tenha outro conjunto de opções. O driver ODBC SQL Server Native Client e o provedor OLE DB SQL Server Native Client têm as mesmas configurações padrão para essas opções.

Se todas as instruções executadas com SQLExecDirect forem codificadas usando essas convenções, SQL Server poderá reutilizar planos de execução quando surgir a oportunidade.

Consulte Também

Executando instruções (ODBC)