تدريب - الاتصال بقاعدة بياناتك وإضافة البيانات النموذجية

مكتمل

قبل توصيل قاعدة البيانات بتطبيقك، تريد التحقق من أنه يمكنك الاتصال بها، وإضافة جدول أساسي، والعمل مع نموذج البيانات.

نقوم بصيانة على البنية الأساسية وتحديثات البرامج وتصحيحات قاعدة بيانات AZURE SQL. يمكنك التعامل مع قاعدة بيانات Azure SQL كما تفعل مع أي تثبيت SQL Server آخر. على سبيل المثال، يمكنك استخدام Visual Studio أو SQL Server أو Management Studio أو Azure Data Studio، أو أدوات أخرى لإدارة قاعدة بيانات SQL Azure.

إن كيفية وصولك إلى قاعدة البيانات وتوصيلها بتطبيقك مسألة متروكة لك أمرها. للحصول على بعض الخبرة في العمل مع قاعدة البيانات الخاصة بك، دعنا نتصل بها مباشرة من المدخل، وننشئ جدولا، ونشغل بعض عمليات CRUD الأساسية. هنا، ستتعلم:

  • ماهية مجموعة Cloud Shell وكيفية الوصول إليها من البوابة.
  • كيفية الوصول إلى معلومات بشأن قاعدة البيانات من CLI Azure، بما في ذلك سلاسل الاتصال.
  • كيفية الاتصال بقاعدة البيانات باستخدام sqlcmd.
  • كيفية تهيئة قاعدة بياناتك مع جدول أساسي وبعض البيانات النموذجية.

ما هو Azure Cloud Shell؟

Azure Cloud Shell هي تجربة shell قائمة على المستعرض لإدارة موارد Azure وتطويرها. فكّر في Cloud Shell كوحدة تحكم تفاعلية تعمل في السحابة.

وراء الكواليس، تعمل Cloud Shell على نظام Linux. ولكن، اعتمادا على ما إذا كنت تفضل بيئة Linux أو Windows، لديك تجربتان للاختيار من بينها: Bash وPowerShell.

يمكن الوصول إلى Cloud Shell من أي مكان. بالإضافة إلى المدخل، يمكنك أيضا الوصول إلى Cloud Shell من shell.azure.com أو تطبيق Azure للأجهزة المحمولة أو من Visual Studio Code.

تشمل Cloud Shell أدوات ومحرري نصوص مُتَداوَلة. فيما يلي نظرة موجزة على azو jqوالأدوات sqlcmd المساعدة، وهي ثلاث أدوات تستخدمها في هذا التمرين.

  • az يعرف أيضا باسم Azure CLI. إنها واجهة سطر الأوامر للعمل مع موارد Azure. يمكنك استخدام هذه الواجهة للحصول على معلومات حول قاعدة البيانات الخاصة بك، بما في ذلك سلسلة الاتصال.
  • jq هو محلل JSON سطر الأوامر. يمكنك توجيه الإخراج من az الأوامر إلى هذه الأداة لاستخراج الحقول الهامة من إخراج JSON.
  • sqlcmd يمكنك من تنفيذ عبارات على SQL Server. يمكنك استخدام sqlcmd لإنشاء جلسة عمل تفاعلية مع قاعدة بيانات Azure SQL.

الحصول على معلومات عن قاعدة بيانات AZURE SQL

قبل الاتصال بقاعدة البيانات، من المستحسن التحقق من وجودها واتصالها بالإنترنت.

هنا، يمكنك استخدام الأداة المساعدة az لاستعراض قواعد البيانات التي تخصك وإظهار بعض المعلومات عن قاعدة البيانات اللوجستية، بما في ذلك الحد الأقصى لحجمها وحالتها.

  1. az تتطلب الأوامر التي تقوم بتشغيلها اسم مجموعة الموارد واسم خادم Azure SQL المنطقي. لحفظ ضغطات المفاتيح، قم بتشغيل هذا azure configure الأمر لتحديدها كقيم افتراضية.

    استبدل [server-name] باسم خادم Azure SQL المنطقي الذي قمت بإنشائه ومع [resource-group] مجموعة الموارد التي استخدمتها للخادم الخاص بك.

    az configure --defaults group=[resource-group] sql-server=[server-name]
    

    إشعار

    وفق الجزء الذي وقفت عنده في المدخل، قد يُعرَض اسم خادم قاعدة بيانات SQL في صورة (FQDN) (مثل servername.database.windows.net). ومع ذلك، لهذا الأمر لا تحتاج سوى الاسم المنطقي دون لاحقة .database.windows.net.

  2. قم بتشغيل الأمر التالي az sql db list لسرد جميع قواعد البيانات على خادم Azure SQL المنطقي:

    az sql db list
    

    يمكنك الحصول على كتلة كبيرة من JSON كإخراج.

  3. لأننا نريد الحصول على أسماء قاعدة البيانات فقط، قم بتشغيل الأمر مرة ثانية. ولكن هذه المرة، قم بتوجيه الإخراج إلى jq لعرض حقول الاسم فقط.

    az sql db list | jq '[.[] | {name: .name}]'
    

    يجب أن تحصل على هذا الإخراج:

    [
      {
        "name": "Logistics"
      },
      {
        "name": "master"
      }
    ]
    

    Logistics هي قاعدة البيانات الخاصة بك. مثل SQL Server، master تتضمن قاعدة بيانات النظام بيانات تعريف الخادم، مثل تسجيلات الدخول وإعدادات تكوين النظام.

  4. قم بتشغيل الأمر التالي az sql db show للحصول على تفاصيل حول Logistics قاعدة البيانات:

    az sql db show --name Logistics
    

    كما كان من قبل، ترى كتلة كبيرة من JSON كإخراج.

  5. شغّل الأمر مرة ثانية. هذه المرة توجيه الإخراج إلى jq للحد من الإخراج إلى الاسم والحد الأقصى للحجم وحالة قاعدة البيانات اللوجستية فقط.

    az sql db show --name Logistics | jq '{name: .name, maxSizeBytes: .maxSizeBytes, status: .status}'
    

    ترى أن قاعدة البيانات كائنة عبر الإنترنت والحد الأقصى لكمية البيانات التي يمكن لقاعدة البيانات تخزينها.

    {
      "name": "Logistics",
      "maxSizeBytes": 2147483648,
      "status": "Online"
    }
    

الاتصال بقاعدة بياناتك

الآن بعد أن فهمت قليلا عن قاعدة البيانات الخاصة بك، دعنا نتصل بها باستخدام sqlcmd، وأنشئ جدولا يحتوي على معلومات حول سائقي النقل، ونفذ بعض عمليات CRUD الأساسية.

تذكر أن CRUD يرمز إلى إنشاء وقراءة وتحديث وحذف. تشير هذه المصطلحات إلى العمليات التي تقوم بتنفيذها على البيانات الواردة في الجدول، وهي العمليات الأربع الأساسية التي تحتاجها لتطبيقك. الآن هو الوقت المناسب للتحقق من إمكانية تنفيذ كلٍّ منها.

  1. قم بتشغيل الأمر التالي az sql db show-connection-string للحصول على سلسلة الاتصال إلى Logistics قاعدة البيانات بتنسيق يمكن استخدامهsqlcmd:

    az sql db show-connection-string --client sqlcmd --name Logistics
    

    يشبه الإخراج المثال التالي. انسخ هذا الإخراج للاستخدام في الخطوة التالية.

    "sqlcmd -S tcp:<server-name>.database.windows.net,1433 -d Logistics -U <username> -P <password> -N -l 30"
    
  2. قم بتشغيل العبارة sqlcmd من إخراج الخطوة السابقة لإنشاء جلسة عمل تفاعلية. قم بإزالة علامات الاقتباس المحيطة واستبدل <username> و <password> باسم المستخدم وكلمة المرور التي حددتها عند إنشاء قاعدة البيانات الخاصة بك. إليك مثال:

    sqlcmd -S tcp:<server-name>.database.windows.net,1433 -d Logistics -U martina -P 'password1234$' -N -l 30
    

    تلميح

    ضع كلمة المرور في علامات اقتباس مفردة بحيث لا يتم تفسير "&" والأحرف الخاصة الأخرى على أنها إرشادات معالجة.

    هام

    قد ترى رسالة خطأ مشابهة للمثال التالي:

    Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server:
    Cannot open server 'contoso' requested by the login.
    Client with IP address 'nnn.nnn.nnn.nnn' is not allowed to access the server.
    To enable access, use the Windows Azure Management Portal or run sp_set_firewall_rule
    on the master database to create a firewall rule for this IP address or address range.
    It may take up to five minutes for this change to take effect.
    

    إذا حدث هذا الخطأ، فستحتاج إلى إضافة قاعدة جدار حماية أخرى للعميل. للقيام بذلك، نفذ الخطوات التالية:

    • قم بتسجيل الدخول إلى مدخل Azure.

    • من صفحة «Home» لـ Azure، ضمنAzure services، حدد All resources. يظهر الجزء All resources.

    • ابحث عن قاعدة البيانات وحددها. يعرض لك جزء «Logistics» قاعدة بيانات SQL.

    • من شريط القوائم العلوي، حدد Set server firewall. يظهر جزء "Networking".

    • في قسم Firewall rules ، حدد Add a firewall rule. يظهر جزء Add a firewall rule.

    • حدد اسم قاعدة فريدا، ثم أدخل عنوان IP الخاص بك من رسالة الخطأ لكل من حقلي Start IP وEnd IP. حدد موافق.

    • حدد حفظ.

    • قم بتشغيل العبارة sqlcmd مرة أخرى لبدء جلسة العمل التفاعلية sqlcmd . يجب أن يبدو شيئا مثل المثال التالي:

    sqlcmd -S tcp:<server-name>.database.windows.net,1433 -d Logistics -U martina -P 'password1234$' -N -l 30
    

    الآن بعد أن قمت بتشغيل جلسة العمل الخاصة بك sqlcmd ، تستخدم الأوامر المتبقية اللغة Transact-SQL أو T-SQL.

    تلميح

    عند تشغيل أوامر T-SQL في هذه الوحدة النمطية، GO قد لا يتم نسخ على السطر الثاني إلى المطالبة sqlcmd . بعد إدخال السطر الأول من الأمر، قد تحتاج إلى كتابة GO الأمر . لن يتم تنفيذ أمر T-SQL بدونه، لذا تأكد من تشغيل الأمر GO.

  3. من جلسة العمل الخاصة بك sqlcmd ، قم بتشغيل عبارات T-SQL التالية لإنشاء جدول يسمى Drivers:

    CREATE TABLE Drivers (DriverID int, LastName varchar(255), FirstName varchar(255), OriginCity varchar(255));
    GO
    

    يحتوي الجدول على أربعة أعمدة؛ مُعرِّف فريد، والاسم الأول للسائق، واسمه الأخير، ومدينة منشأ السائق.

  4. قم بتشغيل عبارات T-SQL التالية للتحقق من Drivers وجود الجدول:

    SELECT name FROM sys.tables;
    GO
    

    يجب أن تحصل على هذا الإخراج:

    name
    --------------------------------------------------------------------------------------------------------------------------------
    Drivers
    
    (1 rows affected)
    
  5. لاختبار عملية الإنشاء ، قم بتشغيل عبارات T-SQL التالية لإضافة صف عينة إلى الجدول:

    INSERT INTO Drivers (DriverID, LastName, FirstName, OriginCity) VALUES (123, 'Zirne', 'Laura', 'Springfield');
    GO
    

    يشير هذا الإخراج إلى نجاح العملية:

    (1 rows affected)
    
  6. لاختبار عملية القراءة ، قم بتشغيل عبارات T-SQL التالية لسرد DriverID الأعمدة و OriginCity من جميع الصفوف في الجدول:

    SELECT DriverID, OriginCity FROM Drivers;
    GO
    

    يمكنك الحصول على نتيجة واحدة مع DriverID و OriginCity للصف الذي قمت بإنشائه في الخطوة السابقة.

    DriverID    OriginCity
    ----------- --------------------------
            123 Springfield
    
    (1 rows affected)
    
  7. لاختبار عملية التحديث ، قم بتشغيل عبارات T-SQL التالية لتغيير مدينة الأصل من "Springfield" إلى "بوسطن" للسائق مع DriverID 123:

    UPDATE Drivers SET OriginCity='Boston' WHERE DriverID=123;
    GO
    
  8. قم بتشغيل عبارات T-SQL التالية لسرد DriverID العمودين و OriginCity مرة أخرى:

    SELECT DriverID, OriginCity FROM Drivers;
    GO
    

    يجب أن تحصل الآن على الإخراج التالي. لاحظ كيف OriginCity يعكس التحديث إلى بوسطن.

    DriverID    OriginCity
    ----------- --------------------------
            123 Boston
    
    (1 rows affected)
    
  9. وأخيرا، اختبر عملية الحذف عن طريق تشغيل عبارات T-SQL التالية لحذف السجل:

    DELETE FROM Drivers WHERE DriverID=123;
    GO
    
    (1 rows affected)
    
  10. قم بتشغيل عبارات T-SQL التالية للتحقق من أن Drivers الجدول فارغ:

    SELECT COUNT(*) FROM Drivers;
    GO
    

    ترى أن الجدول لا يحتوي على صفوف.

    -----------
              0
    
    (1 rows affected)
    

الآن بعد أن أصبحت لديك فكرة عامة للعمل مع قاعدة بيانات Azure SQL من Cloud Shell، يمكنك الحصول على سلسلة الاتصال لأداة إدارة SQL المفضلة لديك، سواء كان ذلك من SQL Server Management Studio أو Visual Studio أو أي شيء آخر.

تُسهِّل Cloud Shell الوصول إلى موارد Azure والتعامل معها. نظرا لأن Cloud Shell مستند إلى المستعرض، يمكنك الوصول إليه من Windows أو macOS أو Linux؛ أساسا أي نظام مع متصفح ويب.

لقد اكتسبت بعض الخبرة العملية في تشغيل أوامر Azure CLI للحصول على معلومات بشأن قاعدة بيانات AZURE SQL. كمكافأة لك، كنت تمارس المهارات الخاصة بك T-SQL.

في الوحدة التالية، نختتم هذه الوحدة النمطية ونصف كيفية هدم قاعدة البيانات الخاصة بك.