Partilhar via


Demonstra Passo a passo: Depuração um disparador CLR de SQL

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

Standard

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

Pro e equipe

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

Este exemplo mostra como depurar um disparador CLR SQL. Ele usa o contato tabela no AdventureWorks banco de dados de amostra, que é um dos bancos de dados instalados com o SQL Server 2005. O exemplo cria uma inserção de nova SQL CLR disparar no contato tabela e as etapas para ele.

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.

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.

Para depurar um disparador CLR SQL:

  1. Em um novo projeto de SQL de CLR, estabelecer uma conexão com o AdventureWorks banco de dados. Para obter mais informações, consulte How to: Connect to a Database.

  2. Criar um novo disparador usando o código da primeira seção do exemplo abaixo e nomeá-lo iContact. Para obter mais informações, consulte How to: Develop with the SQL Server Project Type.

  3. Adicionar um script que testa o disparador gerando uma ativação. No Solution Explorer clique com o botão direito do mouse no diretório TestScripts, clique Add Test Script, e insira o código da segunda seção do exemplo abaixo. Salve o arquivo com o nome truContact. Clique com o botão direito no nome do arquivo e, em seguida, clique em Set as Default Debug Script.

  4. Definir pontos de interrupção no iContact. cs e, em seguida, clique em Iniciar da Debug menu para compilar, implantar e unidade de testar o projeto. Quando o ponteiro de instrução, designado por uma seta amarela, aparecer em um ponto de interrupção, você está depurando o disparador.

  5. Experimente recursos de depuração diferentes.

    1. Etapa após a instrução instanciando o SqlTriggerContext.

    2. Abra a janela Locals. Observe que você pode abrir a variável triggContext, que é um SqlTriggerContext, e você pode examinar seus membros. Para obter mais informações, consulte Como: Use Debugger Variable Windows.

      ObservaçãoObservação

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

    3. Escolha Step Into no menu Debug para passar uma linha na stored procedure. Observe que a execução tem instanciado o valor da variável sqlP do tipo SqlPipe.

    4. Abra a janela Watch. Arrastar o sqlP variável em qualquer local do Watch janela. A variável agora é adicionada à lista de variáveis observadas. Para obter mais informações, consulte Como: Use Debugger Variable Windows.

      ObservaçãoObservação

      Você pode editar os valores das variáveis na janela Watch.

    5. No editor de texto, clique com o botão direito do mouse na linha última e clique em Insert Breakpoint.

    6. No menu Debug, clique Continue e o depurador executará o código até o novo ponto de interrupção.

  6. Clique Continue novamente para concluir a depuração do disparador. Uma mensagem aparece na janela Output informando que o disparador foi depurado com êxito e exibe o resultado da execução dos comandos no arquivo truContact.sql.

Exemplo

Isso é o código necessário para criar o disparador usado neste exemplo.

using System;
using System.Data;
using System.Data.Sql;
using Microsoft.SqlServer.Server;


public partial class Triggers
{
      // Enter existing table or view for the target and uncomment the attribute line.
      [Microsoft.SqlServer.Server.SqlTrigger (Name="Trigger1", Target="primes", Event="FOR UPDATE")]
      public static void Trigger1()
      {
            SqlTriggerContext triggContext = SqlContext.TriggerContext;
            SqlPipe sqlP = SqlContext.Pipe;
            sqlP.Send("primes inserted!");
      }
}

Este é o script de teste que fará com que o disparador seja acionado.

UPDATE Person.Contact SET MiddleName = 'A' WHERE ContactID = 8

Consulte também

Tarefas

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