السمات لمشاريع CLR SQL قاعدة بيانات وكائنات قاعدة بيانات

يجب تطبيق سمة إلى كل SQL Serverالمشروع و إلى كافة الكائنات قاعدة بيانات التي تحتوي على مشروع. يمكنك استخدام تكامل وقت تشغيل اللغة العامة SQL Server (SQL CLR) إلى إنشاء أنواع الكائنات التالية:

مشروع/الملف

سمة التي يجب تطبيقها

Project

SqlAssemblyAttribute

تجميع

SqlUserDefinedAggregateAttribute

إجراء مخزّن

SqlProcedureAttribute

Trigger

SqlTriggerAttribute

دالة معرّفة بواسطة مستخدم

SqlFunctionAttribute

نوع معرف من قبل مستخدم

SqlUserDefinedTypeAttribute

سمة SqlAssembly

وهذا سمة يجب تطبيقها على الجميع تجميعات التي يتم نشرها إلى SQL Serverقاعدة بيانات. وهذا سمة له بدون معلمات. هو إضافة إلى ملف AssemblyInfo عند إنشاء أحد SQL Serverمشروع.

سمة SqlUserDefinedAggregate

يجب تطبيق هذه السمة إلى الكائنات تجميع المعرفة من قبل مستخدم. وهذا سمة له خاصيتين: Format andMaxByteSize.

  • Format
    مطلوبة. تنسيق تخزين تجميع. التنسيقات المعتمدة كـ التالي:

    Native-تحديد التيSQL Serverيستخدم كفاءة تمثيل أصلي تشغيل قرص. Th هو خيار تنسيق هو الأكثر ضغط ويوفر أفضل أداء. متطلبات لهذا التنسيق كـ التالي:

    • 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مرجع إجراء مخزّن.

Th هو يحدد المثال الذي إجراء المخزن هو المشار إليها باستخدام اسم 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-مطلوب. قم بتعيين الهدف إلى الذي ينطبق على يشغّل. يعتمد نوع الهدف تشغيل نوع الهدف الذي تقوم بإنشائه. يمكنك إنشاء DDL أو DML LOGON مشغلات. النوع الأكثر شيوعاً من يشغّل هو تطبيقها بالجداول.

  • Event-مطلوب. قم بتحديد إجراء الذي يؤدي إلى تنشيط يشغّل.

Th هو يحدد المثال الذي يشغّل هو تنشيط بواسطة جاري الآن التحديث بيانات exهوting ( UPDATE) في الجدول 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()
    {
        //...
    }
}

Th هو يحدد المثال الذي يشغّل هو المشار إليها باستخدام اسم trig_onpubinsert. تنشيط يشغّل بإضافة بيانات جديدة ( INSERT) إلى الجدول 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()
    {
        //...
    }
}

سمة SqlFunction

يجب أن يتم تطبيق هذه السمة على الكائنات دالة معرّفة بواسطة مستخدم، والتي ترجع القيمة مفردة أو جدول. وهذا سمة لدى المعلمات التالية:

  • Name-اختيارية. تحدد الاسم الذي هو المستخدم تشغيل SQL Serverالإشارة إلى دالة معرّفة بواسطة المستخدم.

    ملاحظة

    الوظائف التي تقوم بإرجاع القيمة جدول، يجب تحديد القيمة TableDefinitionخاصية، والذي يحتوي على تمثيل ‏‫‏‫Transact-SQL من تعريف الجدول الذي يتم إرجاعه.

Th هو الذي يحدد من المثال دالة معرفة من قبل مستخدم هو المشار إليها باستخدام اسم 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 "";
    }
}

Th هو الذي يحدد من المثال دالة معرفة من قبل مستخدم هو المشار إليها باستخدام اسم 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يجب تطبيق سمة إلى نوع.

    • الجميع حقول نوع معرف من قبل مستخدم يجب أن يكون blittable ، هو يجب أن يكون تمثيل شائعة في ذاكرة المدارة وغير المدارة كما لا يتطلب معالجة خاص على منظم إمكانية التشغيل المتداخل.

    • نوع لا يجب تحديد القيمة ل MaxByteSize.

    • نوع ويجب إلا يكون أي حقول [NonSerialized].

    • حقول يجب أن لا تكون وضعت تخطيطاً صريحة.

    UserDefined-تحديد أن مستخدم لديه التحكم الكامل تنسيق ثنائي. متطلبات لهذا التنسيق كـ التالي:

    • نوع يجب أن يقوم تطبيق IBinarySerialize.

    • نوع يجب تحديد القيمة ل MaxByteSize.

  • MaxByteSize
    مطلوبة. الحجم الأقصى لمثيل هذا نوع، بالبايت.

  • IsFixedLength
    اختياري. تحديد ما إذا كانت الجميع مثيلات من نوع ذات طول متساو. القيمة الافتراضية هو خاطئة.

  • IsByteOrdered
    اختياري. تحديد ما إذا كان تمثيل ثنائي لترتيب هو نوع هو مرتبة، التي هو، وما إذا كان يمكن استخدامه لمقارنة مثيلات th هو النوع. القيمة الافتراضية هو خاطئة.

يحدد هذا المثال الذي Format من النوع المعرف من قبل مستخدم هو SerializedDataWithMetadataو MaxByteSize8000 وحدات البايت.

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

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

راجع أيضًا:

المهام

كيفية القيام بما يلي: قم بإنشاء المشاريع لكائنات قاعدة بيانات التي تقوم باستخدام SQL الخادم عام تكامل وقت تشغيل اللغة

كيفية القيام بما يلي: إنشاء و تشغيل إجراء مخزّن الخادم SQL باستخدام التكامل وقت تشغيل "اللغة العامة"

كيفية القيام بما يلي: إنشاء وتشغيل مشغل SQL الخادم باستخدام التكامل وقت تشغيل "اللغة العامة"

كيفية القيام بما يلي: إنشاء وتشغيل تجميع SQL Server باستخدام التكامل وقت تشغيل "اللغة العامة"

كيفية القيام بما يلي: إنشاء وتشغيل المعرفة من قبل SQL الخادم مستخدم دالة باستخدام التكامل وقت تشغيل "اللغة العامة"

كيفية القيام بما يلي: إنشاء وتشغيل المعرفة من قبل SQL الخادم مستخدم الكتابة باستخدام التكامل وقت تشغيل "اللغة العامة"

الإرشادات التفصيلية: إنشاء إجراء مخزّن في تعليمات برمجية المدارة

كيفية القيام بما يلي: يصحح إجراء مخزّن CLR SQL

المبادئ

Introduction to SQL Server CLR Integration (ADO.NET)

تعليمات برمجية التي تمت إدارتها لفوائد استخدام إلى إنشاء الكائنات قاعدة بيانات