نص باورشيل لـ MSSQL
يمكن استخدام هذا النص لاستيراد ملفات SQL تزيد أعمارها عن 20 دقيقة تلقائيًا إلى قاعدة بيانات MSSQL. وهو مفيد إذا قمت بتمكين تسجيل نص SQL للتكوينات عالية الأداء. لتنفيذ هذا النص، يجب عليك حفظه بامتداد .ps1، وتمكين تنفيذ نصوص باورشيل لنظام ويندوز في محرر سياسة المجموعة (أو يجب تنفيذ النص كمسؤول).
قم بإنشاء جدول MSSQL التالي
CREATE TABLE messagereport ( logid int IDENTITY(1,1), messageid varchar(64), fromconnection varchar(64), fromaddress varchar(64), requestedconnection varchar(64), toconnection varchar(64), toaddress varchar(64), messagetext varchar(1024), route varchar(64), datecreated datetime, datedeliverytoconnectionsuccess datetime, datedeliverytoconnectionfailed datetime, deliverytoconnectionreference varchar(256), deliverytoconnectionstatusmessage varchar(1024), datedeliverytorecipientsuccess datetime, datedeliverytorecipientfailed datetime, deliverytorecipientstatusmessage varchar(1024), status varchar(64) )
الخطوة الأولى هي إنشاء جدول messagereport في قاعدة البيانات. سيتم تخزين جميع الرسائل الصادرة والواردة في هذا الجدول وتحديثها وفقًا لحالتها. إذا كنت قد قمت بإنشاء هذا الجدول بالفعل، يمكنك تخطي هذه الخطوة. انسخ نص إنشاء الجدول أعلاه وقم بتنفيذه في قاعدة البيانات الخاصة بك كما تراه في الشكل 1.
احفظ نص باورشيل التالي كـ "dbimport.ps1"
الخطوة التالية هي إنشاء ملف "dbimport.ps1" في مجلد C:\Ozeki كما هو موضح في الشكل 2. سيحتوي هذا الملف على النص الذي يقوم بتشغيل استعلامات SQL في قاعدة البيانات بشكل دوري.
$ProcessedDir = "C:\Ozeki\Processed" New-Item -ItemType Directory -Force -Path $ProcessedDir #حلقة لا نهائية while (1) { #سرد الملفات الأقدم من 20 دقيقة #تأكد من أن الوقت أكبر من الفترة التي استخدمتها في تكوين الإبلاغ Get-ChildItem "C:\Ozeki\Reporting_SQL" -Filter *.sql | Where{$_.LastWriteTime -le (Get-Date).AddMinutes(-20)} | Foreach-Object { #تحميل محتويات الملف إلى قاعدة بيانات MSSQL Write-Output $_.FullName $Text = Get-Content -Path $_.FullName Invoke-Sqlcmd -ServerInstance MyComputer\MainInstance -Database MyDatabase -Query "$Text" -Username "MyUser" -Password "MyPass" #نقل الملف المعالج إلى مجلد المعالجة Move-Item -Path $_.FullName -Destination $ProcessedDir } #انتظر لمدة 5 ثوانٍ Start-Sleep -s 5 }
انسخ نص باورشيل أعلاه والصقه في ملف "dbimport.ps1" كما تراه في الشكل 3.
أخيرًا، قم بتعديل النص وفقًا لقاعدة بيانات MSSQL الخاصة بك. في مثيل الخادم، حدد اسم الكمبيوتر واسم المثيل لقاعدة بيانات MSSQL. أدخل اسم المستخدم وكلمة المرور التي تريد استخدامها، واستبدل "Mydatabase" باسم قاعدة البيانات الخاصة بك (الشكل 4).
نفذ النص كمسؤول
powershell -ExecutionPolicy Bypass -File dbimport.ps1
الآن قم بتنفيذ النص في باورشيل عن طريق تشغيل الأمر أعلاه كما تراه في الشكل 5.
يمكنك أن ترى أن النص ينفذ جميع ملفات SQL الأقدم من 20 دقيقة في مجلد 'C:\Ozeki\Reporting_SQL' واحدًا تلو الآخر (الشكل 6).
يتم نقل كل ملف SQL قام النص بتشغيله إلى مجلد Processed حتى لا تضيع أي استعلامات (الشكل 7). من هنا، يمكنك حذفها يدويًا إذا لم تعد بحاجة إليها.
أخيرًا، إذا نظرت في قاعدة البيانات، يمكنك أن ترى أنه تم إدراج جميع الرسائل في جدول messsagereport كما يظهر الشكل 8.
More information