هل تريد إصلاح معالجة الوسيطة في اختصارات SQL Server 2005 Mgmt Studio المخصصة لتسريع لوحة المفاتيح؟

StackOverflow https://stackoverflow.com/questions/85179

  •  01-07-2019
  •  | 
  •  

سؤال

لقد كنت من محبي مسرعات لوحة المفاتيح ذات الإجراءات المخزنة منذ فترة طويلة، كما هو موضح في هذا المقال.عندما انتقلنا من SQL 2000 إلى 2005، ومن محلل الاستعلام إلى Management Studio، تغير التعامل مع الوسائط.في ضمان الجودة، تتم قراءة الوسائط المفصولة بفواصل تلقائيًا على أنها وسيطتين منفصلتين.في SSMS - على الأقل بالنسبة لي - تتم قراءتها كوسيطة واحدة، مع وجود فواصل فيها.وبالمثل، إذا قمت بتمرير وسيطة واحدة تحتوي على علامات اقتباس مفردة، أحصل على خطأ في بناء الجملة، ما لم أهرب من الاقتباسات (' -> '').في المقالة المرتبطة أعلاه، تشير الكاتبة إلى أن هذا لا ينبغي أن يكون هو الحال بالنسبة لـ SSMS، ولكن حتى مع مثالها الدقيق، لا يزال يتم تفسير الوسيطات المفصولة بفواصل على أنها وسيطة واحدة في كل تثبيت SSMS قمت بتجربته (3 من لهم)، ويعمل ضد كل تثبيت SQL Server الذي قمت بتجربته (4 منهم).

على سبيل المثال، كتابة ما يلي في SSMS،

Person,4

ثم تحديده وتشغيل الاختصار، تظهر لي رسالة الخطأ "اسم الكائن غير صالح 'Person,4'.

هل لدى أي شخص أي فكرة عن كيفية إصلاح هذا؟هل يستخدم أي شخص هذه الاختصارات؟لقد بحثت في Google عن هذه المشكلة عدة مرات خلال العامين الماضيين، ولم يحالفني الحظ.

يحرر:قد تكون هناك مشكلة في إنشاء محدد لـ SSMS.لدي منشور متابعة أدناه.

هل كانت مفيدة؟

المحلول 2

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

لقد تمكنت أيضًا من إعادة تكرار مشكلة تحليل الوسيطة على أجهزة الكمبيوتر الأخرى التي جربتها في الماضي.آمل أن يتمكن تيم من إخباري ما هو الإصدار ورقم الإصدار على تثبيت SSMS الخاص به، لأن نظريتي الحالية هي أن المشكلة تكمن فقط في البنية المحددة التي لدينا أنا وزملائي في العمل على أجهزة الكمبيوتر الخاصة بنا - سلسلة الإصدار هي "استوديو إدارة خادم Microsoft SQL 9.00.1399.00".تمت جميع عمليات تثبيت هذا الإصدار منذ أكثر من عام، لذا لا أعرف ما إذا كان بإمكاني تتبع القرص الذي تم الحصول عليه منه.

الخادم الذي لا يواجه المشكلة هو في الواقع خادم التطوير الخاص بنا، والذي تم تثبيت "Microsoft SQL Server Management Studio 9.00.3042.00".لا أعرف ما إذا كان هذا شيئًا يمكنني التخلص منه عن طريق التصحيح أو شيء من هذا القبيل، ولكن يبدو حاليًا أن 1399 يقرأ التحديد بالكامل كوسيطة واحدة، بينما يقوم 3042 ببعض التحليل المسبق.لقد وجدت أيضًا مؤخرًا أنه عندما أقوم بتمرير سلسلة تحتوي على "--" (رمز التعليق) في 3042، يتم تجاهل كل شيء بعد "--"، بينما في 1399، يتم تضمين كل شيء في الوسيطة الأولى.

نصائح أخرى

لم أحاول ذلك مطلقًا حتى قرأت سؤالك ثم قرأت المقالة التي أشرت إليها، لذا خذ هذا بحذر.

ومع ذلك، فأنا قادر على تشغيل العملية على جهاز الكمبيوتر الخاص بي باستخدام SSMS، كما يمكنني أيضًا تكرار الخطأ الذي وصفته.

لكي يعمل هذا كما هو متوقع، قمت بإنشاء sproc في قاعدة البيانات الرئيسية، وقمت بتعيين اختصار لوحة المفاتيح وأعدت تشغيل SSMS.قمت بعد ذلك بكتابة اسم قاعدة البيانات.schema_name.table_name بين علامات اقتباس مفردة متبوعة بفاصلة ثم قيمة عددية (sproc الذي قمت باختباره كان نموذج GetRows في المقالة).كنت لا أزال متصلاً بقاعدة البيانات الرئيسية.

وقد نجح هذا دون وقوع حوادث.

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

ربما تحتاج إلى إضافة اسم قاعدة البيانات واسم المخطط قبل اسم الجدول؟

أنا أستخدم الإصدار 9.00.3042.00 من SSMS أيضًا، وهو ما يفسر على الأرجح سبب عمله على جهازي.

أتفق مع تيم.لقد قمت للتو بالترقية إلى SQL Server 05 sp2 وأؤكد أنه تم إصلاح هذا الخطأ.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top