كيفية القيام بما يلي: إنشاء وتشغيل المعرفة من قبل SQL الخادم مستخدم الكتابة باستخدام التكامل وقت تشغيل "اللغة العامة"
قم بإنشاء نوع SQL المعرفة من قبل مستخدم بإضافة من نوع المعرفة من قبل مستخدم إلى اللغة العامة الخادم SQL تشغيل-وقت (CLR SQL) مشروع قاعدة بيانات. بعد نجاح توزيع، فيمكنك استخدامه في الجميع السياقات التي يمكنك استخدامها نوع النظام. هذا يتضمن ملفات تعريف أعمدة، والمتغيرات، معلمات، ونتائج دالة، والمؤشرات، ومشغلات، و النسخ المتماثل. الأنواع المعرفة من قبل مستخدم بتوفير إمكانية التوسعة مستخدم لنظام نوع بيانات SQL الخادم، وأيضا القدرة على إلى تعريف الأنواع المركبة المعقدة.
ملاحظة
قد يعرض جهاز الكمبيوتر الخاص بك أسماء أو مواقع مختلفة لبعض عناصر واجهة مستخدم Visual Studio في الإرشادات التالية. يحدد كل من إصدار Visual Studio لديك والإعدادات المستخدمة هذه العناصر. لمزيد من المعلومات، راجع العمل مع إعدادات.
إنشاء نوع معرف من قبل مستخدم
إلى إنشاء SQL نوع معرف من قبل مستخدم
قم بفتح موجودة CLR SQL في قاعدة بيانات مشروع، أو إنشاء اسماً جديداً. لمزيد من المعلومات، راجع كيفية القيام بما يلي: قم بإنشاء المشاريع لكائنات قاعدة بيانات التي تقوم باستخدام SQL الخادم عام تكامل وقت تشغيل اللغة.
في مشروع القائمة، انقر فوق إضافة عنصر جديد .
في صندوق الحوار إضافة عنصر جديد?، تحديد نوع معرف من قبل مستخدم .
اكتب الاسم الجديد نوع معرف من قبل مستخدم.
إضافة تعليمات برمجية لتعريف وإنشاء نوع معرف من قبل مستخدم. راجع أول مثال الذي يتبع هذا إجراء.
من مستكشف الحل، قم بفتح المجلد اختبارScripts وانقر نقراً مزدوجاً فوق من اختبار.sql ملف.
ملاحظة
يمكنك تعيين برامج نصية الأخرى كجهاز افتراضي يصحح برنامج نصي. لمزيد من المعلومات، راجع كيفية القيام بما يلي: قم بتحرير البرنامج النصي اختبار.sql إلى تشغيل الكائنات التي تستخدم تكامل وقت تشغيل اللغة العامة لخادم SQL.
قم بإضافة التعليمة البرمجية إلى اختبار.sql (يصحح.sqlفي Visual C++) ينفذ نوع معرف من قبل مستخدم. راجع المثال الثاني الذي يتبع هذا إجراء.
اضغط على 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 الخادم عام تكامل وقت تشغيل اللغة.
عرض نتائج التي تظهر في إطار الإخراجوحدد إخراج عرض من: "لإخراج قاعدة بيانات.
مثال
ينشئ هذا المثال على نوع 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 Server باستخدام التكامل وقت تشغيل "اللغة العامة"
الإرشادات التفصيلية: إنشاء إجراء مخزّن في تعليمات برمجية المدارة
كيفية القيام بما يلي: يصحح إجراء مخزّن CLR SQL
المرجع
السمات لمشاريع CLR SQL قاعدة بيانات وكائنات قاعدة بيانات
المبادئ
Introduction to SQL Server CLR Integration (ADO.NET)
تعليمات برمجية التي تمت إدارتها لفوائد استخدام إلى إنشاء الكائنات قاعدة بيانات
بدء تشغيل فريق تطوير من قواعد بيانات الكائنات SQLCLR ذلك مرجع