Limitações depuração SQL
Este tópico se aplica a:
Edição |
Visual Basic |
C# |
C++ |
Desenvolvedores Web |
---|---|---|---|---|
Express |
||||
Padrão |
||||
PRO e equipe |
Legenda de tabela:
Aplica-se |
|
Não é aplicada |
|
Comando ou comandos oculta por padrão. |
Há várias limitações Geral para depuração SQL, que esta seção descreve.
Depuração de SQL em vários níveis
Quando depuração aplicativos de vários níveis, não é possível usar Passar dentro para entrar no código na camada de aplicativos (translation from VPE for Csharp, Visual Basic ou C++), o código sobre o SQL Server 2005 (T-SQL ou SQL/CLR). Em vez disso, conjunto um ponto de interrupção no código do procedimento armazenado e pressione Continuar (F5) para executar código até o ponto de interrupção.Você também pode usar executar até o cursor para alcançar um ponto desejado, sem usar um ponto de interrupção.Observe que dentro de SQL Server 2005 camada, você pode Avançar e para trás entre T-SQL e o código SQL/CLR.
Também não é etapa Outros maneira, do código de procedimento armazenado com o código na camada que chamou o procedimento armazenado.Se você deseja continuar a depuração após retornar para a camada de aplicativo conjunto um ponto de interrupção em seu código de aplicativo após o ponto do qual o procedimento armazenado foi chamado.
O pool de conexões é uma técnica para melhorar o desempenho.Quando um aplicativo fecha a conexão de dados, uma conexão do SQL servidor não está completamente fechada mas em vez disso, é mantida em um pool que pode ser reutilizado mais tarde, se o aplicativo, em seguida, tentar reabrir a conexão.No entanto, quando uma conexão for restabelecida através do pool de conexão, depuração SQL não é reativado.
Você deve desabilitar temporariamente o pool de conexão durante a depuração.Para fazer isso, conjunto "pooling = false" na cadeia de conexão usada para se conectar ao SQL servidor.Ao terminar a depuração, remova este atributo da seqüência de caracteres de conexão e o pool será ativado por padrão.
Um aplicativo gerenciado pode se conectar a uma fonte de dados SQL servidor usando o Provedor de dados do .NET estrutura para o SQL servidor, que oferece um desempenho melhor do que se conectando com OLE DB or ODBC.Você pode fazer ambas gerenciado depuração e depuração de SQL na mesma sessão do depurador.
Se estiver executando um aplicativo gerenciado e anexar ao aplicativo usando o depurador, você terá a escolha de qual tipo de depuração que você deseja fazer.Se você desejar fazer depuração SQL, você deve escolher depuração SQL e se você deseja depurar código SQL/CLR, em seguida, especifique também depuração gerenciada.
Você pode fazer a depuração SQL depois de anexar a um aplicativo em execução.No entanto, observe que somente as conexões de banco de dados criados após você concluiu o Anexar pode ser depurado.Portanto, se um aplicativo chama um procedimento armazenado que está levando muito time, não é possível anexar à conexão que chamou o procedimento armazenado, mas somente para novas conexões chamar o procedimento armazenado depois de se conectar ao aplicativo.
Se você está depurando por meio de uma conexão feita com OleDbDataAdapter, aguardar um time significativo após alcançar um ponto de interrupção fará com que a conexão com o time limite.Quando você tenta continuar a depuração após esse tempo limite (escolhendo Continuar from the Depurar menu, por exemplo), o depurador será encerrado (em vez de continuar a execução).Este comportamento é esperado.O depurador é encerrado porque OleDbDataAdapter, SqlDataAdapter, ao contrário do não lançar uma exceção quando ocorre um tempo limite.Para contornar esse problema, defina o valor de tempo limite como um número alto ao usar o OleDbDataAdapter.
Para obter informações sobre como definir o valor de tempo limite para provedores de dados .NET estrutura, consulte Propriedade OleDbCommand.CommandTimeout and Propriedade SqlCommand.CommandTimeout na documentação do .NET estrutura classe biblioteca.
Para obter as últimas notícias sobre as tecnologias MDAC, consulte o site de Microsoft Universal dados acesso na Web https://www.Microsoft.com/dados.
Outras limitações
Disparadores devem ser acionados a ser depurado: Você não pode depurar disparadores diretamente.Em vez disso, inicie depuração em um procedimento armazenado que fará com que o disparar a ser acionado.
No tempo de execução de depuração, uma série de subselects (por exemplo, em uma união) pode preencher a netbuffer.Isso pode fazer com que o código executado bem normalmente ser interrompido durante a depuração.Para obter mais dados, use conjunto de registros.MoveNext e conjunto de registros.NextRecordSet.
Se o nome de um procedimento armazenado contiver aspas, você pode receber um depurador de mensagem de erro.Para obter mais informações, consulte Erro durante a depuração de procedimentos com nomes que contêm cotações.
Valores do cache não são modificados automaticamente.Você não pode esperar sempre que as alterações locais ou parâmetros que são armazenados em cache pelo intérprete SQL entrarão em vigor durante o período de time são percorrendo uma demonstrativo SQL.Embora talvez você tenha modificado o valor, ele nunca pode ser verificado novamente.Você não pode forçar uma atualização de valores armazenados em cache.Valores do cache existem porque o plano de execução do SQL servidor determina que os valores para algumas variáveis não serão dinamicamente carregados para cada execução de demonstrativo ou referência.Para obter mais informações, procure "plano de execução" naSQL Server 2005 documentação.
Não é possível anexar ao processo do SQL servidor nativo ao depurar um procedimento armazenado simultaneamente.