SQL Server 项目和数据库对象的属性
更新: 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 中引用用户定义函数时使用的名称。
说明: 对于返回值为表的函数,必须指定其 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 修复 |