Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A execução direta é a maneira mais básica 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 chega ao servidor, o SQL Server a compila em um plano de execução e, em seguida, executa imediatamente o plano de execução.
A execução direta geralmente é usada por aplicativos que criam e executam instruções em tempo de execução e é o método mais eficiente para instruções que serão executadas uma única vez. Sua desvantagem com muitos bancos de dados é que a instrução SQL deve ser analisada e compilada sempre que for executada, o que adiciona sobrecarga se a instrução for executada várias vezes.
O SQL Server melhora significativamente o desempenho da execução direta de instruções comumente executadas em ambientes multiusuários e o uso de SQLExecDirect com marcadores de parâmetro para instruções SQL normalmente executadas pode abordar a eficiência da execução preparada.
Quando conectado a uma instância do SQL Server, o driver ODBC do SQL Server Native Client usa sp_executesql para transmitir a instrução SQL ou o lote especificado no SQLExecDirect. O 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, o SQL Server simplesmente reutilizará o plano existente em vez de compilar um novo plano. Isso significa que as instruções SQL normalmente executadas com SQLExecDirect em um sistema com muitos usuários se beneficiarão de muitos dos benefícios de reutilização do plano que estavam disponíveis apenas para procedimentos armazenados em versões anteriores do SQL Server.
Esse benefício de reutilização de planos de execução só funciona quando vários usuários estão executando a mesma instrução SQL ou lote. Siga estas convenções de codificação para aumentar a probabilidade de que as instruções SQL executadas por clientes diferentes sejam semelhantes o suficiente para poder reutilizar planos de execução:
Não inclua constantes de dados nas instruções SQL; em vez disso, use marcadores de parâmetro associados a variáveis de programa. Para obter mais informações, consulte Como usar parâmetros de instrução.
Use nomes de objeto totalmente qualificados. Os planos de execução não serão reutilizados se os nomes dos objetos não forem qualificados.
Ter conexões de aplicativo o mais possível usa 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 com outro conjunto de opções. O driver ODBC do SQL Server Native Client e o provedor OLE DB do 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, o SQL Server poderá reutilizar planos de execução quando a oportunidade surgir.