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

قم بإنشاء نوع SQL المعرفة من قبل مستخدم بإضافة من نوع المعرفة من قبل مستخدم إلى اللغة العامة الخادم SQL تشغيل-وقت (CLR SQL) مشروع قاعدة بيانات. بعد نجاح توزيع، فيمكنك استخدامه في الجميع السياقات التي يمكنك استخدامها نوع النظام. هذا يتضمن ملفات تعريف أعمدة، والمتغيرات، معلمات، ونتائج دالة، والمؤشرات، ومشغلات، و النسخ المتماثل. الأنواع المعرفة من قبل مستخدم بتوفير إمكانية التوسعة مستخدم لنظام نوع بيانات SQL الخادم، وأيضا القدرة على إلى تعريف الأنواع المركبة المعقدة.

ملاحظة

قد يعرض جهاز الكمبيوتر الخاص بك أسماء أو مواقع مختلفة لبعض عناصر واجهة مستخدم Visual Studio في الإرشادات التالية. يحدد كل من إصدار Visual Studio لديك والإعدادات المستخدمة هذه العناصر. لمزيد من المعلومات، راجع العمل مع إعدادات.

إنشاء نوع معرف من قبل مستخدم

إلى إنشاء SQL نوع معرف من قبل مستخدم

  1. قم بفتح موجودة CLR SQL في قاعدة بيانات مشروع، أو إنشاء اسماً جديداً. لمزيد من المعلومات، راجع كيفية القيام بما يلي: قم بإنشاء المشاريع لكائنات قاعدة بيانات التي تقوم باستخدام SQL الخادم عام تكامل وقت تشغيل اللغة.

  2. في مشروع القائمة، انقر فوق إضافة عنصر جديد .

  3. في صندوق الحوار إضافة عنصر جديد?، تحديد نوع معرف من قبل مستخدم .

  4. اكتب الاسم الجديد نوع معرف من قبل مستخدم.

  5. إضافة تعليمات برمجية لتعريف وإنشاء نوع معرف من قبل مستخدم. راجع أول مثال الذي يتبع هذا إجراء.

  6. من مستكشف الحل، قم بفتح المجلد اختبارScripts وانقر نقراً مزدوجاً فوق من اختبار.sql ملف.

    ملاحظة

    يمكنك تعيين برامج نصية الأخرى كجهاز افتراضي يصحح برنامج نصي. لمزيد من المعلومات، راجع كيفية القيام بما يلي: قم بتحرير البرنامج النصي اختبار.sql إلى تشغيل الكائنات التي تستخدم تكامل وقت تشغيل اللغة العامة لخادم SQL.

  7. قم بإضافة التعليمة البرمجية إلى اختبار.sql (يصحح.sqlفي Visual C++) ينفذ نوع معرف من قبل مستخدم. راجع المثال الثاني الذي يتبع هذا إجراء.

  8. اضغط على F5 إلى إنشاء ونشر وتصحيح النوع المعرف من قبل مستخدم. للحصول على معلومات حول كيفية نشر دون تصحيح الأخطاء، راجع كيفية القيام بما يلي: نشر عناصر مشروع قاعدة بيانات SQL CLR إلى SQL الخادم.

    هام

    SQL Server 2005وSQL Server 2008تعتمد فقطSQL Serverمشاريع التي تم إنشاؤها مع 2.0 أو 3.0، الإصدار 3.5 من إطار عمل.NET. إذا حاولت نشر على SQL Serverمشروع إلى SQL Server 2005أو SQL Server 2008، يظهر خطأ: Deploy error (SQL01268): .NET SqlClient Data Provider: Msg 6218, Level 16, State 3, Line 1 CREATE ASSEMBLY for assembly 'AssemblyName' failed because assembly 'AssemblyName' failed verification. Check if the referenced assemblies are up-to-date and trusted (for external_access or unsafe) to execute in the database(الموقعAssemblyNameهو the اسم of the تجميع that you are deploying). لمزيد من المعلومات، راجع كيفية القيام بما يلي: قم بإنشاء المشاريع لكائنات قاعدة بيانات التي تقوم باستخدام SQL الخادم عام تكامل وقت تشغيل اللغة.

  9. عرض نتائج التي تظهر في إطار الإخراجوحدد إخراج عرض من: "لإخراج قاعدة بيانات.

مثال

ينشئ هذا المثال على نوع Pointالتي يمكنك استخدامها كما تفعل مع الآخرين بسيطة أنواع. إعلان فئة هو منسق بتنسيق مع كلا Serializableو SqlUserDefinedTypeAttributeالسمات. Formatخاصية SqlUserDefinedTypeAttributeيحدد تنسيق تخزين نوع معرف من قبل مستخدم. نوع implements سلسلة التحويل بواسطة تطبيق Parseو ToStringالأساليب. نوع أيضا بتنفيذ إجراءات خاصية الثاني للحصول على ثم قم بتعيين قيم س وص لنقطة تمثيل هذه الفئة.

Imports System
Imports System.Data.SqlTypes
Imports Microsoft.SqlServer.Server

<Serializable()>
<SqlUserDefinedType(Format.Native)>
Public Structure Point
    Implements INullable

    Private m_x As Int32
    Private m_y As Int32
    Private is_Null As Boolean


    Public Property X() As Int32
        Get
            Return (Me.m_x)
        End Get
        Set(ByVal Value As Int32)
            m_x = Value
        End Set
    End Property


    Public Property Y() As Int32
        Get
            Return (Me.m_y)
        End Get
        Set(ByVal Value As Int32)
            m_y = Value
        End Set
    End Property


    Public ReadOnly Property IsNull() As Boolean Implements INullable.IsNull
        Get
            Return is_Null
        End Get
    End Property


    Public Shared ReadOnly Property Null() As Point
        Get
            Dim pt As Point = New Point
            pt.is_Null = True
            Return pt
        End Get
    End Property


    Public Overrides Function ToString() As String
        If Me.IsNull() Then
            Return Nothing
        Else
            Return Me.m_x & ":" & Me.m_y
        End If
    End Function


    Public Shared Function Parse(ByVal s As SqlString) As Point
        If s = SqlString.Null Then
            Return Null
        End If

        If s.ToString() = SqlString.Null.ToString() Then
            Return Null
        End If

        If s.IsNull Then
            Return Null
        End If

        'Parse input string here to separate out coordinates
        Dim str As String = Convert.ToString(s)
        Dim xy() As String = str.Split(":"c)

        Dim pt As New Point()
        pt.X = CType(xy(0), Int32)
        pt.Y = CType(xy(1), Int32)
        Return (pt)
    End Function


    Public Function Quadrant() As SqlString

        If m_x = 0 And m_y = 0 Then
            Return "centered"
        End If

        Dim stringResult As String = ""

        Select Case m_x
            Case 0
                stringResult = "center"
            Case Is > 0
                stringResult = "right"
            Case Is < 0
                stringResult = "left"
        End Select

        Select Case m_y
            Case 0
                stringResult = stringResult & " center"
            Case Is > 0
                stringResult = stringResult & " top"
            Case Is < 0
                stringResult = stringResult & " bottom"
        End Select

        Return stringResult
    End Function
End Structure
using System;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;

[Serializable()]
[SqlUserDefinedType(Format.Native)]
public struct Point : INullable
{
    private Int32 m_x;
    private Int32 m_y;
    private bool is_Null;


    public Int32 X
    {
        get
        {
            return (this.m_x);
        }
        set
        {
            m_x = value;
        }
    }


    public Int32 Y
    {
        get
        {
            return (this.m_y);
        }
        set
        {
            m_y = value;
        }
    }


    public bool IsNull
    {
        get
        {
            return is_Null;
        }
    }


    public static Point Null
    {
        get
        {
            Point pt = new Point();
            pt.is_Null = true;
            return (pt);
        }
    }


    public override string ToString()
    {
        if (this.IsNull)
        {
            return "NULL";
        }
        else
        {
            return this.m_x + ":" + this.m_y;
        }
    }


    public static Point Parse(SqlString s)
    {
        if (s.IsNull)
        {
            return Null;
        }

        // Parse input string here to separate out coordinates
        string str = Convert.ToString(s);
        string[] xy = str.Split(':');

        Point pt = new Point();
        pt.X = Convert.ToInt32(xy[0]);
        pt.Y = Convert.ToInt32(xy[1]);
        return (pt);
    }


    public SqlString Quadrant()
    {
        if (m_x == 0 && m_y == 0)
        {
            return "centered";
        } 

        SqlString stringReturn = "";

        if (m_x == 0)
        {
            stringReturn = "center";
        }
        else if (m_x > 0)
        {
            stringReturn = "right";
        } 
        else if (m_x < 0)
        {
            stringReturn = "left";
        }

        if (m_y == 0) 
        {
            stringReturn = stringReturn + " center";
        }
        else if (m_y > 0)
        {
            stringReturn = stringReturn + " top";
        }
        else if (m_y < 0)
        {
            stringReturn = stringReturn + " bottom";
        }

        return stringReturn;
    }
}

إضافة تعليمات برمجية لتنفيذ واختبار نوع معرف من قبل مستخدم الخاص بك ( Point) الملف اختبار.sql في المجلد اختبارScripts في مشروع. على سبيل المثال، إلى التحقق من نوع جديد، قم بإنشاء جدول التي تستخدم هذا النوع. يوضح المثال التالي كيفية إلى تستخدم Pointنوع في إنشاء الجدول.

CREATE TABLE test_table (column1 Point)
go

INSERT INTO test_table (column1) VALUES ('1:2')
INSERT INTO test_table (column1) VALUES ('-2:3')
INSERT INTO test_table (column1) VALUES ('-3:-4')

select column1.Quadrant() from test_table

راجع أيضًا:

المهام

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

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

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

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

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

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

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

المرجع

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

المبادئ

Introduction to SQL Server CLR Integration (ADO.NET)

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

بدء تشغيل فريق تطوير من قواعد بيانات الكائنات SQLCLR ذلك مرجع

موارد أخرى

قاعدة بيانات SQL CLR التصحيح

إنشاء الكائنات الخادم SQL في تعليمات برمجية مُدارة