Partilhar via


Demonstra Passo a passo: Uma função escalar SQL CLR definido pelo usuário de depuração.

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 SQL Server Common Language Runtime (CLR SQL) usuário definido função (UDF). Ele cria uma nova função SQL CLR definida pelo usuário no banco de dados de exemplo AdventureWorks.

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 uma função escalar CLR SQL definida pelo usuário

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

  2. Crie uma nova função usando o código da primeira seção do exemplo abaixo e nomeá-la OrderCount. Para obter mais informações, consulte How to: Develop with the SQL Server Project Type.

  3. Adicionar um script que testa a função incluindo-o em um SELECT instruçã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 CallOrderCount. Clique com o botão direito no nome do arquivo e escolha Set as Default Debug Script.

  4. Coloque um ponto de interrupção no OrderCount. cs na linha que instancia um SqlCommande, em seguida, o Depurar 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, aparecer no ponto de interrupção, você está depurando sua função.

  5. Experimente recursos de depuração diferentes.

    1. Etapa após a instrução instanciando o SqlCommand usando Step Into partir do Depurar menu.

    2. No Locals janela, abra a variável sqlComm, que é um SqlCommande examine seus membros.

    3. Clique Step Into no menu Debug para passar uma linha na função. Observe que o membro sqlComm.CommandText foi instanciado tem.

    4. No Editor de texto, arraste sqlComm para qualquer local na Watch janela. A variável agora é adicionada à lista de variáveis observadas.

    5. Escolha Step Into novamente e observe que uma nova janela rotulada Dynamic T-SQL abre, exibindo a instrução SQL que está prestes a ser executada.

    6. Escolha Step Into por executar a instrução e retornar para a função.

    7. Pressione Continue novamente, e observe a segunda janela Dynamic T-SQL que abre, mostrando o código que retorna o valor da função.

    8. Pressione Continue novamente para concluir a depuração da função.

Exemplo

Isso é o código necessário para criar a função.

using System;
using System.Data.SqlClient;
using Microsoft.SqlServer.Server;
 
 
public partial class UserDefinedFunctions
{
    [Microsoft.SqlServer.Server.SqlFunction(DataAccess = DataAccessKind.Read)]
    public static int OrderCount()
    {
        using (SqlConnection conn = new SqlConnection("context connection=true"))
            {
                  conn.Open();
                  SqlCommand cmd = new SqlCommand();
                  cmd.Connection = conn;
                  cmd.CommandText = "SELECT 42";
                  
                  //cmd = new SqlCommand("SELECT 42",conn);
 
                  int result = (int)cmd.ExecuteScalar();
                  return result;
            }
    }
};

Este é o script de teste que chama a função.

SELECT dbo.OrderCount()

Consulte também

Tarefas

Como: Criar e executar uma função de SQL Server User-Defined usando a integração do Common Language Runtime