SQL Server プロジェクトおよびデータベース オブジェクトの属性
更新 : 2008 年 7 月
各 Microsoft SQL Server プロジェクトとプロジェクトに含まれるすべてのデータベース オブジェクト ファイルに属性を適用する必要があります。
プロジェクト/ファイル |
適用する必要のある属性 |
---|---|
プロジェクト |
SqlAssemblyAttribute |
集計 |
SqlUserDefinedAggregateAttribute |
ストアド プロシージャ |
SqlProcedureAttribute |
トリガ |
SqlTriggerAttribute |
ユーザー定義関数 |
SqlFunctionAttribute |
ユーザー定義型 |
SqlUserDefinedTypeAttribute |
SqlAssembly 属性
この属性は、Microsoft SQL Server 2005 データベースに配置するすべてのアセンブリに適用する必要があります。この属性には、パラメータがありません。この属性は、SQL Server プロジェクトの作成時に AssemblyInfo ファイルに追加されます。
SqlUserDefinedAggregate 属性
この属性は、集計ファイルに適用する必要があります。この属性には、Format と MaxByteSize という 2 つのプロパティがあります。
Format
必ず指定します。集計のストレージ形式。次の形式がサポートされています。Native : SQL Server がディスクで効率的なネイティブの表現を使用することを指定します。この形式オプションで、最も容量が少なく、最高のパフォーマンスを実現できます。この形式の要件は次のとおりです。
StructLayout.LayoutKindSequential 属性は、集計に適用する必要があります。
集計のすべてのフィールドは、blittable 型である必要があります。つまり、これらのフィールドは、マネージ メモリとアンマネージ メモリの両方に共通の表現を使用し、特殊な相互運用マーシャラによる処理は不要です。
集計では、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 という 4 つのプロパティがあります。
Format
必ず指定します。ユーザー定義型のストレージ形式。次の形式がサポートされています。Native : SQL Server がディスクで効率的なネイティブの表現を使用することを指定します。これは最もサイズの小さいオプションで、通常、最良のパフォーマンスを実現します。この形式の要件は次のとおりです。
StructLayout.LayoutKindSequential 属性は、型に適用する必要があります。
ユーザー定義型のすべてのフィールドは、blittable 型である必要があります。つまり、これらのフィールドは、マネージ メモリとアンマネージ メモリの両方に共通の表現を使用し、特殊な相互運用マーシャラによる処理は不要です。
型では、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 トリガを作成および実行する
方法 : CLR の SQL Server の集計を作成および実行する
方法 : CLR の SQL Server ユーザー定義関数を作成および実行する
方法 : CLR の SQL Server ユーザー定義型を作成および実行する
チュートリアル : マネージ コードでのストアド プロシージャの作成
方法 : SQL CLR のストアド プロシージャをデバッグする
概念
SQL Server の CLR 統合の概要 (ADO.NET)
マネージ コードを使用したデータベース オブジェクトの作成の利点
参照
SQL Server プロジェクトおよびデータベース オブジェクトの属性
その他の技術情報
履歴の変更
日付 |
履歴 |
理由 |
---|---|---|
2008 年 7 月 |
SQLUserDefinedAggregate 属性の MaxByteSize 属性に関する情報を更新。 |
コンテンツ バグ修正 |