Demonstra Passo a passo: Depuração de um tipo de SQL CLR definido pelo usuário
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. |
Este exemplo mostra como depurar um tipo de SQL CLR definida pelo usuário.Ele cria um novo tipo SQL CLR no banco de dados de exemplo AdventureWorks.O tipo, em seguida, é usado em uma definição de tabela, um INSERT demonstrativo e, em seguida, um SELECT demonstrativo.
Observação: |
---|
As caixas de diálogo e Masculino u comandos que você vê podem diferir das descritas no Help dependendo de suas configurações ativas ou edição.Para alterar as configurações, escolher Importar e exportar configurações on the Ferramentas menu.Para obter mais informações, consulte Configurações do Visual Studio. |
Para depurar um tipo definido pelo usuário CLR SQL
Em um novo projeto do SQL Server, estabeleça uma conexão com a banco de dados de exemplo AdventureWorks.Para obter mais informações, consulte Como: Conectar-se a um banco de dados.
Criar um novo tipo usando o código da primeira seção do exemplo abaixo e denomine Point.cs.Para obter mais informações, consulte Como: Desenvolver com o SQL servidor tipo de projeto.
Adicione um script que testa o tipo.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.salvar o arquivo com o nome Point.sql.clicar com o botão direito do mouse no nome de arquivo e clique em conjunto sistema autônomo padrão o script de depurar.
Adicione pontos de interrupção.
No Tipos de pasta Gerenciador de servidores, ponto em aberto.
Coloque um ponto de interrupção dentro de cada método para que você pode observar o fluxo de controle dentro do tipo.
From a Depurar menu, escolher Iniciar para compilar, implantar e unidade de teste do projeto.Quando o ponteiro de instrução, designado por uma seta amarela, aparecer no ponto de interrupção, você está depurando sua função.
Experimente recursos de depuração diferentes.
The Parse método é executado uma vez para cada INSERT demonstrativo no script em Point.sql. Ao clicar repetidamente Passar dentro on the Depurar menu, você pode inspeção como o método converte um número emparelhar delimitado por dois-pontos em um Point objeto.
No Variáveis locais janela, em aberto a variável pt, que contém o corrente Point sendo criado.
No Editor de texto, clicar duas vezes o pt variável para selecioná-lo. arrastar pt em qualquer local a Observação janela.pt Agora é adicionado à lista de variáveis observadas, e você pode observar sistema autônomo o Point é criado.
Depurar a classe várias vezes e observe as diferenças entre o caminho um INSERT e um SELECT leve.
Pressione Continue novamente para concluir a depuração da função.
Exemplo
Esse é o código define o tipo usado neste exemplo.Esse código cria uma tabela denominada Points, insere linhas nele e imprime o Sumário da tabela.Observe que não é necessário incluir o comando de lote GO entre criar a tabela e acessá-lo. Na verdade Visual Studio 2005 interpretará o GO sistema autônomo um comando SQL inválido.
using System;
using System.Data.Sql;
using System.Data.SqlTypes;
using System.Runtime.Serialization;
[Serializable, SqlUserDefinedTypeAttribute(Format.Native)]
public struct Point: INullable
{
private bool m_isNull;
private double m_x;
private double m_y;
public bool IsNull {
get { return (m_isNull); }
}
public override string ToString()
{
if (this.IsNull) { return "NULL"; }
else { return this.m_x + ":" + this.m_y; }
}
public static Point Parse(SqlString s)
{
if (s.IsNull) { return Null; }
else
{
// Parse input string here to separate out points:
Point pt = new Point();
string str = Convert.ToString(s);
string[] xy = str.Split(':');
pt.X = Convert.ToDouble(xy[0]);
pt.Y = Convert.ToDouble(xy[1]);
return (pt);
}
}
public static Point Null
{
get
{
Point pt = new Point();
pt. m_isNull = true;
return (pt);
}
}
public double X
{
get { return (this.m_x); }
set { m_x = value; }
}
public double Y
{
get { return (this.m_y); }
set { m_y = value; }
}
}
Este é o script de teste que chama a função.
CREATE TABLE dbo.Points (
ID int IDENTITY(1,1) PRIMARY KEY,
Pnt Point)
INSERT INTO dbo.Points (Pnt) VALUES (CONVERT(Point, '3:4'))
INSERT INTO dbo.Points (Pnt) VALUES (CONVERT(Point, '-1:5'))
INSERT INTO dbo.Points (Pnt) VALUES (CAST ('1:99' AS Point))
SELECT ID,
Pnt.ToString() as StringPoint,
Pnt.X as X,
Pnt.Y as Y
FROM dbo.Points
Consulte também
Tarefas
Como: Criar e executar um servidor SQL CLR Tipo Definido pelo Usuário