سؤال

لديّ عدد من ملفات .sql التي يجب علي تشغيلها من أجل تطبيق التغييرات التي أجراها مطورون آخرون على قاعدة بيانات SQL Server 2005. تم تسمية الملفات وفقًا للنمط التالي:

0001 - abc.sql
0002 - abcef.sql
0003 - abc.sql
...

هل هناك طريقة لتشغيل كل منهم دفعة واحدة؟

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

المحلول

إنشاء ملف .bat مع الأمر التالي:

for %%G in (*.sql) do sqlcmd /S servername /d databaseName -E -i"%%G"
pause

ضع ملف .bat هذا في الدليل الذي تريد من خلاله تنفيذ ملفات .sql ، انقر نقرًا مزدوجًا على ملف .bat وستنتهي!

نصائح أخرى

يستخدم إلى عن على. من موجه الأوامر:

c:\>for %f in (*.sql) do sqlcmd /S <servername> /d <dbname> /E /i "%f"
  1. في استوديو إدارة SQL ، افتح استعلامًا جديدًا واكتب جميع الملفات على النحو التالي

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    
  2. انتقل إلى قائمة الاستعلام في SQL Management Studio وتأكد من تمكين وضع SQLCMD
  3. انقر على وضع SQLCMD ؛ سيتم تحديد الملفات باللون الرمادي على النحو التالي

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    
  4. تنفذ الآن

تأكد من تمكين SQLCMD من خلال النقر على خيار وضع الاستعلام> SQLCMD في استوديو الإدارة.

  1. افترض أن لديك أربعة ملفات .SQL (script1.sql,script2.sql,script3.sql,script4.sql) في مجلد c:\scripts.

  2. قم بإنشاء ملف نصي رئيسي (Main.sql) مع ما يلي:

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    :r c:\Scripts\script4.sql
    

    حفظ main.sql في c: النصوص نفسها.

  3. قم بإنشاء ملف دفعة اسمه ExecuteScripts.bat كالآتي:

    SQLCMD -E -d<YourDatabaseName> -ic:\Scripts\Main.sql
    PAUSE
    

    تذكر أن تحل محل <YourDatabaseName> مع قاعدة البيانات التي تريد تنفيذ البرامج النصية الخاصة بك. على سبيل المثال ، إذا كانت قاعدة البيانات "موظف" ، فسيكون الأمر ما يلي:

    SQLCMD -E -dEmployee -ic:\Scripts\Main.sql
    PAUSE
    
  4. قم بتنفيذ ملف الدُفعات عن طريق النقر المزدوج.

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

Select scripts

عند تحديد البرامج النصية وقواعد البيانات ، سيتم عرضها في النافذة الرئيسية وكل ما عليك فعله هو النقر فوق الزر "تنفيذ" وسيتم تنفيذ جميع البرامج النصية على قواعد بيانات محددة بالترتيب المحدد:

Scripts execution

استفسار عام

احفظ الأسطر أدناه في المفكرة بالاسم دفعة وضع داخل المجلد حيث يوجد كل ملف البرنامج النصي الخاص بك

 for %%G in (*.sql) do sqlcmd /S servername /d databasename  -i"%%G"
    pause

مثال

لـ ٪٪ g في (*.sql) do sqlcmd /s NFGDDD23432emplyeedb -i "٪٪ G" توقف

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

for %%G in (*.sql) do sqlcmd /S SERVERNAME /d DBNAME -U USERNAME -P PASSWORD -i"%%G"
pause

لـ ٪٪ g في (*.sql) do sqlcmd /s NE8148Serveremplyeedb -u سكوت -P نمر -i "٪٪ G" توقف

بعد إنشاء ملف BAT داخل المجلد الذي توجد فيه ملفات البرنامج النصي ، فقط انقر على ملف BAT سيتم تنفيذ البرامج النصية الخاصة بك

كتبت فائدة مفتوحة المصدر في C# يتيح لك سحب العديد من ملفات SQL وإسقاطها والبدء في تشغيلها مقابل قاعدة بيانات.

تحتوي الأداة المساعدة على الميزات التالية:

  • سحب ملفات النص وإسقاطها
  • قم بتشغيل دليل ملفات النصوص
  • SQL Script Out وضع الرسائل أثناء التنفيذ
  • تم تمرير البرنامج النصي أو فشل اللون الأخضر والأحمر (الأصفر للركض)
  • توقف عن خيار الخطأ
  • افتح البرنامج النصي على خيار الخطأ
  • قم بتشغيل تقرير مع مرور الوقت لكل نص
  • إجمالي مدة المدة
  • اختبار اتصال DB
  • Asynchronus
  • .NET 4 واختباره مع SQL 2008
  • ملف exe واحد
  • اقتل الاتصال في أي وقت

ما أعرف أنه يمكنك استخدام أوامر OSQL أو SQLCMD لتنفيذ عدة ملفات SQL. العيب هو أنه سيتعين عليك إنشاء برنامج نصي لكلا الأوامر.

باستخدام SQLCMD لتنفيذ نصوص خادم SQL متعددة

OSQL (هذا ل SQL Server 2000)

http://msdn.microsoft.com/en-us/library/AA213087(V=SQL.80).aspx

@echo off
cd C:\Program Files (x86)\MySQL\MySQL Workbench 6.0 CE

for %%a in (D:\abc\*.sql) do (
echo %%a
mysql --host=ip --port=3306 --user=uid--password=ped < %%a
)

الخطوة 1: أسطر أعلاه نسخ إلى لوحة ملاحظة احفظها كخفافيش.

Step2: في D Drive ABC Folder في جميع ملفات SQL في الاستعلامات التي تم تنفيذها في SQL Server.

Step3: أعط IP ومعرف المستخدم وكلمة المرور.

يمكنك إنشاء برنامج نصي واحد يدعو جميع الآخرين.

ضع ما يلي في ملف دفعة:

@echo off
echo.>"%~dp0all.sql"
for %%i in ("%~dp0"*.sql) do echo @"%%~fi" >> "%~dp0all.sql"

عندما تقوم بتشغيل ملف الدُفعة هذا ، فإنه سيقوم بإنشاء برنامج نصي جديد يسمى all.sql في نفس الدليل حيث يوجد ملف الدُفعات. سوف يبحث عن جميع الملفات مع الامتداد .sql في نفس الدليل حيث يوجد ملف الدُفعات.

يمكنك بعد ذلك تشغيل جميع البرامج النصية باستخدام sqlplus user/pwd @all.sql (أو تمديد ملف الدُفعات للاتصال sqlplus بعد إنشاء all.sql النصي)

لتنفيذ كل sqlfile على نفس الدليل ، استخدم الأمر التالي:

ls | awk '{print "@"$0}' > all.sql

سيقوم هذا الأمر بإنشاء ملف SQL واحد مع أسماء كل ملف SQL في الدليل الذي تم إلحاقه بواسطة "@".

بعد all.sql يتم إنشاؤه ببساطة all.sql باستخدام SQLPlus ، سيقوم هذا بتنفيذ كل ملف SQL في all.sql.

إذا كنت تستطيع استخدام SQL التفاعلي:

1 - إنشاء ملف .bat مع هذا الرمز:

@ECHO OFF ECHO
for %%G in (*.sql) do dbisql -c "uid=dba;pwd=XXXXXXXX;ServerName=INSERT-DB-NAME-HERE" %%G
pause

2 - تغيير PWD و ServerName.

3 - ضع ملف .bat في المجلد الذي يحتوي على ملفات .SQL وقم بتشغيله.

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