استكشاف أخطاء عمليات نشر Azure SQL Edge وإصلاحها
توفر هذه المقالة معلومات حول الأخطاء المحتملة التي تظهر عند نشر حاويات Azure SQL Edge واستخدامها، وتوفر تقنيات استكشاف الأخطاء وإصلاحها للمساعدة في حل هذه المشكلات.
يدعم Azure SQL Edge نموذجين للنشر:
النشر المتصل من خلال Azure IoT Edge: يتوفر Azure SQL Edge على Azure Marketplace ويمكن نشره كوحدة نمطية ل Azure IoT Edge. لمزيد من المعلومات، راجع نشر Azure SQL Edge.
النشر غير المتصل: يمكن سحب صور حاوية Azure SQL Edge من مركز عامل الرصيف ونشرها إما كحاوية رصيف مستقلة أو على مجموعة kubernetes. لمزيد من المعلومات، راجع نشر Azure SQL Edge مع Dockerونشر حاوية Azure SQL Edge في Kubernetes.
استكشاف أخطاء جهاز IoT Edge وعمليات النشر وإصلاحها
إذا تلقيت خطأ أثناء نشر SQL Edge من خلال Azure IoT Edge، فتأكد من iotedge تكوين الخدمة وتشغيلها بشكل صحيح. يمكن أن تكون المستندات التالية مفيدة عند استكشاف الأخطاء وإصلاحها المتعلقة ب Azure IoT Edge:
أخطاء أوامر الإيداع
إذا ظهرت لك أخطاء في أي docker أوامر، فتأكد من تشغيل خدمة عامل الرصيف وحاول التشغيل باستخدام أذونات مرتفعة.
على سبيل المثال، على Linux، قد تحصل على الخطأ التالي عند تشغيل docker الأوامر:
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
إذا تلقيت هذا الخطأ على Linux ، فحاول تشغيل نفس الأوامر المسبقة ب sudo. في حالة فشل ذلك، تحقق من تشغيل خدمة عامل الرصيف وابدأ تشغيله إذا لزم الأمر.
sudo systemctl status docker
sudo systemctl start docker
على Windows، تحقق من تشغيل PowerShell أو موجه الأوامر كمسؤول.
أخطاء بدء تشغيل حاوية Azure SQL Edge
إذا فشل تشغيل حاوية SQL Edge جرب الاختبارات التالية:
إذا كنت تستخدم Azure IoT Edge، فتأكد من تنزيل صور الوحدة النمطية بنجاح وتحديد متغيرات البيئة وخيارات إنشاء الحاوية بشكل صحيح في بيان الوحدة النمطية.
إذا كنت تستخدم النشر المستند إلى docker أو kubernetes ، فتأكد من
docker runتكوين الأمر بشكل صحيح. لمزيد من المعلومات، راجع نشر Azure SQL Edge باستخدام Dockerونشر حاوية Azure SQL Edge في Kubernetes.إذا تلقيت خطأ مثل
failed to create endpoint CONTAINER_NAME on network bridge. Error starting proxy: listen tcp 0.0.0.0:1433 bind: address already in use.، فأنت تحاول تعيين منفذ الحاوية 1433 إلى منفذ قيد الاستخدام بالفعل. يمكن أن يحدث هذا إذا كنت تقوم بتشغيل SQL Edge محليا على الجهاز المضيف. يمكن أن يحدث أيضا إذا قمت بتشغيل حاويتين SQL Edge وحاولت تعيينهما إلى نفس المنفذ المضيف. في حالة حدوث ذلك، استخدم المعلمة لتعيين منفذ الحاوية-p1433 إلى منفذ مضيف مختلف. على سبيل المثال:sudo docker run --cap-add SYS_PTRACE -e 'ACCEPT_EULA=1' -e 'MSSQL_SA_PASSWORD=yourStrong(!)Password' -p 1433:1433 --name azuresqledge -d mcr.microsoft.com/azure-sql-edge-developer.إذا تلقيت خطأ مثل
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.30tdout=1&tail=all: dial unix /var/run/docker.sock: connect: permission deniedعند محاولة بدء تشغيل حاوية ، فأضف المستخدم إلى مجموعة docker في Ubuntu. ثم قم بتسجيل الخروج وتسجيل الدخول مرة أخرى لأن هذا التغيير سيؤثر على الجلسات الجديدة.usermod -aG docker $USERتحقق لمعرفة ما إذا كانت هناك أي رسائل خطأ من الحاوية.
docker logs e69e056c702dإذا كنت تستخدم أي برنامج لإدارة الحاويات، فتأكد من أنه يدعم عمليات الحاويات التي تعمل كجذر. يتم تشغيل عملية sqlservr في الحاوية كجذر.
بشكل افتراضي ، يتم تشغيل حاويات Azure SQL Edge كمستخدم غير جذر باسم
mssql. إذا كنت تستخدم نقاط تحميل أو وحدات تخزين بيانات لاستمرار البيانات، فتأكد من أن المستخدم لديه الأذوناتmssqlالمناسبة على وحدة التخزين. لمزيد من المعلومات، راجع تشغيل كمستخدم غير جذرواستمرار البيانات.إذا خرجت حاوية SQL Edge Docker مباشرة بعد بدء التشغيل، فتحقق من سجلات عامل الإرساء. إذا كنت تستخدم PowerShell على Windows مع
docker runالأمر، فاستخدم علامات اقتباس مزدوجة بدلا من علامات اقتباس مفردة. مع PowerShell Core ، استخدم علامات اقتباس واحدة.راجع سجلات أخطاء SQL Edge.
فشل اتصال SQL Edge
إذا لم تتمكن من الاتصال بمثيل SQL Edge قيد التشغيل في الحاوية الخاصة بك، فجرب الاختبارات التالية:
تأكد من تشغيل حاوية SQL Edge من خلال النظر إلى عمود STATUS في الإخراج
docker ps -a. إذا لم يكن الأمر كذلك ، فاستخدمهdocker start <Container ID>لبدء تشغيله.إذا قمت بالتعيين إلى منفذ مضيف غير افتراضي (وليس 1433)، فتأكد من تحديد المنفذ في سلسلة الاتصال. يمكنك رؤية تعيين المنفذ في عمود PORTS من الإخراج
docker ps -a. لمزيد من المعلومات حول الاتصال ب Azure SQL Edge، راجع الاتصال Azure SQL Edge والاستعلام عنهإذا كنت قد قمت مسبقا بنشر SQL Edge مع وحدة تخزين بيانات معينة أو حاوية حجم بيانات، وتستخدم الآن وحدة تخزين البيانات المعينة الموجودة أو حاوية وحدة تخزين البيانات، SQL Edge يتجاهل قيمة
MSSQL_SA_PASSWORDمتغير البيئة. بدلا من ذلك، يتم استخدام كلمة مرور مستخدم SA التي تم تكوينها مسبقا. يحدث هذا لأن SQL Edge يعيد استخدام ملفات قواعد البيانات الرئيسية الموجودة في وحدة التخزين المعينة أو حاوية وحدة تخزين البيانات. إذا واجهت هذه المشكلة، يمكنك استخدام الخيارات التالية:- الاتصال باستخدام كلمة المرور المستخدمة سابقا، إذا كانت لا تزال متاحة.
- قم بتكوين SQL Edge لاستخدام وحدة تخزين أو حاوية حجم بيانات معينة مختلفة.
- قم بإزالة ملفات قاعدة البيانات الرئيسية الموجودة (الرئيسية.mdf و mastlog.mdf) من وحدة التخزين أو حاوية وحدة تخزين البيانات المعينة.
راجع سجلات أخطاء SQL Edge.
إعداد SQL Edge وسجلات الأخطاء
بشكل افتراضي، توجد سجلات أخطاء SQL Edge في الدليل /var/opt/mssql/log داخل الحاوية ويمكن الوصول إليها باستخدام أي من الطرق التالية:
إذا قمت بتحميل دليل مضيف إلى / var/opt/mssql عند إنشاء الحاوية الخاصة بك، يمكنك بدلا من ذلك البحث في الدليل الفرعي للسجل على المسار المعين على المضيف.
باستخدام موجه أوامر تفاعلي للاتصال بالحاوية. إذا لم تكن الحاوية قيد التشغيل، فقم أولا بتشغيل الحاوية. ثم استخدم موجه أوامر تفاعلي لفحص السجلات. يمكنك الحصول على معرف الحاوية عن طريق تشغيل الأمر
docker ps.docker start <ContainerID> docker exec -it <ContainerID> "/bin/bash"من جلسة bash داخل الحاوية الخاصة بك، قم بتشغيل الأوامر التالية:
cd /var/opt/mssql/log cat errorlogإذا كانت حاوية SQL Edge قيد التشغيل وتمكنت من الاتصال بالمثيل باستخدام أدوات العميل، فيمكنك استخدام الإجراء
sp_readerrorlogالمخزن لقراءة محتويات سجل أخطاء SQL Edge.
تنفيذ الأوامر في حاوية
إذا كان لديك حاوية قيد التشغيل، فيمكنك تنفيذ الأوامر داخل الحاوية من محطة طرفية مضيفة.
لتشغيل معرف الحاوية:
docker ps -a
لبدء تشغيل محطة bash الطرفية في تشغيل الحاوية:
docker exec -it <Container ID> /bin/bash
يمكنك الآن تشغيل الأوامر كما لو كنت تقوم بتشغيلها في المحطة الطرفية داخل الحاوية. عند الانتهاء، اكتب exit. يتم إنهاء هذا في جلسة عمل الأوامر التفاعلية، ولكن يستمر تشغيل الحاوية الخاصة بك.
تمكين التسجيل المطول
إذا كان مستوى السجل الافتراضي لمحرك البث لا يوفر معلومات كافية، فيمكن تمكين تسجيل الأخطاء لمحرك الدفق في SQL Edge. لتمكين تسجيل تصحيح الأخطاء، RuntimeLogLevel=debug أضف متغير البيئة إلى نشر SQL Edge. بعد تمكين تسجيل التصحيح ، حاول إعادة إنشاء المشكلة والتحقق من السجلات بحثا عن أي رسائل أو استثناءات ذات صلة.
ملاحظة
يجب استخدام خيار التسجيل المطول فقط لاستكشاف الأخطاء وإصلاحها وليس لعبء عمل الإنتاج العادي.