Atributos para projetos SQL Server e objetos de bancos de dados

Um atributo deve ser aplicado para cada projeto Microsoft SQL Server e para todos os arquivos objeto de banco de dados que um projeto contém:

Projeto / arquivo

Atributo que deve ser aplicado

Project

SqlAssemblyAttribute

Agregado

SqlUserDefinedAggregateAttribute

Procedimento armazenado

SqlProcedureAttribute

Disparador

SqlTriggerAttribute

User-defined Function

SqlFunctionAttribute

User-defined Type

SqlUserDefinedTypeAttribute

SqlAssembly Attribute

O atributo deve ser aplicado a todos os módulos que são implantados em um banco de dados Microsoft SQL Server 2005.Este atributo não tem parâmetros.Ela é adicionada ao arquivo AssemblyInfo quando você cria um projeto do SQL Server.

Atributo SqlUserDefinedAggregate

Este atributo deve ser aplicado para agregar arquivos.Este atributo tem duas propriedades: Format andMaxByteSize.

  • Format
    Obrigatório.O formato de armazenamento do agregado.Os formatos com suporte são:

    Native – Specifies that SQL Server uses an efficient native representation on disk.Esta opção de formato é o mais compacta e fornece o melhor desempenho.Os requisitos para esse formato são:

    • The StructLayout.LayoutKindSequential attribute must be applied to the aggregate.

    • Todos os campos do agregado precisam permitir transferências de bits, ou seja, eles devem ter uma representação comum tanto na memória gerenciada e não gerenciada e não exigem tratamento especial pelo interop marshaler.

    • The aggregate must not specify a value for MaxByteSize.

    • A agregação não deve ter quaisquer campos [NonSerialized].

    • Campos não devem ser marcados como um layout explícito.

    UserDefined - Specifies that the user has full control over the binary format.Os requisitos para esse formato são:

    • The aggregate must implement IBinarySerialize.

    • The aggregate must specify a value for MaxByteSize.

  • MaxByteSize
    O tamanho máximo de uma instância desta agregação, em bytes.Obrigatório somente se o Format é conjunto para UserDefined. Não deve ser especificado quando o Format é definido como Native.

Este exemplo especifica que o Format é a agregação Native.

<SqlUserDefinedAggregate(Format.Native)> _
Public Class SampleAggregate
    '...
End Class
[SqlUserDefinedAggregate(Format.Native)]
public class SampleAggregate
{
   //...
}

Atributo SqlProcedure

Este atributo deve ser aplicado a arquivos de procedimento armazenados.Este atributo tem o parâmetro a seguir:

  • Name - Optional.Especifica o nome que é usado no SQL Server para referênciar o procedimento armazenado.

This example specifies that the stored procedure is referenced using the name sp_sqlName.

Partial Public Class StoredProcedures

    <SqlProcedure(Name:="sp_sqlName")> _
    Public Shared Sub SampleProcedure(ByVal s As SqlString)
        '...
    End Sub
End Class
public partial class StoredProcedures
{
    [SqlProcedure(Name="sp_sqlName")]
    public static void SampleProcedure(SqlString s)
    {
        //...
    }
}

Atributo SqlTrigger

Este atributo deve ser aplicado para acionar arquivos.Este atributo tem os seguintes parâmetros:

  • Name - Optional.Especifica o nome que é usado no SQL Server para referênciar o disparador.

  • Target - Required.Especifica a tabela à qual o disparador é aplicado.

  • Event - Required.Especifica a ação que ativa o disparador.

This example specifies that the trigger is activated by updating existing data (UPDATE) in the table authors.

Partial Public Class Triggers

    <SqlTrigger(Target:="authors", Event:="FOR UPDATE")> _
    Public Shared Sub AuthorsUpdateTrigger()

        '...
    End Sub
End Class
public partial class Triggers
{
    [SqlTrigger(Target="authors", Event="FOR UPDATE")]
    public static void AuthorsUpdateTrigger()
    {
        //...
    }
}

This example specifies that the trigger is referenced using the name trig_onpubinsert.The trigger is activated by adding new data (INSERT) to the table publishers.

Partial Public Class Triggers

    <SqlTrigger(Name:="trig_onpubinsert", Target:="publishers", Event:="FOR INSERT")> _
    Public Shared Sub PublishersInsertTrigger()

        '...
    End Sub
End Class
public partial class Triggers
{
    [SqlTrigger(Name="trig_onpubinsert", Target="publishers", Event="FOR INSERT")]
    public static void PublishersInsertTrigger()
    {
        //...
    }
}

Atributo SqlFunction

Este atributo deve ser aplicado a arquivos de função definidos pelo usuário, que retornam um valor escalar ou uma tabela.Este atributo tem os seguintes parâmetros:

  • Name - Optional.Especifica o nome que é usado no SQL Server para fazer referência à função definida pelo usuário-.

    Observação:

    Para funções que retornam um valor tabela, você deve especificar um valor para o TableDefinition propriedade, que contém a representação SQL da definição da tabela retornada.

This example specifies that the user-defined function is referenced using the name sp_scalarFunc.

Partial Public Class UserDefinedFunctions

    <SqlFunction(Name:="sp_scalarFunc")> _
    Public Shared Function SampleScalarFunction(ByVal s As SqlString) As SqlString

        '...
        Return ""
    End Function
End Class
public partial class UserDefinedFunctions
{
    [SqlFunction(Name="sp_scalarFunc")]
    public static SqlString SampleScalarFunction(SqlString s)
    {
        //...
        return "";
    }
}

This example specifies that the user-defined function is referenced using the name sp_tableFunc.The TableDefinition property has the value letter nchar(1).

Partial Public Class UserDefinedFunctions

    <SqlFunction(Name:="sp_tableFunc", TableDefinition:="letter nchar(1)")> _
    Public Shared Function SampleTableFunction(ByVal s As SqlString) As IEnumerable

        '...
        Return New Char(2) {"a"c, "b"c, "c"c}
    End Function
End Class
public partial class UserDefinedFunctions
{
    [SqlFunction(Name="sp_tableFunc", TableDefinition="letter nchar(1)")]
    public static IEnumerable SampleTableFunction(SqlString s)
    {
        //...
        return new ArrayList(new char[3] {'a', 'b', 'c'});
    }
}

Atributo SqlUserDefinedType

Este atributo deve ser aplicado a tipos de arquivos definidos pelo usuário.Este atributo tem quatro propriedades: Format, MaxByteSize, IsFixedLength, e IsByteOrdered.

  • Format
    Obrigatório.O formato de armazenamento do tipo definido pelo usuário.Os formatos com suporte são:

    Native – Specifies that SQL Server uses an efficient native representation on disk.Esta é a opção mais compacta que normalmente resulta no melhor desempenho.Os requisitos para esse formato são:

    • The StructLayout.LayoutKindSequential attribute must be applied to the type.

    • Todos os campos do tipo definido pelo usuário precisam permitir transferências de bits, ou seja, eles devem ter uma representação comum tanto na memória gerenciada como na não gerenciada, e não exigem tratamento especial pelo interop marshaler.

    • The type must not specify a value for MaxByteSize.

    • O tipo não deve ter quaisquer campos [NonSerialized].

    • Campos não devem ser marcados como um layout explícito.

    UserDefined - Specifies that the user has full control over the binary format.Os requisitos para esse formato são:

    • The type must implement IBinarySerialize.

    • The type must specify a value for MaxByteSize.

  • MaxByteSize
    Obrigatório.O tamanho máximo de uma instância desse tipo, em bytes.

  • IsFixedLength
    Opcional.Especifica se todas as instâncias do tipo são do mesmo tamanho.O padrão é false.

  • IsByteOrdered
    Opcional.Especifica se a representação binário desse tipo são ordenados, ou seja, se ele pode ser usado para comparar instâncias desse tipo.O padrão é false.

This example specifies that the Format of the user-defined type is SerializedDataWithMetadataand theMaxByteSize is 8000 bytes.

<SqlUserDefinedType(Format.Native, MaxByteSize:=8000)> _
Public Class SampleType

   '...
End Class
[SqlUserDefinedType(Format.Native, MaxByteSize=8000)]
public class SampleType
{
   //...
}

Consulte também

Tarefas

Como: Criar um projeto de SQL servidor

Como: Criar e executar um CLR SQL servidor Stored procedimento

Como: Criar e executar um disparar CLR SQL servidor

Como: Criar e executar uma agregação de servidor SQL CLR

Como: Criar and Run a CLR SQL servidor função definida pelo usuário

Como: Criar and Run a CLR SQL servidor tipo definido pelo usuário

Demonstra Passo a passo: Criando um procedimento armazenado em código gerenciado

Como: Depurar um SQL CLR Procedimento Armazenado

Conceitos

Introduction to Integration CLR SQL Servidor

Vantagens de usar código gerenciado para criar objetos de bancos de dados

Modelos de Item para Projetos do SQL Server

Referência

Atributos para projetos SQL Server e objetos de bancos de dados

Outros recursos

Depuração de banco de dados SQL CLR

Date

History

Motivo

Julho de 2008

Atualizadas as informações sobre o MaxByteSize atributo para o SQLUserDefinedAggregate atributo.

Correção de bug do conteúdo.