قم بتشغيل جميع ملفات SQL في دليل
-
24-09-2019 - |
سؤال
لديّ عدد من ملفات .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"
في استوديو إدارة SQL ، افتح استعلامًا جديدًا واكتب جميع الملفات على النحو التالي
:r c:\Scripts\script1.sql :r c:\Scripts\script2.sql :r c:\Scripts\script3.sql
- انتقل إلى قائمة الاستعلام في SQL Management Studio وتأكد من تمكين وضع SQLCMD
انقر على وضع SQLCMD ؛ سيتم تحديد الملفات باللون الرمادي على النحو التالي
:r c:\Scripts\script1.sql :r c:\Scripts\script2.sql :r c:\Scripts\script3.sql
- تنفذ الآن
تأكد من تمكين SQLCMD من خلال النقر على خيار وضع الاستعلام> SQLCMD في استوديو الإدارة.
افترض أن لديك أربعة ملفات .SQL (
script1.sql,script2.sql,script3.sql,script4.sql
) في مجلدc:\scripts
.قم بإنشاء ملف نصي رئيسي (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: النصوص نفسها.
قم بإنشاء ملف دفعة اسمه
ExecuteScripts.bat
كالآتي:SQLCMD -E -d<YourDatabaseName> -ic:\Scripts\Main.sql PAUSE
تذكر أن تحل محل
<YourDatabaseName>
مع قاعدة البيانات التي تريد تنفيذ البرامج النصية الخاصة بك. على سبيل المثال ، إذا كانت قاعدة البيانات "موظف" ، فسيكون الأمر ما يلي:SQLCMD -E -dEmployee -ic:\Scripts\Main.sql PAUSE
قم بتنفيذ ملف الدُفعات عن طريق النقر المزدوج.
يمكنك استخدام Apexsql نشر. إنها أداة مجانية تنفذ نصوص متعددة على قواعد بيانات متعددة. يمكنك تحديد أكبر عدد من البرامج النصية التي تحتاجها وتنفيذها مقابل قواعد بيانات واحدة أو متعددة (حتى خوادم متعددة). يمكنك إنشاء قائمة برامج نصية وحفظها ، ثم فقط حدد تلك القائمة في كل مرة تريد تنفيذ هذه البرامج النصية نفسها بالترتيب الذي تم إنشاؤه (يمكن إضافة قوائم نصية متعددة أيضًا):
عند تحديد البرامج النصية وقواعد البيانات ، سيتم عرضها في النافذة الرئيسية وكل ما عليك فعله هو النقر فوق الزر "تنفيذ" وسيتم تنفيذ جميع البرامج النصية على قواعد بيانات محددة بالترتيب المحدد:
استفسار عام
احفظ الأسطر أدناه في المفكرة بالاسم دفعة وضع داخل المجلد حيث يوجد كل ملف البرنامج النصي الخاص بك
for %%G in (*.sql) do sqlcmd /S servername /d databasename -i"%%G"
pause
مثال
لـ ٪٪ g في (*.sql) do sqlcmd /s NFGDDD23432 /د emplyeedb -i "٪٪ G" توقف
في وقت ما إذا فشل تسجيل الدخول بالنسبة لك ، يرجى استخدام الرمز أدناه مع اسم االمستخدم و كلمه السر
for %%G in (*.sql) do sqlcmd /S SERVERNAME /d DBNAME -U USERNAME -P PASSWORD -i"%%G"
pause
لـ ٪٪ g في (*.sql) do sqlcmd /s NE8148Server /د emplyeedb -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 وقم بتشغيله.