Como: Depurar um CLR SQL procedimento armazenado
Este tópico se aplica a:
Edition |
Visual Basic |
C# |
C++ |
Desenvolvedores Web |
---|---|---|---|---|
Express |
![]() |
![]() |
![]() |
![]() |
Visual Studio Professional[Visual Studio Premium, e Visual Studio Ultimate. |
![]() |
![]() |
![]() |
![]() |
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.
![]() |
---|
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
Ative a depuração remota. Para obter mais informações, consulte Como: Configurar depuração remota.
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.
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.
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.
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.
Tente diferentes recursos de depuração.
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çã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.
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.
Com o botão direito no Editor de texto, o InsertCurrencyCommand.ExecuteNonQuery de linha e no menu de atalho, clique em Insert Breakpoint.
Sobre o Debug menu, clique em continuar e o depurador executará o código até o novo ponto de interrupção.
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
Outros recursos
Como: Configurar seus computadores para habilitar o Transact-SQL e depuração de CLR de SQL