次の方法で共有


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 でユーザー定義関数を参照するための名前を指定します。

    z28bh0b5.alert_note(ja-jp,VS.90).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 という 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
{
   //...
}

参照

処理手順

方法 : SQL Server プロジェクトを作成する

方法 : CLR の SQL Server ストアド プロシージャを作成および実行する

方法 : CLR の SQL Server トリガを作成および実行する

方法 : CLR の SQL Server の集計を作成および実行する

方法 : CLR の SQL Server ユーザー定義関数を作成および実行する

方法 : CLR の SQL Server ユーザー定義型を作成および実行する

チュートリアル : マネージ コードでのストアド プロシージャの作成

方法 : SQL CLR のストアド プロシージャをデバッグする

概念

SQL Server の CLR 統合の概要 (ADO.NET)

マネージ コードを使用したデータベース オブジェクトの作成の利点

SQL Server プロジェクト用の項目テンプレート

参照

SQL Server プロジェクトおよびデータベース オブジェクトの属性

その他の技術情報

SQL CLR データベースのデバッグ

履歴の変更

日付

履歴

理由

2008 年 7 月

SQLUserDefinedAggregate 属性の MaxByteSize 属性に関する情報を更新。

コンテンツ バグ修正