it-swarm.asia

هل هناك مفهوم "تضمين ملف" في SQL Server؟

لدي مجموعة من البرامج النصية التي يجب تشغيلها بترتيب معين. أود إنشاء "ملف رئيسي" يسرد كافة الملفات الأخرى وترتيبها الصحيح. بشكل أساسي مثل ملف التضمين من C++ أو ASP/VBScript.

19
Jonathan Allen

إذا كنت تستخدم SQLCMD ، يمكنك استخدام :r FileName لتضمين ملف .sql منفصل.

: r FileName

يوزع عبارات T-SQL إضافية وأوامر SQLCMD من الملف المحدد بواسطة FileName في ذاكرة التخزين المؤقت للعبارات. تتم قراءة FileName نسبة إلى دليل بدء التشغيل لـ Visual Studio. تتم قراءة الملف وتنفيذه بعد مواجهة أداة إنهاء الدُفعة. يمكنك إصدار أوامر متعددة: r. يمكن أن يتضمن الملف أي أمر SQLCMD ، بما في ذلك فاصل الدُفعات المحدد في أدوات ، خيارات. يمكنك استخدام: r في برنامج نصي ما قبل النشر أو ما بعد النشر لتضمين برامج نصية أخرى.

19
Michael Fredrickson

بمعنى قديم C معالجات مسبقة بالتأكيد لا

  • T-SQL في حد ذاته ليس لديه مثل هذا المفهوم
  • لا تتعامل sqlcmd و sqlcmdmode لـ SSMS مسارات الملفات النسبية
  • sqlcmd و sqlcmdmode من SSMS لا يدعم الشرطي بما في ذلك

إذا كان لديك مجموعة من الملفات ذات المسارات المطلقة المحددة ، والتي تريد تضمينها بترتيب غير مشروط ، فيمكنك استخدام أداة سطر الأوامر sqlcmd أو استخدام SSMS في sqlcmdmode كما هو مذكور بواسطةmfredrickson وMarian.


ولكن إذا كنت تريد مسارات نسبية أو شرطية ، فأنت بحاجة إلى استخدام بعض استدعاء المجمع sqlcmd (أو أحد أسلافه المتوقف isql أو osql).

حاليًا في عملي في هذه الحالة ، أنا أراجع وأمدّد vbs القديم و hta code. أنا لست سعيدًا تمامًا ، لكنه قرار عملي. إنه يعمل والمستخدم النهائي في المنزل مع واجهة المستخدم الرسومية hta ولا يلزم تثبيت برنامج إضافي.

للحصول على تصميم جديد ، سأبدأ في التفكير في استخدام WPF و PowerShell لالتفاف مكالمات sqlcmd ، ولكن مع عملائنا الحاليين لا يمكنني افتراض وجود PowerShell V2.

في الأوقات السابقة ، كتبنا دفعات cmd بسيطة لهذا الغرض ، لا يزال بعضها قيد الاستخدام.

أعتقد أن هناك أدوات حالية ، خاصة تلك التي تستهدف سير العمل ، والتي قد تكون مناسبة هنا. لست على دراية بهؤلاء.

4
bernd_k

إلى جانب وضع SQLCMD في Management Studio ، يمكنك أيضًا استخدام ملف دفعي لاستخدامه كملف رئيسي لترتيب واستدعاء جميع ملفات sql الخاصة بك باستخدام SQLCMD الأداة المساعدة .

إن وضع SQLCMD عبارة عن محاكاة لاستخدام الأداة المساعدة داخل استوديو الإدارة ، لذلك لا يوجد فرق كبير بين الأوضاع. باستثناء أنه في بعض الأحيان أفضل تشغيل دفعات (لا مزيد من فتح M Studio ... تحميل db الصحيح ... إلخ). أفضل تكوين كل شيء في الدفعة ، بما في ذلك ملفات الإخراج.

3
Marian

أوافق ، هناك حاجة ماسة للمعالج المسبق T-SQL. لقد طورت جهازًا خاصًا بي في C # ، والذي استغرق مني حوالي ساعة. إلى جانب التحكم في ترتيب تنفيذ سكربتات SQL ، فإنه يسمح لي أيضًا بالحصول على وحدات ماكرو تبدو مثل UDFs العددية وملائمة للاستخدام ، ولكنها تعمل بنفس سرعة UDFs المضمنة.

2
A-K

أحب bernd_k's إجابة. اعتمادًا على كيفية تسمية البرامج النصية الخاصة بك ، مثل تضمين رقم ، يمكن استخدام SQL Server PowerShell (SQLPS) إذا كنت تستخدم SQL Server 2008 أو إصدار أحدث. ثم حتى إذا كنت تستخدم SQL 2005 ، يمكنك استخدام PowerShell و SMO لعام 2005.

ملاحظة جانبية: أعتقد أن SQLCMD سيتم وضعه في نهاية المطاف على القائمة الموقوفة ويتم استبداله بـ SQLPS ، PowerShell.

هناك بعض الخيارات الأخرى أيضًا.

  1. قم بإعداد كل برنامج نصي كخطوة في مهمة عامل SQL. يمكنك تعيين الأمر الذي يتم تنفيذه.
  2. قم بإنشاء حزمة SSIS لاستدعاء كل ملف. يمكن أن يوفر ذلك المزيد من التحكم ويوفر خيارات تسجيل أكثر قليلاً. يعجبني هذا الأسلوب إذا كانت نتيجة أحد النصوص البرمجية بحاجة إلى التحقق قبل تنفيذ التالي.
2
user507