أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

ظهور رسالة خطأ عند استخدام كائن وقت تشغيل لغة شائعة في SQL Server 2005: "لا يمكن تحميل تجميع التسلسل الذي تم إنشاؤه بشكل حيوي"

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

اضغط هنا لرابط المقالة باللغة الانجليزية913668
الخطأ رقم: 101935 (SQLBUDT)
الأعراض
عند استخدام كائن وقت تشغيل (CLR) لغة شائعة في Microsoft SQL Server 2005 قد تتلقى رسالة خطأ مشابهة للرسالة التالية:
msg 6522 ، مستوى 16 حالة 2، السطر الأول
حدث خطأ .NET Framework أثناء تنفيذ إجراء المعرفة من قبل المستخدم أو التجميع 'ObjectName':
System.InvalidOperationException: لا يمكن تحميل تجميع التسلسل الذي تم إنشاؤه بشكل حيوي. مقيد في التجميع بيئات استضافة بعض وظائف التحميل خذ في الاعتبار استخدام مُسلسل pre-generated. الرجاء مراجعة الاستثناء الداخلي للحصول على مزيد من المعلومات. ---> System.IO.FileLoadException: لقد تم تعطيل LoadFrom() و LoadFile() Load(byte[]) و LoadModule() بواسطة المضيف.
System.IO.FileLoadException:
في System.Reflection.Assembly.nLoadImage (بايت rawAssembly [] ، بايت rawSymbolStore [] ، دليل دليل ، StackCrawlMark & stackMark fIntrospection منطقية)
في System.Reflection.Assembly.Load (rawAssembly [] بايت بايت [] rawSymbolStore ، securityEvidence دليل)
في Microsoft.CSharp.CSharpCodeGenerator.FromFileBatch (خيارات CompilerParameters ، سلسلة أسماء الملفات [])
في Microsoft.CSharp.CSharpCodeGenerator.FromSourceBatch(CompilerParameters options, String[] sources)
في Microsoft.CSharp.CSharpCodeGenerator.System.CodeDom.Compiler.ICodeCompiler.CompileAssemblyFromSourceBatch(CompilerParameters options, String[] sources)
في System.CodeDom.Compiler.CodeDomProvider.CompileAssemblyFromSource(CompilerParameters options, String[] s
...
System.InvalidOperationException:
في System.Xml.Serialization.Compiler.Compile (التجميع الأصل أو ns سلسلة ، معلمات CompilerParameters أو دليل دليل)
في System.Xml.Serialization.TempAssembly.GenerateAssembly (XmlMapping xmlMappings [] أو أنواع [] نوع ، defaultNamespace سلسلة ، دليل دليل ، معلمات CompilerParameters ، التجميع التجميع أو التجميعات Hashtable)
System.Xml.Serialization.TempAssemblyالمُنشئ (XmlMapping xmlMappings [] أو أنواع [] نوع ، defaultNamespace سلسلة ، موقع سلسلة أو دليل دليل)
في System.Xml.Serialization.XmlSerializer.GenerateTempAssembly(XmlMapping xmlMapping, Type type, String defaultNamespace)
System.Xml.Serialization.XmlSerializerctor(Type type, String defaultNamespace)
في System.Xml.Serialization.XmlSe...
على سبيل المثال، قد تتلقى رسالة الخطأ عند استخدام كائن CLR استدعاء خدمة ويب أو تنفيذ التحويل من الأنواع المعرفة من قبل المستخدم إلى XML داخل SQL Server.
السبب
تحدث هذه المشكلة إذا تم تحويل كائن CLR إلى XML نوع البيانات. عند هذا التحويل حدوث Foundation الاتصال Windows يحاول (code-named سابقاً "النيلي") قم بما يلي:
  • إنشاء تجميع عملية تحويل البيانات إلى ملف XML جديد.
  • حفظ التجميع إلى القرص.
  • تحميل التجميع في مجال التطبيق الحالي.
ومع ذلك، لا يسمح SQL Server للحصول على هذا النوع من الوصول إلى القرص في CLR SQL لأسباب أمنية. ولذلك، تظهر رسالة الخطأ المذكورة في قسم "الأعراض". قد يؤدي عدة سيناريوهات الكائن CLR يمكن تحويلها إلى نوع بيانات XML.

لمزيد من المعلومات حول Foundation الاتصال Windows قم بزيارة موقع شبكة مطوري Microsoft (MSDN) التالي على الويب:قد تتلقى رسالة الخطأ المذكورة في قسم "الأعراض" بالطرق التالية:
  • تستخدم التعليمة البرمجية CLR يطبّق الكائنات CLR بشكل صريح فئة XmlSerializer. قد تتضمن هذه الكائنات CLR الإجراءات المخزنة و دالات الأنواع المعرفة من قبل المستخدم تجميعات و المشغلات.
  • استخدام خدمة ويب في التعليمات البرمجية CLR.
  • إرسال أو تلقي الكائنات CLR إلى أو من SQL Server باستخدام وصول HTTP/SOAP مباشر إلى SQL Server.
  • تحويل الكائن CLR نوع معرف من قبل المستخدم إلى نوع بيانات XML.
الحل
لحل هذه المشكلة، يجب استخدام الأداة مولد مُسلسل XML (Sgen.exe) إنشاء تجميع عملية تحويل البيانات إلى ملف XML من تجميع الأصلي يدوياً. ثم تحميل التجميعات في SQL Server قاعدة البيانات.

مثال التعليمة البرمجية

For example, you may want to create a CLR function that returns XML data by using an assembly that is created by the following code example:
using System;using System.Data;using System.Data.SqlClient;using System.Data.SqlTypes;using Microsoft.SqlServer.Server;   using System.Xml;using System.Xml.Serialization;using System.Text;using System.IO;public partial class StoredProcedures{    [Microsoft.SqlServer.Server.SqlFunction]    public static  SqlString XMLTest()    {        Person p = new Person();        return new SqlString(p.GetXml());            }    public class Person    {         public String m_FirstName = "Jane";        public String m_LastName = "Dow";        public String GetXml()        {          XmlSerializer ser = new XmlSerializer(typeof(Person));          StringBuilder sb = new StringBuilder();          StringWriter wr = new StringWriter(sb);            ser.Serialize(wr, this);            return sb.ToString();        }    }}
When you call the XMLTest function in SQL Server Management Studio, you expect to receive the following result:
<?xml version="1.0" encoding="utf-16"?><Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><m_FirstName>Jane</m_FirstName><m_LastName>Dow</m_LastName>  </Person>
لإرجاع النتيجة الصحيحة يجب عليك يدوياً إنشاء XML تجميع التسلسل للتجميع الأصلي. استخدم إحدى الطرق التالية إنشاء تجميع التسلسل يدوياً.

ملاحظة تفترض هذه الطرق تحققت الشروط التالية:
  • لقد قمت بإنشاء قاعدة بيانات dbTest في مثيل SQL Server 2005.
  • يتم حفظ كافة ملفات المشروع في C:\CLRTest المجلد.

الأسلوب 1: إنشاء مشروع CLR ملقم SQL باستخدام Microsoft Visual Studio 2005

يمكنك إنشاء التجميع عملية تحويل البيانات إلى ملف باستخدام الخيار إنشاء أحداث في Microsoft Visual Studio 2005. للقيام بذلك، اتبع الخطوات التالية:
  1. بدء تشغيل Visual Studio 2005.
  2. إنشاء مشروع SQL Server جديد يسمى MyTest.
  3. في مربع الحوار إضافة المرجع قاعدة بيانات ، انقر فوق المرجع الذي الاتصال بقاعدة بيانات dbTest ثم ثم انقر فوق موافق.

    إذا لم يكن المرجع في القائمة يجب أن تقوم بإنشاء مرجع جديد. للقيام بذلك، انقر فوق إضافة مرجع جديد.
  4. من القائمة المشروع انقر فوق إضافة "دالة معرفة من قبل المستخدم". يظهر مربع الحوار إضافة عنصر جديد.
  5. انقر فوق إضافة لإضافة ملف جديد. بشكل افتراضي، يسمى الملف Function1.cs.

    ملاحظة تظهر رسالة الخطأ المذكورة في قسم "مؤشرات الخطأ" المقطع في حالة توزيع المشروع إلى قاعدة البيانات ثم تشغيل العبارة SQL للعمليات التالية:
    SELECT [dbTest].[dbo].[XMLTest] ()
    الذي يجب أن تتبع الخطوات 6-16 لحل هذه المشكلة.
  6. قم بإضافة التعليمة البرمجية في المقطع "رمز المثال" إلى ملف Function1.cs.
  7. من القائمة المشروع انقر فوق MyTest خصائص.
  8. في مربع الحوار MyTest انقر فوق الخيار إنشاء أحداث.
  9. اكتب الأمر التالي في المربع Post-build سطر الأوامر الحدث:
    "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\sgen.exe"/force"$ (TargetPath)"
    ملاحظة يقوم الخيار/فرض بإنشاء تجميع عملية تحويل البيانات إلى ملف جديد كل مرة يتم تعديل التجميع المصدر. بالإضافة إلى ذلك، يجب تعديل هذا الأمر إذا قمت بتثبيت Visual Studio 2005 في مجلد آخر.
  10. في المجلد C:\CLRTest إنشاء ملفين نص تسمية Predeployscript.sql و Postdeployscript.sql.
  11. إضافة عبارات SQL للعمليات التالية إلى ملف Predeployscript.sql:
    IF EXISTS (SELECT [name] FROM sys.assemblies WHERE [name] = N'MyTest.XmlSerializers') 	DROP ASSEMBLY [MyTest.XmlSerializers]
  12. إضافة عبارات SQL للعمليات التالية إلى ملف Postdeployscript.sql:
    CREATE ASSEMBLY [MyTest.XmlSerializers] from'C:\CLRTest\MyTest\MyTest\bin\Debug\MyTest.XmlSerializers.dll'WITH permission_set = SAFE
  13. من القائمة المشروع انقر فوق الموجود إضافة العنصر.
  14. في مربع الحوار إضافة عنصر موجود حدد موقع المجلد C:\CLRTest ثم انقر فوق All Files (*. *) في قائمة أنواع الملفات.
  15. في المربع اسم الملف ، اكتب Postdeployscript.sql;Predeployscript.sql ومن ثم انقر فوق موافق.
  16. في القائمة إنشاء ، انقر فوق نشر MyTest.
  17. تشغيل العبارة SQL للعمليات التالية في SQL Server Studio إدارة:
    SELECT [dbTest].[dbo].[XMLTest] ()
    يمكنك تلقي النتائج الصحيحة.

الطريقة 2: إنشاء مشروع CLR SQL في إطار موجّه الأوامر Visual Studio

  1. حدد موقع المجلد C:\CLRTest.
  2. إنشاء ملف نصي يدعى MyTest.cs.
  3. قم بإضافة التعليمة البرمجية في المقطع "رمز المثال" إلى ملف MyTest.cs.
  4. افتح Visual Studio 2005 إطار موجّه.
  5. اكتب C:\CLRTest مضغوط ثم ثم اضغط ENTER.
  6. اكتب /t:library csc MyTest.cs ثم ثم اضغط ENTER.
  7. اكتب /force sgen.exe MyTest.dll ثم ثم اضغط ENTER.
  8. تشغيل عبارات SQL للعمليات التالية في SQL Server إدارة Studio:
    USE dbTestGOCREATE ASSEMBLY [MyTest] from 'C:\CLRTest\MyTest.dll'GOCREATE ASSEMBLY [MyTest.XmlSerializers.dll] from 'C:\CLRTest\MyTest.XmlSerializers.dll'GOCREATE FUNCTION XMLTest()RETURNS nvarchar (max)ASEXTERNAL NAME MyTest.StoredProcedures.XMLTestGO
  9. تشغيل العبارة SQL للعمليات التالية في SQL Server Studio إدارة:
    SELECT [dbTest].[dbo].[XMLTest] ()
    يمكنك تلقي النتائج الصحيحة.

إذا كنت تستخدم تجميع رئيسي مراجع التجميعات الأخرى يجب إنشاء تجميعات عملية تحويل البيانات إلى ملف XML لكافة التجميعات التي يتم الرجوع إليها بواسطة التجميع الرئيسي. ثم، يجب تحميل هذه التجميعات عملية تحويل البيانات إلى ملف XML في قاعدة بيانات SQL Server باستخدام عبارة CREATE التجميع.
تصريح
يعتبر هذا السلوك حسب التصميم.
مراجع
للحصول على مزيد من المعلومات حول إنشاء تسلسل XML من CLR كائنات قاعدة البيانات قم بزيارة موقع MSDN التالي:للحصول على مزيد من المعلومات حول أداة مولد مُسلسل XML قم بزيارة موقع MSDN التالي:
TSQL لـ t udt

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 913668 - آخر مراجعة: 05/23/2007 15:52:10 - المراجعة: 2.1

Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Workgroup Edition

  • kbmt kbsql2005clr kbexpertiseadvanced kbprb KB913668 KbMtar
تعليقات
?DI=4050&did=1&t="> الخصوصية وملفات تعريف الارتباط
  • العلامات التجارية
  • © 2016 Microsoft
  • did=1&t=">050&did=1&t=">id=1&t=">