Partilhar via


Como: Depurar um CLR SQL procedimento armazenado

Este tópico se aplica a:

Edition

Visual Basic

C#

C++

Desenvolvedores Web

Express

O tópico não é aplicável O tópico não é aplicável O tópico não é aplicável O tópico não é aplicável

Visual Studio Professional[Visual Studio Premium, e Visual Studio Ultimate.

O tópico é aplicável O tópico é aplicável O tópico é aplicável O tópico é aplicável

Você pode depurar um existente SQL Server Common Language Runtime (CLR SQL) o procedimento armazenado usando o recurso de depuração do banco de dados direto, da mesma maneira que você deseja depurar um Transact-SQL procedimento. No entanto, que não funcionará se você precisar criar ou modificar um procedimento CLR de SQL, pois você precisará compilar e implantá-lo. Essas etapas que não existem para o Transact-SQL procedimento. Nesse caso, você precisará criar um SQL Server o projeto em Visual Studio.

A tarefa a seguir cria um novo CLR de SQL procedimento armazenado no banco de dados AdventureWorks, um dos bancos de dados instalado com o SQL Server 2005e mostra como depurar um proprietário. Você criar um procedimento armazenado que adiciona uma nova moeda na tabela Currency.

Este exemplo concentra-se na depuração dentro de um SQL Server project. Depois de ter criado o procedimento armazenado, você pode depurar usando o banco de dados direto de depuração. Para obter mais informações, consulte How to: Step into an Object Using Server Explorer.

ObservaçãoObservação

As caixas de diálogo e comandos de menu demonstradas podem ser diferentes daqueles descritos na Ajuda, dependendo das configurações ativas ou configurações de edição. Para alterar as configurações, escolha Import and Export Settings sobre o Ferramentas menu. Para obter mais informações, consulte Trabalhando com configurações.

Se, quando você tentar depurar um objeto CLR em SQL, a mensagem "Cancelada pelo usuário" aparece, você deve configurar manualmente o computador no qual você está executando Visual Studio , bem como o computador que está executando o SQL Server. Para obter mais informações, consulte Como: Configurar seus computadores para habilitar o Transact-SQL e depuração de CLR de SQL.

Para depurar um CLR SQL procedimento armazenado

  1. Ative a depuração remota. Para obter mais informações, consulte Como: Configurar depuração remota.

  2. Em uma nova SQL Server de projeto, estabelecer uma conexão com o banco de dados de exemplo AdventureWorks. Para obter mais informações, consulte How to: Connect to a Database.

  3. Criar um novo procedimento armazenado usando o código da primeira seção do exemplo que se segue e o nome InsertCurrency.cs. Para obter mais informações, consulte How to: Develop with the SQL Server Project Type.

  4. Adicione um script que testa o procedimento armazenado chamando-os. Em Solution Explorer, com o botão direito do TestScripts directory, clique em Add Test Scripte insira o código da segunda seção do exemplo a seguir. Salve o arquivo com o nome InsertCurrency.sql. Clique com o botão direito no nome do arquivo e, em seguida, clique em Set as Default Debug Script.

  5. Definir pontos de interrupção de InsertCurrency.cs e em seguida, o Debug menu, clique em Iniciar para compilar, implantar e o projeto de teste de unidade. Quando o ponteiro de instrução, designado por uma seta amarela, aparece em um ponto de interrupção, você está depurando o procedimento armazenado.

  6. Tente diferentes recursos de depuração.

    1. Abrir o Locals janela e o Depurar menu, clique em Step Into para passar uma linha na stored procedure. Observe que o valor da variável @mynvarchar mudou a Locals janela e seu valor agora é exibido em vermelho, indicando que ele foi alterado. Para obter mais informações, consulte usando a janela Locals.

      ObservaçãoObservação

      O servidor pode não refletir as alterações em valores de variáveis nas janelas do depurador. Para obter mais informações, consulte Limitações depuração SQL.

    2. Abra a janela Watch. No O Editor de texto, arraste o InsertCurrencyCommand variável para qualquer local na Watch janela.

      A variável agora é adicionada à lista de variáveis observadas. Para obter mais informações, consulte Como: Use Debugger Variable Windows.

      Notavocê pode editar os valores das variáveis na Watch janela também.

    3. Com o botão direito no Editor de texto, o InsertCurrencyCommand.ExecuteNonQuery de linha e no menu de atalho, clique em Insert Breakpoint.

    4. Sobre o Debug menu, clique em continuar e o depurador executará o código até o novo ponto de interrupção.

  7. Clique em continuar novamente para concluir o procedimento armazenado de depuração.

    Uma mensagem aparece no saída janela informando que o procedimento armazenado foi implantado com êxito e exibe o resultado da execução dos comandos no arquivo InsertCurrency.sql.

Exemplo

Substitua o modelo de procedimento armazenado com esse código.

using System;
using System.Data;
using System.Data.Sql;
using System.Data.SqlServer;
using System.Data.SqlTypes;

public partial class StoredProcedures
{
    [SqlProcedure]
    public static void InsertCurrency(SqlString currencyCode, 
                                               SqlString name)
    {
        using(SqlConnection conn = new SqlConnection("context connection=true")) {
        SqlCommand cmd = new SqlCommand([your SQL statement], conn);
        }
        InsertCurrencyCommand.CommandText = "insert Sales.Currency"
                     + " (CurrencyCode, Name, ModifiedDate) values('" 
                     + currencyCode.ToString() + "', '" 
                     + name.ToString() + "', '" 
                     + DateTime.Now.ToString() + "')";
        InsertCurrencyCommand.ExecuteNonQuery();
    }
}

Este é o script de teste que é usado para executar o procedimento armazenado.

- Delete any row that might exist with a key value
- that matches the one we are going to insert
DELETE Sales.Currency
WHERE CurrencyCode = 'eee'
EXEC InsertCurrency 'eee', 'MyCurr4'
SELECT * FROM Sales.Currency WHERE CurrencyCode = 'eee'

Consulte também

Tarefas

Como: Criar e executar um procedimento armazenado do SQL Server usando a integração do Common Language Runtime

Outros recursos

Como: Configurar seus computadores para habilitar o Transact-SQL e depuração de CLR de SQL