الإرشادات التفصيلية: تأليف مخصص الثابتة تحليل تعليمات برمجية قاعدة تجميع ل SQL

يوضح هذا خطوة بخطوة إلى pic الخطوات المستخدمة إلى إنشاء قاعدة تحليل تعليمات برمجية SQL. القاعدة التي تم إنشاؤها في ترتيب هو معاينة هو استخدامه لتجنب التأخير WAITFOR عبارات في الإجراءات المخزنة والمشغلات وظائف.

في هذه معاينة، يمكنك إنشاء قاعدة مخصصة ل Transact-SQLثابت تحليل تعليمات برمجية باستخدام معالجات التالية:

  1. إنشاء مكتبة فئة، قم بتمكين تسجيل الدخول لهذا مشروع، و إضافة المراجع الضرورية.

  2. إنشاء مساعد C# فئتين.

  3. إنشاء C# مخصص فئة قاعدة.

  4. إنشاء ملف XML هو المستخدمة ل regهوter تجميع.

  5. قم بنسخ ملف DLL و XML الناتجة التي تقوم بإنشائها في إلى direcإلىry ملحقات الترتيب إلى تسجيله.

  6. تحقق من أن analys رمز جديد هو قاعدة هو في نفس المكان.

المتطلبات الأساسية

يجب أن يكون لديك أما Visual Studio Premiumأو Visual Studio Ultimateتثبيت إلى إكمال هذه معاينة.

قم بإنشاء قاعدة تحليل تعليمات برمجية مخصص ل SQL

أول، ستقوم بإنشاء مكتبة فئة.

لإنشاء مكتبة فئة

  1. من القائمة ملف، انقر فوق جديد، ثم انقر فوق مشروع.

  2. في مشروع جديد صندوق حوار، في القائمة القوالب المثبتة، انقر فوق Visual C#‎ .

  3. في جزء التفاصيل، تحديد فئة مكتبة .

  4. نص اسم صندوق نوع SampleRules وثم انقر فوق ‏‏موافق .

التالي، سوف يقوم بتسجيل مشروع.

إلى تمكين توقيع للمشروع

  1. بعقدة مشروع SampleRules المحددة في مستكشف الحل ، من قائمة مشروع ، انقر فوق خصائص (أو ينقر على اليمين the مشروع عقدة inالحل Explorer و then click Properties).

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

  3. حدد توقيع التجميع خانة اختيار.

  4. تحديد ملف المفتاح جديد. تحديد**<جديد>** من القائمة المنسدلة قم باختيار ملف المفتاح للاسم القوي .

    يظهر صندوق الحوار إنشاء المفتاح اسم قوي. لمزيد من المعلومات، راجع قم بإنشاء مربع حوار مفتاح بإسم قوي.

  5. في صندوق الحوار إنشاء المفتاح اسم قوي ، اكتب SampleRulesKey في صندوق نص اسم لملف المفتاح جديد. لم يكن إلى توفير كلمة مرور لهذه معاينة. لمزيد من المعلومات، راجع إدارة "التجميع" و "بيان" التوقيع.

بعد ذلك، سوف إضافة المراجع اللازمة للمشروع.

إلى إضافة مراجع قابلة للتطبيق إلى المشروع

  1. في من مستكشف الحل، تحديد مشروع SampleRules.

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

    يفتح صندوق الحوار إضافة مرجع. لمزيد من المعلومات، راجع كيفية القيام بما يلي: إضافة أو إزالة المراجع في ‏‫Visual Studio.

  3. تحديد علامة تبويب .NET.

  4. في من اسم مكوّن عمود، حدد موقع المكونات التالية:

    ملاحظة

    اضغط زر'Ctrl' أثناء النقر فوق إلى حدد مكونات متعددة.

  5. انقر فوق ‏‏موافق عند محدد الجميع المكونات التي تحتاجها.

    سوف تظهر فيها المراجع المحدد تحت المراجع عقدة مشروع في من مستكشف الحلول.

قم بإنشاء قاعدة رمز مخصص لتحليل الدعم فئات

قبل إنشاء الفئة قاعدة نفسها، تقوم بإضافة فئة visiإلىr وفئة مساعد إلى المشروع.

تلميحتلميح

قد يكون مفيداً لإنشاء قواعد إضافى مخصصة هذه الفئات.

هي الفئة الأولى التي يجب عليك تعريف فئة WaitForDelayVisitor، مشتق من TSqlConcreteFragmentVisitor. وهذا فئة وصولاً إلى عبارات التأخير WAITFOR في الطراز.

لتعريف الفئة WaitForDelayVisitor

  1. في من مستكشف الحل، تحديد مشروع SampleRules.

  2. تشغيل تحديد قائمة مشروع إضافة فئة.

    يظهر مربع الحوار Add New Item.

  3. نص اسم صندوق نوع WaitForDelayVisitor.cs وثم انقر فوق إضافة زر .

    WaitForDelayVisitor.cs ملف يضاف إلى مشروع في من مستكشف الحلول.

  4. فتح في WaitForDelayVisitor.cs ملف وتحديث المحتويات بحيث تتطابق مع تعليمات برمجية التالية:

    using System.Collections.Generic;
    using Microsoft.Data.Schema.ScriptDom.Sql;
    
    namespace SampleRules
    {
        class WaitForDelayVistor
        {
        }
    }
    
  5. في إعلان فئة، تغيير إعدادات الوصول معدّل إلى داخلي اشتقاق الفئة من TSqlConcreteFragmentVisitor:

        internal class WaitForDelayVisitor : TSqlConcreteFragmentVisitor
        {
        }
    
  6. إضافة التعليمة البرمجية التالية لتعريف متغير عضو قائمة:

            private List<WaitForStatement> _waitForDelayStatments;
    
  7. قم بتعريف الدالة الإنشائية فئة بإضافة ما يلي تعليمات برمجية:

            #region ctor
            public WaitForDelayVisitor()
            {
                _waitForDelayStatments = new List<WaitForStatement>();
            }
            #endregion
    
  8. قم بتعريف خاصية WaitForDelayStatements للقراءة فقط بإضافة ما يلي تعليمات برمجية:

            #region properties
            public List<WaitForStatement> WaitForDelayStatements
            {
                get
                {
                    return _waitForDelayStatments;
                }
            }
            #endregion
    
  9. يمنع الأسلوب ExplicitVisit بإضافة ما يلي تعليمات برمجية:

            #region overrides
            public override void ExplicitVisit(WaitForStatement node)
            {
                // We are only interested in WAITFOR DELAY occurrences
                if (node.WaitForOption == WaitForOption.Delay)
                {
                    _waitForDelayStatments.Add(node);
                }
            }
            #endregion
    

    هذا الأسلوب زيارة عبارات WAITFOR في الطراز، وقم بإضافة تلك التي تحتوي على تأخير الخيار المحدد إلى قائمة WAITFOR تأخير العبارات. المفتاح فئة المشار إليها هنا هو WaitForStatement.

  10. من قائمة ملف ، انقر فوق حفظ.

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

  • GetElementNameيستخدم إلى الحصول على اسم عنصر طراز escaped، مؤهل بشكل كامل

  • UpdateProblemPositionاستخدام إلى حساب معلومات الخط والأعمدة.

  • ReadFileContentيستخدم إلى قراءة المحتوى من ملف.

  • GetElementSource ملفيستخدم للحصول على المصدر ملف.

  • ComputeLineColumnيستخدم لتحويل الإزاحة من ScriptDom إلى سطر و العمود في ملفات البرامج النصية.

لإضافة SqlRuleUtils.cs ملف للمشروع

  1. في من مستكشف الحل، تحديد مشروع SampleRules.

  2. تشغيل تحديد قائمة مشروع إضافة فئة.

    يظهر مربع الحوار Add New Item.

  3. نص اسم صندوق نوع SqlRuleUtils.cs وثم انقر فوق إضافة زر .

    SqlRuleUtils.cs ملف يضاف إلى مشروع في من مستكشف الحلول.

  4. فتح في SqlRuleUtils.cs ملف ثم قم بإضافة ما يلي استخدام عبارات ملف:

    using System;
    using System.Diagnostics;
    using System.IO;
    using Microsoft.Data.Schema.SchemaModel;
    using Microsoft.Data.Schema.Sql.SchemaModel;
    using Microsoft.Data.Schema.StaticCodeAnalysis;
    using Microsoft.Data.Schema;
    
    
    namespace SampleRules
    {
    }
    
  5. في إعلان فئة SqlRuleUtils، قم بتغيير مُعدل الوصول إلى ثابت العام:

        public static class SqlRuleUtils
        {
        }
    
  6. إضافة التعليمة البرمجية التالية لإنشاء أسلوب GetElementName، والذي يستخدم SqlSchemaModelو ISqlModelElementكمعلمات إدخال:

            /// <summary>
            /// Get escaped fully qualified name of a model element 
            /// </summary>
            /// <param name="sm">schema model</param>
            /// <param name="element">model element</param>
            /// <returns>name of the element</returns>
            public static string GetElementName(SqlSchemaModel sm, ISqlModelElement element)
            {
                return sm.DatabaseSchemaProvider.UserInteractionServices.GetElementName(element, ElementNameStyle.EscapedFullyQualifiedName);
            }
    
  7. إضافة التعليمة البرمجية التالية لإنشاء الأسلوب ReadFileContent:

            /// <summary>
            /// Read file content from a file.
            /// </summary>
            /// <param name="filePath"> file path </param>
            /// <returns> file content in a string </returns>
            public static string ReadFileContent(string filePath)
            {
                //  Verify that the file exists first.
                if (!File.Exists(filePath))
                {
                    Debug.WriteLine(string.Format("Cannot find the file: '{0}'", filePath));
                    return string.Empty;
                }
    
                string content;
                using (StreamReader reader = new StreamReader(filePath))
                {
                    content = reader.ReadToEnd();
                    reader.Close();
                }
                return content;
            }
    
  8. إضافة التعليمة البرمجية التالية لإنشاء أسلوب GetElementSourceFile، والذي يستخدم IModelElementكمعلمة إدخال و Stringللحصول على اسم ملف. cكـts الطريقة IModelElement كـ IScriptSourcedModelElementثم يستخدم ISourceInformationفي تحديد مسار ملف برنامج نصي من عنصر الطراز.

            /// <summary>
            /// Get the corresponding script file path from a model element.
            /// </summary>
            /// <param name="element">model element</param>
            /// <param name="fileName">file path of the scripts corresponding to the model element</param>
            /// <returns></returns>
            private static Boolean GetElementSourceFile(IModelElement element, out String fileName)
            {
                fileName = null;
    
                IScriptSourcedModelElement scriptSourcedElement = element as IScriptSourcedModelElement;
                if (scriptSourcedElement != null)
                {
                    ISourceInformation elementSource = scriptSourcedElement.PrimarySource;
                    if (elementSource != null)
                    {
                        fileName = elementSource.SourceName;
                    }
                }
    
                return String.IsNullOrEmpty(fileName) == false;
            }
    
  9. إضافة التعليمة البرمجية التالية لإنشاء الأسلوب ComputeLineColumn:

            /// This method converts offset from ScriptDom to line\column in script files.
            /// A line is defined as a sequence of characters followed by a carriage return ("\r"), 
            /// a line feed ("\n"), or a carriage return immediately followed by a line feed. 
            public static bool ComputeLineColumn(string text, Int32 offset, Int32 length,
                                                out Int32 startLine, out Int32 startColumn, out Int32 endLine, out Int32 endColumn)
            {
                const char LF = '\n';
                const char CR = '\r';
    
                // Setting the initial value of line and column to 0 since VS auto-increments by 1.
                startLine = 0;
                startColumn = 0;
                endLine = 0;
                endColumn = 0;
    
                int textLength = text.Length;
    
                if (offset < 0 || length < 0 || offset + length > textLength)
                {
                    return false;
                }
    
                for (int charIndex = 0; charIndex < length + offset; ++charIndex)
                {
                    char currentChar = text[charIndex];
                    Boolean afterOffset = charIndex >= offset;
                    if (currentChar == LF)
                    {
                        ++endLine;
                        endColumn = 0;
                        if (afterOffset == false)
                        {
                            ++startLine;
                            startColumn = 0;
                        }
                    }
                    else if (currentChar == CR)
                    {
                        // CR/LF combination, consuming LF.
                        if ((charIndex + 1 < textLength) && (text[charIndex + 1] == LF))
                        {
                            ++charIndex;
                        }
    
                        ++endLine;
                        endColumn = 0;
                        if (afterOffset == false)
                        {
                            ++startLine;
                            startColumn = 0;
                        }
                    }
                    else
                    {
                        ++endColumn;
                        if (afterOffset == false)
                        {
                            ++startColumn;
                        }
                    }
                }
    
                return true;
            }
    
  10. إضافة التعليمة البرمجية التالية لإنشاء أسلوب UpdateProblemPosition، والذي يستخدم DataRuleProblemكمعلمة إدخال:

            /// <summary>
            /// Compute the start Line/Col and the end Line/Col to update problem info
            /// </summary>
            /// <param name="problem">problem found</param>
            /// <param name="offset">offset of the fragment having problem</param>
            /// <param name="length">length of the fragment having problem</param>
            public static void UpdateProblemPosition(DataRuleProblem problem, int offset, int length)
            {
                if (problem.ModelElement != null)
                {
                    String fileName = null;
                    int startLine = 0;
                    int startColumn = 0;
                    int endLine = 0;
                    int endColumn = 0;
    
                    bool ret = GetElementSourceFile(problem.ModelElement, out fileName);
                    if (ret)
                    {
                        string fullScript = ReadFileContent(fileName);
    
                        if (fullScript != null)
                        {
                            if (ComputeLineColumn(fullScript, offset, length, out startLine, out startColumn, out endLine, out endColumn))
                            {
                                problem.FileName = fileName;
                                problem.StartLine = startLine + 1;
                                problem.StartColumn = startColumn + 1;
                                problem.EndLine = endLine + 1;
                                problem.EndColumn = endColumn + 1;
                            }
                            else
                            {
                                Debug.WriteLine("Could not compute line and column");
                            }
                        }
                    }
                }
            }
    
  11. من قائمة ملف ، انقر فوق حفظ.

التالية، التي إضافة ملف مورد الذي سيتم تحديد اسم قاعدة ووصف قاعدة والفئة التي تظهر قاعدة في واجهة تكوين قاعدة.

إلى إضافة ملف مورد وثلاث سلاسل المورد

  1. في من مستكشف الحل، تحديد مشروع SampleRules.

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

    يظهر مربع الحوار Add New Item.

  3. في القائمة القوالب المثبتة، انقر فوق عام.

  4. في جزء التفاصيل، انقر فوق من ملف موارد.

  5. في الاسم، نوع من SampleRuleResource.resx.

    تظهر، مع عدم وجود موارد المحرر مورد بعد المعرفة.

  6. قم بتعريف ثلاث سلاسل مورد كما يلي:

    الاسم

    Value

    AvoidWaitForDelay_ProblemDescription

    WAITFOR تأخير يتم العثور على عبارة في {0}.

    AvoidWaitForDelay_RuleName

    تجنب استخدام عبارات تأخير WaitFor في إجراءات مخزنة والدالات والمشغلات.

    CategorySamples

    SamplesCategory

  7. تشغيل انقر قائمة ملف حفظ SampleRuleResource.resx.

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

إلى تعريف الفئة SampleConstants

  1. في من مستكشف الحل، تحديد مشروع SampleRules.

  2. تشغيل تحديد قائمة مشروع إضافة فئة.

    يظهر مربع الحوار Add New Item.

  3. في صندوق نص الاسم ، اكتب SampleRuleConstants.cs و ثم انقر فوق الزر إضافة.

    SampleRuleConstants.cs ملف يضاف إلى مشروع في من مستكشف الحلول.

  4. افتح الملف SampleRuleConstants.cs ثم قم بإضافة ما يلي استخدام عبارات إلى الملف:

    namespace SampleRules
    {
        internal class SampleConstants
        {
            public const string NameSpace = "SamplesRules";
            public const string ResourceBaseName = "SampleRules.SampleRuleResource";
            public const string CategorySamples = "CategorySamples";
    
            public const string AvoidWaitForDelayRuleId = "SR1004";
            public const string AvoidWaitForDelay_RuleName = "AvoidWaitForDelay_RuleName";
            public const string AvoidWaitForDelay_ProblemDescription = "AvoidWaitForDelay_ProblemDescription";
        }
    }
    
  5. من قائمة ملف ، انقر فوق حفظ.

إنشاء مخصص رمز فئة قاعدة التحليل

والآن بعد أن قيامك بإضافة فئات المساعد الذي ستستخدمه القاعدة "تحليل تعليمات برمجية" المخصصة، يتم إنشاء فئة قاعدة مخصصة و اسم AvoidWaitForDelayRule. سيتم استخدام القاعدة cusإلىm AvoidWaitForDelayRule إلى تساعد المطورين على تجنب عبارات التأخير WAITFOR في إجراءات sإلىred ومشغلات ودالات قاعدة بيانات.

لإنشاء الفئة AvoidWaitForDelayRule

  1. في من مستكشف الحل، تحديد مشروع SampleRules.

  2. في قائمة مشروع ، تحديد مجلد جديد .

  3. يظهر مجلد جديد في من مستكشف الحل. قم بتسمية المجلد AvoidWaitForDelayRule.

  4. في من مستكشف الحلول، تحقق من أن المجلد AvoidWaitForDelayRule هو المحددة.

  5. تشغيل تحديد قائمة مشروع إضافة فئة.

    يظهر مربع الحوار Add New Item.

  6. نص اسم صندوق نوع AvoidWaitForDelayRule.cs وثم انقر فوق إضافة زر .

    AvoidWaitForDelayRule.cs ملف يضاف إلى المجلد AvoidWaitForDelayRule للمشروع في من مستكشف الحلول.

  7. فتح في AvoidWaitForDelayRule.cs ملف ثم قم بإضافة ما يلي استخدام عبارات ملف:

    using System;
    using System.Collections.Generic;
    using System.Diagnostics;
    using System.Globalization;
    using Microsoft.Data.Schema.Extensibility;
    using Microsoft.Data.Schema.SchemaModel;
    using Microsoft.Data.Schema.ScriptDom.Sql;
    using Microsoft.Data.Schema.Sql.SchemaModel;
    using Microsoft.Data.Schema.Sql;
    using Microsoft.Data.Schema.StaticCodeAnalysis;
    
  8. في إعلان فئة AvoidWaitForDelayRule، قم بتغيير معدّل الوصول إلى العامة:

        /// <summary>
        /// This is a SQL rule which returns a warning message 
        /// whenever there is a WAITFOR DELAY statement appears inside a subroutine body. 
        /// This rule only applies to SQL stored procedures, functions and triggers.
        /// </summary>
        public class AvoidWaitForDelayRule
    
  9. ينحدر من AvoidWaitForDelayRule فئة من StaticCodeAnalysisRuleالأساسية فئة:

        public class AvoidWaitForDelayRule : StaticCodeAnalysisRule
    
  10. قم بإضافة DatabaseSchemaProviderCompatibilityAttribute، DataRuleAttribute، و SupportedElementTypeAttributeإلى فئة. الخاص بك لمزيد من معلومات حول توافق ملحق الميزة، راجع قم بتوسيع ميزات قاعدة بيانات من برنامج ‏‫Visual Studio.

        [DatabaseSchemaProviderCompatibility(typeof(SqlDatabaseSchemaProvider))]
        [DataRuleAttribute(
            SampleConstants.NameSpace,
            SampleConstants.AvoidWaitForDelayRuleId,
            SampleConstants.ResourceBaseName,
            SampleConstants.AvoidWaitForDelay_RuleName,
            SampleConstants.CategorySamples,
            DescriptionResourceId = SampleConstants.AvoidWaitForDelay_ProblemDescription)]
        [SupportedElementType(typeof(ISqlProcedure))]
        [SupportedElementType(typeof(ISqlTrigger))]
        [SupportedElementType(typeof(ISqlFunction))]
        public class AvoidWaitForDelayRule : StaticCodeAnalysisRule
    

    تحدد DataRuleAttribute المعلومات التي تظهر في Visual Studioعندما تقوم بتكوين قاعدة بيانات تحليل تعليمات برمجية قواعد. يعرف SupportedElementTypeAttribute أنواع عناصر إلى التي سيتم تطبيق هذه قاعدة. في هذه الحالة، سيتم تطبيق قاعدة إلى sإلىred الإجراءات والمشغلات وظائف.

  11. إضافة يمنع ل Analyzeأسلوب، الذي يستخدم DataRuleSettingو DataRuleExecutionContextكمعلمات إدخال. وهذا أسلوب بإرجاع قائمة بالمشاكل المحتملة.

    يحصل على الأسلوب في IModelElementو TSqlFragmentمن معلمة سياق. SqlSchemaModelو ISqlModelElementتم الحصول عليها من عناصر الطراز. الفئة WaitForDelayVهوitor هو ثم يستخدم للحصول على lهوt من كافة عبارات التأخير WAITFOR في الطراز.

    لكل WaitForStatementفي ذلك lهوt، DataRuleProblemهو إنشاء.

            #region Overrides
            /// <summary>
            /// Analyze the model element
            /// </summary>
            public override IList<DataRuleProblem> Analyze(DataRuleSetting ruleSetting, DataRuleExecutionContext context)
            {
                List<DataRuleProblem> problems = new List<DataRuleProblem>();
    
                IModelElement modelElement = context.ModelElement;
    
                // this rule does not apply to inline table-valued function
                // we simply do not return any problem
                if (modelElement is ISqlInlineTableValuedFunction)
                {
                    return problems;
                }
    
                // casting to SQL specific 
                SqlSchemaModel sqlSchemaModel = modelElement.Model as SqlSchemaModel;
                Debug.Assert(sqlSchemaModel!=null, "SqlSchemaModel is expected");
    
                ISqlModelElement sqlElement = modelElement as ISqlModelElement;
                Debug.Assert(sqlElement != null, "ISqlModelElement is expected");
    
                // Get ScriptDom for this model element
                TSqlFragment sqlFragment = context.ScriptFragment as TSqlFragment;
                Debug.Assert(sqlFragment != null, "TSqlFragment is expected");
    
                // visitor to get the ocurrences of WAITFOR DELAY statements
                WaitForDelayVisitor visitor = new WaitForDelayVisitor();
                sqlFragment.Accept(visitor);
                List<WaitForStatement> waitforDelayStatements = visitor.WaitForDelayStatements;
    
                // Create problems for each WAITFOR DELAY statement found 
                foreach (WaitForStatement waitForStatement in waitforDelayStatements)
                {
                    DataRuleProblem problem = new DataRuleProblem(this,
                                                String.Format(CultureInfo.CurrentCulture, this.RuleProperties.Description, SqlRuleUtils.GetElementName(sqlSchemaModel, sqlElement)),
                                                sqlElement);
    
                    SqlRuleUtils.UpdateProblemPosition(problem, waitForStatement.StartOffset, waitForStatement.FragmentLength);
                    problems.Add(problem);
                }
    
                return problems;
            }
    
            #endregion    
    
    
  12. من قائمة ملف ، انقر فوق حفظ.

التالي، سيتم إنشاء مشروع.

إلى بنية مشروع

  • من القائمة Build (بناء)، انقر فوق Build Solution (بناء الحل).

التالي، الذي يقوم بجمع معلومات تجميع التي تم إنشاؤها في مشروع، بما في ذلك الإصدار والثقافة PublicKeyToken.

إلى جمع معلومات تجميع

  1. قائمة عرض انقر فوق من Windows الأخرى، ومن ثم انقر فوق من نافذة الأوامر إلى فتح النافذة الأوامر.

  2. في الإطار الأوامر، نوع التعليمة البرمجية التالية. ل FilePath، استبدل المسار و ملف اسم.dll المترجمة الخاصة بك ملف. تضمين علامات الاقتباس حول المسار و ملف اسم.

    ملاحظة

    بشكل افتراضي FilePathهو مشاريع\SampleRules\SampleRules \bin\يصحح\ YourDLL أو مشاريع\SampleRules\SampleRules\ bin\يطرح المنتج\ من YourDLL.

    ? System.Reflection.Assembly.LoadFrom(@"FilePath")
    
  3. اضغط ENTER. يجب أن تشبه السطر التالي مع PublicKeyToken الخاصة بك:

    "SampleRules, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nnnnnnnnnnnnnnnn"
    

    notate أو نسخ هذا معلومات تجميع؛ سيتم استخدامه في إجراء التالي.

التالي، يتم إنشاء ملف XML باستخدام تجميع المعلومات التي تم تجميعها في إجراء السابق.

لإنشاء ملف XML

  1. في من مستكشف الحل، تحديد مشروع SampleRules.

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

  3. في الجزء القوالب ، تحديد موقع و تحديد العنصر ملف XML.

  4. نص اسم صندوق نوع SampleRules.ملحقات.xml وثم انقر فوق إضافة زر .

    SampleRules.ملحقات.xml ملف يضاف إلى مشروع في من مستكشف الحلول.

  5. فتح في SampleRules.ملحقات.ملف XML وتحديثه بحيث تتطابق مع XML التالي. قم باستبدال الإصدار، والثقافة، وقيم و PublicKeyToken مع تلك التي تم استردادها في إجراء السابق.

    <?xml version="1.0" encoding="utf-8"?>
    <extensions assembly=""
                version="1" xmlns="urn:Microsoft.Data.Schema.Extensions"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:schemaLocation="urn:Microsoft.Data.Schema.Extensions Microsoft.Data.Schema.Extensions.xsd">
    
      <extension type="SampleRules.AvoidWaitForDelayRule" assembly="SampleRules, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b4deb9b383d021b0" enabled="true"/>
    </extensions> 
    
  6. من قائمة ملف ، انقر فوق حفظ.

بعد ذلك، سيتم نسخ المعلومات تجميع و ملف XML إلى الدليل ملحقات. عند Visual Studioبدء تشغيل، سيتم التعرف على أية ملحقات في الدليل 10.0\VSTSDB\Extensions Microsoft ‏‫Visual Studio و الدلائل الفرعية، و التسجيل عليها للاستخدام في جلسة عمل.

لنسخ المعلومات تجميع و ملف XML إلى الدليل ملحقات

  1. قم بإنشاء مجلد جديد يسمى CustomRules في الدليل 10.0\VSTSDB\ملحقات\Microsoft ‏‫Visual Studio.

  2. قم بنسخ التجميع SampleRules.dll ملف من الدليل\SampleRules\SampleRules\bin\يصحح\ مشاريع إلى الدليل 10.0\VSTSDB\ملحقات\CustomRules Microsoft ‏‫Visual Studio الذي قمت بإنشائه.

  3. قم بنسخ الملف SampleRules.ملحقات.xml من الدليل\SampleRules\SampleRules\ مشاريع إلى الدليل 10.0\VSTSDB\ملحقات\CustomRules Microsoft ‏‫Visual Studio الذي قمت بإنشائه.

    ملاحظة

    أفضل لإجراء هو لوضع تجميعات الملحق الخاص بك في مجلد في الدليل 10.0\VSTSDB\ملحقات Studio Vهوual Microsoft Office 2010 Suite. سيساعد هذا التعرف على الذي ملحقات تم تضمينها مع منتج، وأيها إنشاءات المخصص الخاص بك. من المستحسن استخدام المجلدات أيضا لتنظيم الملحقات الخاصة بك في فئات معينة.

بعد ذلك، سيتم يبدأ جلسة عمل جديدة من برنامج ‏‫Visual Studio و إنشاء مشروع قاعدة بيانات.

إلى يبدأ جلسة عمل جديدة لبرنامج ‏‫Visual Studio ثم قم بإنشاء مشروع قاعدة بيانات

  1. بدء جلسة عمل الثاني من Visual Studio.

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

  3. في صندوق الحوار الخاص ب مشروع جديد ، في القائمة القوالب المثبتة، قم بتوسيع العقدة مشاريع قاعدة بيانات ، ومن ثم انقر فوق SQL الخادم .

  4. في جزء التفاصيل، تحديد SQL الخادم 2008 قاعدة بيانات مشروع .

  5. في صندوق نص الاسم ، اكتب SampleRulesDB و ثم انقر فوق ‏‏موافق .

وأخيراً، فستشاهد جديد قاعدة عرض في SQL Serverمشروع.

إلى عرض قاعدة جديدة لتحليل تعليمات برمجية AvoidWaitForRule

  1. في من مستكشف الحل، تحديد مشروع SampleRulesDB.

  2. في قائمة مشروع, انقر فوق خصائص.

    يتم عرض صفحة خصائص SampleRulesDB.

  3. Click Code Analysis.

    يجب أن تظهر فئة جديدة باسم CategorySamples.

  4. توسيع CategorySamples.

    يجب أن تشاهد SR1004: تجنب عبارة التأخير WAITFOR في الإجراءات المخزنة والمشغلات وظائف .

راجع أيضًا:

المهام

كيفية القيام بما يلي: لتسجيل و إدارة ميزة ملحقات

كيفية القيام بما يلي: توزيع Cusإلىm ميزة ملحقات إلى فريق الأعضاء

المرجع

ISqlProcedure

ISqlTrigger

ISqlFunction

ISqlInlineTableValuedFunction

المبادئ

قم بتوسيع ميزات قاعدة بيانات من برنامج ‏‫Visual Studio

تحسين التعليمات البرمجية في قاعدة البيانات مع تحليل الثابتة

تحليل جودة التعليمات البرمجية المدارة باستخدام تحليل التعليمات البرمجية