الاختلافات في T-SQL بين SQL Server وقاعدة بيانات Azure SQL

عند ترحيل قاعدة البيانات من SQL Server إلى قاعدة بيانات Azure SQL، قد تكتشف أن قواعد بيانات SQL Server تتطلب بعض إعادة الهندسة قبل أن يتم ترحيلها. توفر هذه المقالة إرشادات لمساعدتك في كل من إجراء إعادة الهندسة وفهم الأسباب الكامنة وراء ضرورة إعادة الهندسة. لاكتشاف حالات عدم التوافق وترحيل قواعد البيانات إلى قاعدة بيانات Azure SQL، استخدم مساعد ترحيل البيانات (DMA) .

نظرة عامة

يتم دعم معظم ميزات T-SQL التي تستخدمها التطبيقات بشكل كامل في كل من Microsoft SQL Server وقاعدة بيانات Azure SQL. على سبيل المثال، تعمل مكونات SQL الأساسية مثل أنواع البيانات والمشغلين والسلسلة والوظائف الحسابية والمنطقية والمؤشر بشكل متماثل في SQL Server و SQL Database. ومع ذلك، هناك بعض الاختلافات في T-SQL في عناصر DDL (لغة تعريف البيانات) وعناصر DML (لغة معالجة البيانات) مما يؤدي إلى عبارات T-SQL والاستعلامات المدعومة جزئيًا فقط (والتي نناقشها لاحقًا في هذه المقالة).

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

على سبيل المثال، الإتاحة العالية مضمنة في قاعدة بيانات Azure SQL. لا تدعم قاعدة بيانات SQL عبارات T-SQL المتعلقة بمجموعات التوفر، كما أن طرق عرض الإدارة الديناميكية المرتبطة بمجموعات التوفر دائمًا غير مدعومة.

للحصول على قائمة بالميزات المدعومة وغير المدعومة بواسطة قاعدة بيانات SQL، راجع مقارنة ميزات قاعدة بيانات Azure SQL . تكمل هذه الصفحة هذه المقالة، وتركز على عبارات T-SQL.

عبارات بناء جملة T-SQL مع اختلافات جزئية

تتوفر عبارات DDL الأساسية، لكن امتدادات عبارة DDL المتعلقة بالميزات غير المدعومة، مثل وضع الملف على القرص، غير مدعومة.

  • في SQL Server، تحتوي عبارات CREATE DATABASE و ALTER DATABASE على أكثر من ثلاثين خيارًا. تتضمن العبارات خيارات وضع الملف و FILESTREAM ووسيط الخدمة التي تنطبق فقط على SQL Server. قد لا يكون هذا مهمًا إذا أنشأت قواعد بيانات في قاعدة بيانات SQL قبل الترحيل، ولكن إذا كنت تقوم بترحيل رمز T-SQL الذي ينشئ قواعد بيانات، فيجب مقارنة إنشاء قاعدة بيانات (قاعدة بيانات Azure SQL) ببنية SQL Server في إنشاء قاعدة بيانات (SQL Server T-SQL) للتأكد من أن جميع الخيارات التي تستخدمها مدعومة. يحتوي CREATE DATABASE لقاعدة بيانات Azure SQL أيضًا على هدف الخدمة وخيارات التجمع المرن التي تنطبق فقط على قاعدة بيانات SQL.
  • تحتوي عبارات CREATE TABLE و ALTER TABLE على خيارات FILETABLE و FILESTREAM لا يمكن استخدامها في قاعدة بيانات SQL لأن هذه الميزات غير مدعومة.
  • يتم دعم عبارات CREATE LOGIN و ALTER LOGIN، ولكن لا تقدم جميع الخيارات المتاحة في SQL Server. لجعل قاعدة البيانات الخاصة بك أكثر قابلية للنقل، تشجع قاعدة بيانات SQL استخدام مستخدمي قاعدة البيانات المضمنة بدلاً من عمليات تسجيل الدخول كلما أمكن ذلك. لمزيد من المعلومات، راجع إنشاء تسجيل الدخول و تغيير تسجيل الدخول و إدارة عمليات تسجيل الدخول والمستخدمين .

بناء جملة T-SQL غير مدعوم في قاعدة بيانات Azure SQL

بالإضافة إلى عبارات T-SQL ذات الصلة بالميزات غير المدعومة الموضحة في مقارنة ميزات قاعدة بيانات Azure SQL ، لا يتم دعم العبارات ومجموعات العبارات التالية. على هذا النحو، إذا كانت قاعدة البيانات المراد ترحيلها تستخدم أيًا من الميزات التالية، فأعد هندسة تطبيقك للتخلص من ميزات وعبارات T-SQL هذه.

  • ترتيب عناصر النظام.
  • ذات صلة بالاتصال: بيانات نقطة النهاية. لا تدعم قاعدة بيانات SQL مصادقة Windows، لكنها تدعم مصادقة Azure Active Directory. يتضمن ذلك مصادقة أساسيات Active Directory المتحد مع Azure Active Directory. لمزيد من المعلومات، راجع الاتصال بقاعدة بيانات SQL أو تحليلات Azure Azure Synapse باستخدام مصادقة Azure Active Directory .
  • استعلامات عبر قاعدة البيانات والمثيلات المشتركة باستخدام ثلاثة أو أربعة أسماء أجزاء. يتم دعم ثلاثة أسماء أجزاء تشير إلى قاعدة بيانات tempdb وقاعدة البيانات الحالية. استعلام مرن يدعم مراجع القراءة فقط للجداول في قواعد بيانات MSSQL الأخرى.
  • عبر تسلسل ملكية قاعدة البيانات وخاصية قاعدة البيانات TRUSTWORTHY.
  • EXECUTE AS LOGIN. استخدم EXECUTE AS USER بدلاً من ذلك.
  • إدارة المفاتيح القابلة للتوسيع (EKM) لمفاتيح التشفير. تشفير البيانات الخفية (TDE) يمكن تخزين المفاتيح المُدارة بواسطة العميل و مفاتيح العمود الرئيسية المشفرة دائمًا في Azure Key Vault.
  • حدث: إخطارات الحدث، إخطارات الاستعلام.
  • خصائص الملف: بناء الجملة المتعلق باسم ملف قاعدة البيانات والموضع والحجم وخصائص الملف الأخرى التي تتم إدارتها تلقائيًا بواسطة قاعدة بيانات SQL.
  • التوافر العالي: بناء الجملة المتعلق بالتوافر العالي واستعادة قاعدة البيانات، والتي تدار بواسطة قاعدة بيانات SQL. يتضمن ذلك بناء الجملة للنسخ الاحتياطي والاستعادة والتشغيل الدائم ونسخ قاعدة البيانات وسجلات الشحن ونماذج الاسترداد.
  • بناء الجملة المتعلق بالنسخ المتماثل اللقطات والمعاملات والدمج، وهو غير متوفر في قاعدة بيانات SQL. يتم دعم اشتراكات النسخ المتماثل .
  • الوظائف: fn_get_sql، fn_virtualfilestats، fn_virtualservernodes.
  • تكوين المثيل: بناء الجملة المتعلق بذاكرة الخادم وخيوط العاملين وتقارب وحدة المعالجة المركزية وأعلام التتبع. استخدم طبقات الخدمة واحسب الأحجام بدلاً من ذلك.
  • KILL STATS JOB.
  • OPENQUERY و OPENDATASOURCE وأربعة أجزاء.
  • NET Framework: تكامل CLR
  • بحث دلالي
  • بيانات اعتماد الخادم: استخدم بيانات اعتماد نطاق قاعدة البيانات بدلاً من ذلك.
  • الأذونات على مستوى الخادم: GRANT و REVOKE و DENY من الأذونات على مستوى الخادم غير مدعومة. يتم استبدال بعض الأذونات على مستوى الخادم بأذونات على مستوى قاعدة البيانات، أو يتم منحها ضمنيًا من خلال أدوار الخادم المضمنة. تحتوي بعض عروض DMVs وعروض الكتالوج على مستوى الخادم على طرق عرض مماثلة على مستوى قاعدة البيانات.
  • SET REMOTE_PROC_TRANSACTIONS
  • SHUTDOWN
  • sp_addmessage
  • sp_configure وRECONFIGURE. يتم دعم تغيير تكوين نطاق قاعدة البيانات .
  • sp_helpuser
  • sp_migrate_user_to_contained
  • عامل خادم SQL: بناء الجملة الذي يعتمد على عامل خادم SQL أو قاعدة بيانات MSDB: التنبيهات والمشغلين وخوادم الإدارة المركزية. استخدم البرمجة النصية، مثل PowerShell، بدلاً من ذلك.
  • تدقيق SQL Server: استخدم تدقيق قاعدة بيانات SQL بدلاً من ذلك.
  • تتبع SQL Server.
  • تتبع الأعلام.
  • تصحيح أخطاء T-SQL.
  • المشغلات التي يغطيها الخادم أو تسجيل الدخول.
  • عبارة USE: لتغيير سياق قاعدة البيانات إلى قاعدة بيانات مختلفة، يجب إنشاء اتصال جديد بقاعدة البيانات هذه.

مرجع T-SQL الكامل

لمزيد من المعلومات حول قواعد T-SQL واستخدامها والأمثلة، راجع مرجع T-SQL (محرك قاعدة البيانات) .

حول العلامات "ينطبق على"

يتضمن مرجع T-SQL مقالات متعلقة بجميع إصدارات SQL Server الحديثة. يوجد أسفل عنوان المقالة شريط رمز، يسرد أنظمة MSSQL، ويشير إلى قابلية التطبيق. على سبيل المثال، تم تقديم مجموعات التوفر في SQL Server 2012. تشير مقالة CREATE AVAILABILITY GROUP إلى أن العبارة تنطبق على SQL Server (بدءًا من 2012) . لا تنطبق العبارة على SQL Server 2008 أو SQL Server 2008 R2 أو قاعدة بيانات Azure SQL أو Azure Azure Synapse Analytics أو مستودع البيانات المتوازي.

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

الخطوات التالية

للحصول على قائمة بالميزات المدعومة وغير المدعومة بواسطة قاعدة بيانات SQL، راجع مقارنة ميزات قاعدة بيانات Azure SQL .

لاكتشاف مشكلات التوافق في قواعد بيانات SQL Server قبل الترحيل إلى قاعدة بيانات Azure SQL، ولترحيل قواعد البيانات، استخدم مساعد ترحيل البيانات (DMA) .