更新: 2008 年 7 月
属性必须应用于所有 Microsoft SQL Server 项目以及每个项目包含的所有数据库对象文件:
| 项目/文件 | 必须应用的属性 | 
|---|---|
| 项目 | SqlAssemblyAttribute | 
| 聚合 | SqlUserDefinedAggregateAttribute | 
| 存储过程 | SqlProcedureAttribute | 
| 触发器 | SqlTriggerAttribute | 
| 用户定义函数 | SqlFunctionAttribute | 
| 用户定义的类型 | SqlUserDefinedTypeAttribute | 
SqlAssembly 属性
此属性必须应用于部署到 Microsoft SQL Server 2005 数据库的所有程序集。此属性没有任何参数。当创建 SQL Server 项目时,该属性即被添加到 AssemblyInfo 文件。
SqlUserDefinedAggregate 属性
此属性必须应用于聚合文件。此属性 (Attribute) 具有两个属性 (Property):Format 和 MaxByteSize。
- Format 
 必需。聚合的存储格式。支持的格式为:- Native - 指定 SQL Server 在磁盘上使用一种高效的本机表示形式。该格式选项最为紧凑,并能提供最佳性能。此格式的要求为: - StructLayout.LayoutKindSequential 属性必须应用于该聚合。 
- 聚合的所有字段必须能直接复制到本机结构中,即它们在托管和非托管内存中必须有一种公共表示形式,并且不需要由互操作封送拆收器进行特殊处理。 
- 该聚合不能指定 MaxByteSize 的值。 
- 聚合不能有任何 [NonSerialized] 字段。 
- 字段不能标记为显式布局。 
 - UserDefined - 指定用户对二进制格式具有完全控制。此格式的要求为: - 该聚合必须实现 IBinarySerialize 接口。 
- 该聚合必须指定 MaxByteSize 的值。 
 
- MaxByteSize 
 该聚合的实例的最大大小,以字节为单位。仅当 Format 设置为 UserDefined 时是必需的。不能在 Format 设置为 Native 时指定。
此示例指定聚合的 Format 为 Native。
<SqlUserDefinedAggregate(Format.Native)> _
Public Class SampleAggregate
    '...
End Class
[SqlUserDefinedAggregate(Format.Native)]
public class SampleAggregate
{
   //...
}
SqlProcedure 属性
此属性必须应用于存储过程文件。此属性具有以下参数:
- Name - 可选项。指定 SQL Server 上用于引用存储过程的名称。
此示例指定使用名称 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)
    {
        //...
    }
}
SqlTrigger 属性
该属性必须应用于触发器文件。此属性具有以下参数:
- Name - 可选项。指定在 SQL Server 上用于引用触发器的名称。 
- Target - 必选项。指定应用触发器的表。 
- Event - 必选项。指定激活触发器的操作。 
此示例指定通过更新 authors 表中的现有数据 (UPDATE) 来激活触发器。
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()
    {
        //...
    }
}
此示例指定使用名称 trig_onpubinsert 引用触发器。通过向 publishers 表中添加新数据 (INSERT) 来激活触发器。
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()
    {
        //...
    }
}
SqlFunction 属性
此属性必须应用于可返回标量值或表的、用户定义的函数文件。此属性具有以下参数:
- Name - 可选项。指定在 SQL Server 中引用用户定义函数时使用的名称。 .gif) 说明: 说明:- 对于返回值为表的函数,必须指定其 TableDefinition 属性值,该属性值包含所返回表的定义的 SQL 表示形式。 
此示例指定使用名称 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 "";
    }
}
此示例指定使用名称 sp_tableFunc 引用用户定义的函数。TableDefinition 属性具有值 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'});
    }
}
SqlUserDefinedType 属性
该属性必须应用于用户定义的类型文件。它有四个属性:Format、MaxByteSize、IsFixedLength 和 IsByteOrdered。
- Format 
 必需。用户定义的类型的存储格式。支持的格式为:- Native - 指定 SQL Server 在磁盘上使用一种高效的本机表示形式。这是最精简的选择,通常会产生最好的性能。此格式的要求为: - StructLayout.LayoutKindSequential 属性必须应用于该类型。 
- 用户定义类型的所有字段必须能直接复制到本机结构中,即它们在托管和非托管内存中必须有一种公共表示形式,并且不需要互操作封送拆收器进行特殊处理。 
- 该类型不能指定 MaxByteSize 的值。 
- 该类型不能有任何 [NonSerialized] 字段。 
- 字段不能标记为显式布局。 
 - UserDefined - 指定用户对二进制格式具有完全控制。此格式的要求为: - 该类型必须实现 IBinarySerialize 接口。 
- 该类型必须指定 MaxByteSize 的值。 
 
- MaxByteSize 
 必需。此类型实例的最大大小,以字节为单位。
- IsFixedLength 
 可选。指定该类型的所有实例长度是否相同。默认值为 false。
- IsByteOrdered 
 可选。指定该类型的二进制表示形式是否已排序,即是否可以使用它比较该类型的实例。默认值为 false。
此示例指定用户定义的类型的 Format 为 SerializedDataWithMetadata,且 MaxByteSize 为 8000 字节。
<SqlUserDefinedType(Format.Native, MaxByteSize:=8000)> _
Public Class SampleType
   '...
End Class
[SqlUserDefinedType(Format.Native, MaxByteSize=8000)]
public class SampleType
{
   //...
}
请参见
任务
如何:创建和运行 CLR SQL Server 用户定义的函数
如何:创建和运行 CLR SQL Server 用户定义的类型
概念
参考
其他资源
修订记录
| 日期 | 修订记录 | 原因 | 
|---|---|---|
| 2008 年 7 月 | 更新了有关 SQLUserDefinedAggregate 属性的 MaxByteSize 属性的信息。 | 内容 Bug 修复 |