انسخ البيانات من Amazon RDS for SQL Server باستخدام Azure Data Factory أو Azure Synapse Analytics

توضح هذه المقالة كيفية استخدام نشاط النسخ في مسارات Azure Data Factory وAzure Synapse لنسخ البيانات من قاعدة بيانات Amazon RDS for SQL Server. للتعرف على المزيد، اقرأ المقالة التمهيدية حول Azure Data Factory أو Azure Synapse Analytics.

القدرات المدعومة

يتم دعم موصل Amazon RDS for SQL Server للإمكانيات التالية:

القدرات المدعومة IR
نشاط النسخ (مصدر/-) (1) (2)
نشاط البحث (1) (2)
نشاط GetMetadata (1) (2)
نشاط الإجراء المخزن (1) (2)

① وقت تشغيل تكامل Azure ② وقت تشغيل التكامل المستضاف ذاتيًا

للحصول على قائمة مخازن البيانات المدعومة كمصادر أو أحواض بواسطة نشاط النسخ، راجع جدول مخازن البيانات المدعومة.

وعلى وجه التحديد، يدعم موصل Amazon RDS for SQL Server ما يلي:

  • إصدار SQL Server 2005 والأحدث.
  • نسخ البيانات باستخدام مصادقة SQL أو Windows.
  • كمصدر، استرداد البيانات باستخدام استعلام SQL أو إجراء مخزن. يمكنك أيضًا اختيار النسخ المتوازي من مصدر Amazon RDS for SQL Server، راجع قسم النسخة المتوازية من قاعدة بيانات SQL للحصول على التفاصيل.

SQL Server Express LocalDB غير مدعوم.

المتطلبات الأساسية

إذا كان مخزن البيانات الخاص بك موجوداً داخل شبكة محلية، أو شبكة Azure ظاهرية، أو Amazon Virtual Private Cloud، فأنت بحاجة إلى تكوين وقت تشغيل تكامل مستضاف ذاتياً للاتصال به.

إذا كان مخزن البيانات الخاص بك عبارة عن خدمة بيانات سحابية مُدارة، يمكنك استخدام Azure Integration Runtime. إذا كان الوصول مقتصراً على عناوين IP التي تمت الموافقة عليها في قواعد جدار الحماية، يمكنك إضافة عناوين IP لـ Azure Integration Runtime إلى قائمة السماح.

يمكنك أيضاً استخدام ميزة وقت تشغيل تكامل الشبكة الظاهرية المُدارة في Azure Data Factory للوصول إلى الشبكة المحلية دون تثبيت وقت تشغيل تكامل مستضاف ذاتياً وتكوينه.

لمزيد من المعلومات حول آليات وخيارات أمان الشبكة التي يدعمها Data Factory، راجع إستراتيجيات الوصول إلى البيانات.

الشروع في العمل

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

إنشاء الخدمة المرتبطة لـ Amazon RDS for SQL Server باستخدام واجهة المستخدم

استخدم الخطوات التالية لإنشاء الخدمة المرتبطة لـ Amazon RDS for SQL Server في واجهة مستخدم مدخل Microsoft Azure.

  1. استعرض للوصول إلى علامة التبويب "Manage" في مصنع بيانات Azure أو مساحة عمل Synapse، وحدد "Linked Services"، ثم انقر فوق "New":

  2. ابحث عن Amazon RDS for SQL Server وحدد موصل Amazon RDS for SQL Server.

    لقطة شاشة موصل Amazon RDS for SQL Server .

  3. قم بتكوين تفاصيل الخدمة، واختبر الاتصال، وأنشئ الخدمة المرتبطة الجديدة.

    لقطة شاشة لتكوين الخدمة المرتبطة بـ Amazon RDS for SQL Server.

تفاصيل تكوين الموصل

توفر الأقسام التالية تفاصيل حول الخصائص المستخدمة لتحديد كيانات مسار Data Factory وSynapse الخاصة بموصل قاعدة بيانات Amazon RDS for SQL Server.

خصائص الخدمة المرتبطة

يدعم الإصدار الموصى به لموصل Amazon RDS for SQL Server TLS 1.3. راجع هذا القسم لترقية إصدار موصل Amazon RDS for SQL Server من الإصدار القديم . للحصول على تفاصيل الخاصية، راجع الأقسام المقابلة.

إشعار

لا يتم دعم Amazon RDS for SQL Server Always Encrypted في تدفق البيانات.

تلميح

إذا واجهت خطأ برمز الخطأ "UserErrorFailedToConnectToSqlServer" ورسالة مثل "حد جلسة قاعدة البيانات هو XXX وتم الوصول إليه"، أضف Pooling=false إلى سلسلة الاتصال وحاول مرة أخرى.

يتم دعم هذه الخصائص العامة لخدمة Amazon RDS ل SQL Server المرتبطة عند تطبيق الإصدار الموصى به :

الخاصية الوصف مطلوب
النوع يجب تعيين خاصية النوع إلى AmazonRedshift. ‏‏نعم‬
الخادم اسم أو عنوان الشبكة لمثيل خادم SQL الذي تريد الاتصال به. ‏‏نعم‬
قاعدة بيانات اسم قاعدة البيانات. ‏‏نعم‬
نوع المصادقة النوع المستخدم للمصادقة. القيم المسموح بها هي SQL (افتراضي)، Windows. انتقل إلى قسم المصادقة ذات الصلة حول خصائص ومتطلبات أساسية محددة. ‏‏نعم‬
alwaysEncryptedSettings حدد معلومات alwaysencryptedsettings المطلوبة لتمكين Always Encrypted لحماية البيانات الحساسة المُخزنة في Amazon RDS الخاصة بـ SQL Server باستخدام الهوية المُدارة أو كيان الخدمة. لمزيد من المعلومات، راجع مثال JSON الذي يتبع الجدول واستخدم القسم Always Encrypted. إذا لم يتم تحديده، فسيتم تعطيل الإعداد الافتراضي المشفر دائماً. لا
تشفير الإشارة إلى ما إذا كان تشفير TLS مطلوبا لجميع البيانات المرسلة بين العميل والخادم. الخيارات: إلزامية (ل true، default)/اختيارية (ل false)/strict. لا
trustServerCertificate الإشارة إلى ما إذا كان سيتم تشفير القناة أثناء تجاوز سلسلة الشهادات للتحقق من صحة الثقة. لا
اسم المضيفInCertificate اسم المضيف الذي يجب استخدامه عند التحقق من صحة شهادة الخادم للاتصال. عند عدم التحديد، يتم استخدام اسم الخادم للتحقق من صحة الشهادة. لا
connectVia يُستخدم وقت تشغيل التكامل هذا للاتصال بمخزن البيانات. تعرف على المزيد من قسم المتطلبات الأساسية. في حالة عدم التحديد، يُستخدم وقت تشغيل تكامل Azure الافتراضي. لا

للحصول على خصائص اتصال إضافية، راجع الجدول أدناه:

الخاصية الوصف مطلوب
applicationIntent نوع حمل عمل التطبيق عند الاتصال بخادم. القيم المسموح بها هي ReadOnly وReadWrite. لا
connectTimeout طول الوقت (بالثوان) لانتظار اتصال بالخادم قبل إنهاء المحاولة وإنشاء خطأ. لا
connectRetryCount عدد عمليات إعادة الاتصال التي تمت محاولتها بعد تحديد فشل الاتصال الخامل. يجب أن تكون القيمة عددا صحيحا بين 0 و255. لا
ConnectRetryInterval مقدار الوقت (بالثوان) بين كل محاولة إعادة اتصال بعد تحديد فشل الاتصال الخامل. يجب أن تكون القيمة عددا صحيحا بين 1 و60. لا
وقت موازنة التحميل الحد الأدنى من الوقت (بالثوان) للاتصال للعيش في تجمع الاتصال قبل إتلاف الاتصال. لا
commandTimeout وقت الانتظار الافتراضي (بالثوان) قبل إنهاء محاولة تنفيذ أمر وإنشاء خطأ. لا
الأمان المتكامل القيم المسموح بها هي true أو false. عند تحديد false، حدد ما إذا كان اسم المستخدم وكلمة المرور محددين في الاتصال. عند تحديد true، يشير إلى ما إذا كانت بيانات اعتماد حساب Windows الحالية تستخدم للمصادقة. لا
تجاوز الفشلPartner اسم أو عنوان الخادم الشريك للاتصال به إذا كان الخادم الأساسي معلقا. لا
maxPoolSize الحد الأقصى لعدد الاتصالات المسموح بها في تجمع الاتصال للاتصال المحدد. لا
minPoolSize الحد الأدنى لعدد الاتصالات المسموح بها في تجمع الاتصال للاتصال المحدد. لا
مجموعات متعددةActiveResultSets القيم المسموح بها هي true أو false. عند تحديد true، يمكن للتطبيق الاحتفاظ بمجموعات نتائج نشطة متعددة (MARS). عند تحديد false، يجب على التطبيق معالجة أو إلغاء جميع مجموعات النتائج من دفعة واحدة قبل أن يتمكن من تنفيذ أي دفعات أخرى على هذا الاتصال. لا
multiSubnetFailover القيم المسموح بها هي true أو false. إذا كان التطبيق الخاص بك يتصل بمجموعة توفر AlwaysOn (AG) على شبكات فرعية مختلفة، فقم بتعيين هذه الخاصية لتوفير true اكتشاف أسرع للخادم النشط حاليا والاتصال به. لا
packetSize حجم وحدات البايت لحزم الشبكة المستخدمة للاتصال بمثيل الخادم. لا
تجميع القيم المسموح بها هي true أو false. عند تحديد true، سيتم تجميع الاتصال. عند تحديد false، سيتم فتح الاتصال بشكل صريح في كل مرة يتم فيها طلب الاتصال. لا

مصادقة SQL

لاستخدام مصادقة SQL، بالإضافة إلى الخصائص العامة الموضحة في القسم السابق، حدد الخصائص التالية:

الخاصية الوصف مطلوب
userName اسم المستخدم المستخدم للاتصال بالخادم. ‏‏نعم‬
كلمة المرور كلمة المرور لاسم المستخدم. وضع علامة على هذا الحقل باعتباره SecureString لتخزينه بشكل آمن. أو يمكنك أيضًا الإشارة إلى سر مخزن في Azure Key Vault. ‏‏نعم‬

مثال: استخدام مصادقة SQL

{
    "name": "AmazonSqlLinkedService",
    "properties": {
        "type": "AmazonRdsForSqlServer",
        "typeProperties": {
            "server": "<name or network address of the SQL server instance>",
            "database": "<database name>",
            "encrypt": "<encrypt>",
            "trustServerCertificate": false,
            "authenticationType": "SQL",
            "userName": "<user name>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

مثال: استخدام مصادقة SQL مع كلمة مرور في Azure Key Vault

{
    "name": "AmazonSqlLinkedService",
    "properties": {
        "type": "AmazonRdsForSqlServer",
        "typeProperties": {
            "server": "<name or network address of the SQL server instance>",
            "database": "<database name>",
            "encrypt": "<encrypt>",
            "trustServerCertificate": false,
            "authenticationType": "SQL",
            "userName": "<user name>",
            "password": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

مثال: استخدام Always Encrypted

{
    "name": "AmazonSqlLinkedService",
    "properties": {
        "type": "AmazonRdsForSqlServer",
        "typeProperties": {
            "server": "<name or network address of the SQL server instance>",
            "database": "<database name>",
            "encrypt": "<encrypt>",
            "trustServerCertificate": false,
            "authenticationType": "SQL",
            "userName": "<user name>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            },
            "alwaysEncryptedSettings": {
                "alwaysEncryptedAkvAuthType": "ServicePrincipal",
                "servicePrincipalId": "<service principal id>",
                "servicePrincipalKey": {
                    "type": "SecureString",
                    "value": "<service principal key>"
                }
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

مصادقة Windows

لاستخدام مصادقة Windows، بالإضافة إلى الخصائص العامة الموضحة في القسم السابق، حدد الخصائص التالية:

الخاصية الوصف مطلوب
userName حدد اسم مستخدم. مثال على ذلك هو domainname\username. ‏‏نعم‬
كلمة المرور حدد كلمة مرور لحساب المستخدم الذي حددته لاسم المستخدم. وضع علامة على هذا الحقل باعتباره SecureString لتخزينه بشكل آمن. أو يمكنك أيضًا الإشارة إلى سر مخزن في Azure Key Vault. ‏‏نعم‬

مثال: استخدام المصادقة المتكاملة في Windows

{
    "name": "AmazonSqlLinkedService",
    "properties": {
        "type": "AmazonRdsForSqlServer",
        "typeProperties": {
            "server": "<name or network address of the SQL server instance>",
            "database": "<database name>",
            "encrypt": "<encrypt>",
            "trustServerCertificate": false,
            "authenticationType": "Windows",
            "userName": "<domain\\username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

الإصدار القديم

يتم دعم هذه الخصائص العامة لخدمة Amazon RDS ل SQL Server المرتبطة عند تطبيق الإصدار القديم :

الخاصية الوصف مطلوب
النوع يجب تعيين خاصية النوع إلى AmazonRedshift. ‏‏نعم‬
alwaysEncryptedSettings حدد معلومات alwaysencryptedsettings المطلوبة لتمكين Always Encrypted لحماية البيانات الحساسة المُخزنة في Amazon RDS الخاصة بـ SQL Server باستخدام الهوية المُدارة أو كيان الخدمة. لمزيد من المعلومات، راجع قسم استخدام Always Encrypted. إذا لم يتم تحديده، فسيتم تعطيل الإعداد الافتراضي المشفر دائماً. لا
connectVia يُستخدم وقت تشغيل التكامل هذا للاتصال بمخزن البيانات. تعرف على المزيد من قسم المتطلبات الأساسية. في حالة عدم التحديد، يُستخدم وقت تشغيل تكامل Azure الافتراضي. لا

يدعم موصل Amazon RDS for SQL Server هذا أنواع المصادقة التالية. راجع الأقسام المقابلة للاطلاع على التفاصيل.

مصادقة SQL للإصدار القديم

لاستخدام مصادقة SQL، بالإضافة إلى الخصائص العامة الموضحة في القسم السابق، حدد الخصائص التالية:

الخاصية الوصف مطلوب
سلسلة الاتصال حدد connectionString information المطلوبة للاتصال بقاعدة بيانات Amazon RDS ل SQL Server. حدد اسم تسجيل الدخول كاسم مستخدم، وتأكد من تعيين قاعدة البيانات التي تريد الاتصال بها إلى تسجيل الدخول هذا. ‏‏نعم‬
كلمة المرور إذا كنت تريد وضع كلمة مرور في Azure Key Vault، فقم بسحب password التكوين من سلسلة الاتصال. لمزيد من المعلومات، راجع تخزين بيانات الاعتماد في Azure Key Vault. لا

مصادقة Windows للإصدار القديم

لاستخدام مصادقة Windows، بالإضافة إلى الخصائص العامة الموضحة في القسم السابق، حدد الخصائص التالية:

الخاصية الوصف مطلوب
سلسلة الاتصال حدد connectionString information المطلوبة للاتصال بقاعدة بيانات Amazon RDS ل SQL Server. ‏‏نعم‬
userName حدد اسم مستخدم. مثال على ذلك هو domainname\username. ‏‏نعم‬
كلمة المرور حدد كلمة مرور لحساب المستخدم الذي حددته لاسم المستخدم. وضع علامة على هذا الحقل باعتباره SecureString لتخزينه بشكل آمن. أو يمكنك أيضًا الإشارة إلى سر مخزن في Azure Key Vault. ‏‏نعم‬

خصائص مجموعة البيانات

للحصول على قائمة كاملة بالأقسام والخصائص المتوفرة لتعريف مجموعات البيانات، راجع مقالة مجموعات البيانات. يوفر هذا القسم قائمة بالخصائص التي تدعمها مجموعة بيانات Amazon RDS for SQL Server.

لنسخ البيانات من وإلى قاعدة بيانات Amazon RDS for SQL Server، يتم دعم الخصائص التالية:

الخاصية الوصف مطلوب
النوع يجب تعيين خاصية النوع لمجموعة البيانات على AmazonRdsForSqlServerTable. ‏‏نعم‬
Schema اسم المخطط. لا
طاولتنا اسم الجدول/طريقة العرض. لا
اسم الجدول اسم الجدول/طريقة العرض مع المخطط. هذه الخاصية مدعومة للتوافق مع الإصدارات السابقة. بالنسبة لحمل العمل الجديد، استخدم schema وtable. لا

مثال

{
    "name": "AmazonRdsForSQLServerDataset",
    "properties":
    {
        "type": "AmazonRdsForSqlServerTable",
        "linkedServiceName": {
            "referenceName": "<Amazon RDS for SQL Server linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, retrievable during authoring > ],
        "typeProperties": {
            "schema": "<schema_name>",
            "table": "<table_name>"
        }
    }
}

انسخ خصائص النشاط

للحصول على قائمة كاملة بالأقسام والخصائص المتاحة للاستخدام لتعريف الأنشطة، راجع مقالة خطوط التدفقات. يوفر هذا القسم قائمة بالخصائص التي يدعمها مصدر Amazon RDS for SQL Server.

Amazon RDS for SQL Server كمصدر

تلميح

لتحميل البيانات من RDS for SQL Server بكفاءة باستخدام تقسيم البيانات، تعرف على المزيد من نسخة متوازية من قاعدة بيانات SQL .

لنسخ البيانات من Amazon RDS for SQL Server، قم بتعيين نوع المصدر في نشاط النسخ على AmazonRdsForSqlServerSource. الخصائص التالية مدعومة في قسم مصدر نشاط النسخ:

الخاصية الوصف مطلوب
النوع يجب تعيين خاصية نوع مصدر نشاط النسخ إلى: AmazonRdsForSqlServerSource. ‏‏نعم‬
sqlReaderQuery استخدم استعلام SQL المخصص لقراءة البيانات. مثال على ذلك select * from MyTable . لا
sqlReaderStoredProcedureName هذه الخاصية هي اسم الإجراء المخزن الذي يقرأ البيانات من الجدول المصدر. يجب أن تكون بوابة لغة الاستعلامات المركبة الأخيرة عبارة عن مصطلح SELECT في الإجراء المُخزن. لا
storedProcedureParameters هذه المعلمات من أجل الإجراء المخزن.
القيم المسموح بها هي أزواج الاسم أو القيمة. يجب أن تتطابق أسماء وأغلفة المعلمات مع الأسماء والغلاف الخاص بمعلمات الإجراء المخزن.
لا
isolationLevel يحدد سلوك تأمين المعاملة لمصدر SQL. القيم المسموح بها هي: ReadCommitted، وReadUncommitted، وRepeatableRead، وSerializable، وSnapshot. إذا لم يتم تحديده، فسيتم استخدام مستوى العزل الافتراضي لقاعدة البيانات. يرجى مراجعة هذا المستند للحصول على المزيد من التفاصيل. لا
خيارات التقسيم يحدد خيارات تقسيم البيانات المستخدمة لتحميل البيانات من Amazon RDS for SQL Server.
القيم المسموح بها هي: None (افتراضي)، وPhysicalPartitionsOfTable، وDynamicRange.
عند تمكين خيار القسم (أي ليس None)، يتم التحكم في درجة التوازي لتحميل البيانات بشكل متزامن من Amazon RDS for SQL Server من خلال الإعداد parallelCopiesعلى نشاط النسخ.
لا
partitionSettings حدد مجموعة الإعدادات الخاصة بتقسيم البيانات.
تطبيق عندما لا يكون خيار التقسيم None.
لا
تحت partitionSettings:
partitionColumnName حدد اسم عمود المصدر بعدد صحيح أو نوع التاريخ/التاريخ والوقت (int أو smallint أو bigint أو date أو smalldatetime أو datetime أو datetime2 أو datetimeoffset) التي سيتم استخدامها عن طريق تقسيم النطاق للنسخ المتوازي. إذا لم يتم تحديده، فسيتم اكتشاف الفهرس أو المفتاح الأساسي للجدول تلقائياً واستخدامهما كعمود للتقسيم.
تُطبق عندما يكون خيار التقسيم هو DynamicRange. إذا كنت تستخدم استعلاماً لاسترداد البيانات المصدر، اربط ?DfDynamicRangePartitionCondition في عبارة WHERE. على سبيل المثال، راجع القسم النسخ المتوازي من قاعدة بيانات SQL.
لا
التقسيم القيمة القصوى لعمود القسم لتقسيم نطاق القسم. تُستخدم هذه القيمة لتحديد مرحلة القسم، وليس لتصفية الصفوف في الجدول. سيتم تقسيم ونسخ جميع الصفوف في الجدول أو نتيجة الاستعلام. إذا لم يتم تحديده، يكشف نشاط النسخ القيمة تلقائياً.
تُطبق عندما يكون خيار التقسيم هو DynamicRange. على سبيل المثال، راجع القسم النسخ المتوازي من قاعدة بيانات SQL.
لا
partitionLowerBound الحد الأدنى لقيمة عمود القسم لتقسيم نطاق القسم. تُستخدم هذه القيمة لتحديد مرحلة القسم، وليس لتصفية الصفوف في الجدول. سيتم تقسيم ونسخ جميع الصفوف في الجدول أو نتيجة الاستعلام. إذا لم يتم تحديده، يكشف نشاط النسخ القيمة تلقائياً.
تُطبق عندما يكون خيار التقسيم هو DynamicRange. على سبيل المثال، راجع القسم النسخ المتوازي من قاعدة بيانات SQL.
لا

لاحظ النقاط التالية:

  • إذا تم تحديد sqlReaderQuery لـ AmazonRdsForSqlServerSource، فإن نشاط النسخ يقوم بتشغيل هذا الاستعلام مقابل مصدر Amazon RDS for SQL Server للحصول على البيانات. يمكنك أيضاً تحديد إجراء مخزن عن طريق تحديد sqlReaderStoredProcedureName وstoredProcedureParameters إذا كان الإجراء المُخزن يأخذ المعلمات.
  • عند استخدام الإجراء المُخزن في المصدر لاسترداد البيانات، لاحظ إذا تم تصميم الإجراء المُخزن الخاص بك لإرجاع مخطط مختلف عند تمرير قيمة معلمة مختلفة، فقد تواجه عطلاً أو ترى نتيجة غير متوقعة عند استيراد مخطط من واجهة المستخدم أو عند نسخ البيانات إلى قاعدة بيانات SQL باستخدام إنشاء الجدول التلقائي.

مثال: استخدام استعلام SQL

"activities":[
    {
        "name": "CopyFromAmazonRdsForSQLServer",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Amazon RDS for SQL Server input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "AmazonRdsForSqlServerSource",
                "sqlReaderQuery": "SELECT * FROM MyTable"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

مثال: استخدام إجراء مُخزن

"activities":[
    {
        "name": "CopyFromAmazonRdsForSQLServer",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Amazon RDS for SQL Server input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "AmazonRdsForSqlServerSource",
                "sqlReaderStoredProcedureName": "CopyTestSrcStoredProcedureWithParameters",
                "storedProcedureParameters": {
                    "stringData": { "value": "str3" },
                    "identifier": { "value": "$$Text.Format('{0:yyyy}', <datetime parameter>)", "type": "Int"}
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

تعريف الإجراء المُخزن

CREATE PROCEDURE CopyTestSrcStoredProcedureWithParameters
(
    @stringData varchar(20),
    @identifier int
)
AS
SET NOCOUNT ON;
BEGIN
    select *
    from dbo.UnitTestSrcTable
    where dbo.UnitTestSrcTable.stringData != stringData
    and dbo.UnitTestSrcTable.identifier != identifier
END
GO

نسخة موازية من قاعدة بيانات SQL

يوفر موصل Amazon RDS for SQL Server في نشاط النسخ تقسيمًا مضمنًا للبيانات لنسخ البيانات بشكل متوازٍ. يمكنك العثور على خيارات تقسيم البيانات في علامة التبويب Source لنشاط النسخ.

لقطة شاشة لخيارات التقسيم

عند تمكين نسخة مقسمة، يقوم نشاط النسخ بتشغيل استعلامات متوازية مقابل مصدر Amazon RDS for SQL Server source لتحميل البيانات حسب الأقسام. يتم التحكم في الدرجة المتوازية بواسطة parallelCopies الإعداد على نشاط النسخ. على سبيل المثال، إذا قمت بتعيين parallelCopiesعلى أربعة، تقوم الخدمة في نفس الوقت بإنشاء وتشغيل أربعة استعلامات بناءً على خيار القسم المحدد والإعدادات، ويسترد كل استعلام جزءاً من البيانات من Amazon RDS for SQL Server source.

يُقترح عليك تمكين النسخ المتوازي مع تقسيم البيانات خاصة عند تحميل كمية كبيرة من البيانات من Amazon RDS for SQL Server source. فيما يلي تكوينات مقترحة لسيناريوهات مختلفة. عند نسخ البيانات إلى مخزن بيانات مستند إلى ملف، يوصى بالكتابة إلى مجلد كملفات متعددة (حدد اسم المجلد فقط)، وفي هذه الحالة يكون الأداء أفضل من الكتابة إلى ملف واحد.

السيناريو الإعدادات المقترحة
تحميل كامل من جدول كبير بأقسام فعلية. خيار التقسيم: أقسام فعلية للجدول.

أثناء التنفيذ، تكتشف الخدمة تلقائياً الأقسام المادية ونسخ البيانات حسب الأقسام.

للتحقق مما إذا كان الجدول يحتوي على قسم فعلي أم لا، يمكنك الرجوع إلى هذا الاستعلام.
تحميل كامل من جدول كبير، بدون أقسام فعلية، مع وجود عدد صحيح أو عمود التاريخ والوقت لتقسيم البيانات. خيارات التقسيم: تقسيم النطاق الديناميكي.
عمود التقسيم (اختياري): حدد العمود المستخدم لتقسيم البيانات. إذا لم يتم تحديده، فسيتم استخدام عمود المفتاح الأساسي.
الحد الأعلى للتقسيم والحد الأدنى للتقسيم (اختياري): حدد إذا كنت تريد تحديد المقدار الموسع للتقسيم. هذا ليس لتصفية الصفوف في الجدول، سيتم تقسيم ونسخ جميع الصفوف في الجدول. إذا لم يتم تحديده، فإن نسخ النشاط التلقائي يكتشف القيم ويمكن أن يستغرق وقتاً طويلاً اعتماداً على قيم MIN وMAX. من المستحسن تقديم الحد الأعلى والحد الأدنى.

على سبيل المثال، إذا كان معرّف عمود التقسيم يحتوي على قيم تتراوح من 1 إلى 100، وقمت بتعيين الحد الأدنى كـ 20 والحد الأعلى كـ 80، مع النسخ المتوازي كـ 4، تسترد الخدمة البيانات من خلال 4 أقسام - المعرّفات في النطاق <= 20 و[21 و50] و[51 و80] و>=81 على التوالي.
تحميل كمية كبيرة من البيانات باستخدام استعلام مخصص، دون أقسام فعلية، مع وجود عدد صحيح أو عمود التاريخ/التاريخ والوقت لتقسيم البيانات. خيارات التقسيم: تقسيم النطاق الديناميكي.
استعلام: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>.
عمود التقسيم: حدد العمود المستخدم لتقسيم البيانات.
الحد الأعلى للتقسيم والحد الأدنى للتقسيم (اختياري): حدد إذا كنت تريد تحديد المقدار الموسع للتقسيم. هذا ليس لتصفية الصفوف في الجدول، سيتم تقسيم كافة الصفوف في نتيجة الاستعلام ونسخها. إذا لم يتم تحديده، يكشف نشاط النسخ القيمة تلقائياً.

على سبيل المثال، إذا كان معرّف عمود التقسيم يحتوي على قيم تتراوح من 1 إلى 100، وقمت بتعيين الحد الأدنى كـ 20 والحد الأعلى كـ 80، مع النسخ المتوازي كـ 4، تسترد الخدمة البيانات من خلال 4 أقسام - المعرّفات في النطاق <= 20 و[21 و50] و[51 و80] و>=81 على التوالي.

فيما يلي المزيد من نماذج الاستعلامات لسيناريوهات مختلفة:
1. الاستعلام عن الجدول بأكمله:
SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition
2. الاستعلام من جدول مع تحديد عمود وعوامل تصفية إضافية ل where-clause:
SELECT <column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>
3. الاستعلام باستخدام الاستعلامات الفرعية:
SELECT <column_list> FROM (<your_sub_query>) AS T WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>
4. الاستعلام مع القسم في الاستعلام الفرعي:
SELECT <column_list> FROM (SELECT <your_sub_query_column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition) AS T

أفضل الممارسات لتحميل البيانات مع خيار التقسيم:

  1. اختر عمود مميز كعمود تقسيم (مثل المفتاح الأساسي أو المفتاح الفريد) لتجنب انحراف البيانات.
  2. إذا كان الجدول يحتوي على قسم مضمن، فاستخدم خيار القسم "الأقسام المادية للجدول" للحصول على أداء أفضل.
  3. إذا كنت تستخدم Azure Microsoft Integration Runtime لنسخ البيانات لكن يمكنك تعيين "وحدات تكامل بيانات (DIU)" (> 4) أكبر للاستفادة من المزيد من موارد الحوسبة. تحقق من السيناريوهات القابلة للتطبيق هناك.
  4. تتحكم "درجة توازي النسخ" في أرقام التقسيم، ويؤدي تعيين هذا الرقم إلى عدد كبير جداً في بعض الأحيان إلى الإضرار بالأداء، ويوصي بتعيين هذا الرقم إلى (DIU أو عدد عقد وقت تشغيل التكامل المستضاف ذاتياً) * (2 إلى 4).

مثال: تحميل كامل من جدول كبير مع أقسام فعلية

"source": {
    "type": "AmazonRdsForSqlServerSource",
    "partitionOption": "PhysicalPartitionsOfTable"
}

مثال: الاستعلام مع تقسيم النطاق الديناميكي

"source": {
    "type": "AmazonRdsForSqlServerSource",
    "query": "SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>",
    "partitionOption": "DynamicRange",
    "partitionSettings": {
        "partitionColumnName": "<partition_column_name>",
        "partitionUpperBound": "<upper_value_of_partition_column (optional) to decide the partition stride, not as data filter>",
        "partitionLowerBound": "<lower_value_of_partition_column (optional) to decide the partition stride, not as data filter>"
    }
}

نموذج استعلام للتحقق من التقسيم الفعلي

SELECT DISTINCT s.name AS SchemaName, t.name AS TableName, pf.name AS PartitionFunctionName, c.name AS ColumnName, iif(pf.name is null, 'no', 'yes') AS HasPartition
FROM sys.tables AS t
LEFT JOIN sys.objects AS o ON t.object_id = o.object_id
LEFT JOIN sys.schemas AS s ON o.schema_id = s.schema_id
LEFT JOIN sys.indexes AS i ON t.object_id = i.object_id 
LEFT JOIN sys.index_columns AS ic ON ic.partition_ordinal > 0 AND ic.index_id = i.index_id AND ic.object_id = t.object_id 
LEFT JOIN sys.columns AS c ON c.object_id = ic.object_id AND c.column_id = ic.column_id 
LEFT JOIN sys.partition_schemes ps ON i.data_space_id = ps.data_space_id 
LEFT JOIN sys.partition_functions pf ON pf.function_id = ps.function_id 
WHERE s.name='[your schema]' AND t.name = '[your table name]'

إذا كان الجدول يحتوي على تقسيم فعلي، فسترى "HasPartition" كـ "yes" كما يلي.

نتيجة استعلام Sql

بحث عن خصائص النشاط

لمعرفة تفاصيل حول الخصائص، تحقق من نشاط البحث.

خصائص نشاط GetMetadata

لمعرفة تفاصيل حول الخصائص، يرجى التحقق من نشاط GetMetadata

باستخدام التشفير دائمًا

عند نسخ البيانات من/إلى Amazon RDS for SQL Server source باستخدام Always Encrypted، اتبع الخطوات التالية:

  1. تخزين المفتاح الرئيسي للعمود (CMK) في Azure Key Vault. تعرف على المزيد حول كيفية تكوين Always Encrypted باستخدام Azure Key Vault

  2. تأكد من سهولة الوصول إلى مخزن المفتاح حيث تم تخزين المفتاح الرئيسي للعمود (CMK). راجع هذه المقالة لمعرفة الأذونات المطلوبة.

  3. قم بإنشاء خدمة مرتبطة للاتصال بقاعدة بيانات SQL الخاصة بك وتمكين وظيفة "التشفير دائماً" باستخدام إما الهوية المدارة أو أساس الخدمة.

استكشاف المشكلات في الاتصالات وإصلاحها

  1. قم بتكوين مثيل Amazon RDS for SQL Server لقبول الاتصالات عن بُعد. بدء SQL Server Management Studio انقر بزر الماوس الأيمن serverثم انقر على Properties. حدد Connectionsمن القائمة، وحدد مربع الاختيار Allow remote connections to this server.

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

    راجع تكوين خيار تكوين الخادم الوصول البعيد للحصول على خطوات مفصلة.

  2. بدء إدارة تكوين SQL Server. توسيع SQL Server Network Configuration للمثيل الذي تريده، وحدد Protocols for MSSQLSERVER. تظهر البروتوكولات في الجزء الأيمن. تمكين TCP/IP بالنقر بزر الماوس الأيمن فوق TCP/IP ثم النقر فوق Enable.

    تمكين TCP/IP

    لمزيد من المعلومات والطرق البديلة لتمكين بروتوكول TCP/IP، راجع تمكين أو تعطيل بروتوكول شبكة الخادم .

  3. في نفس الإطار، انقر نقرًا مزدوجًا فوق TCP/IP لإطلاق نافذة TCP/IP Properties.

  4. التبديل إلى علامة التبويب IP Addresses مرر لأسفل لرؤية قسم IPAll. اكتب منفذ TCP . الإعداد الافتراضي هو 1433.

  5. إنشاء قاعدة لجدار حماية Windows على الجهاز للسماح باستخدام الشبكة الواردة من خلال هذا المنفذ.

  6. التحقق من الاتصال : للاتصال بـ Amazon RDS for SQL Server باستخدام اسم مؤهل بالكامل، استخدم Amazon RDS for SQL Server Management Studio من جهاز مختلف. مثال على ذلك "<machine>.<domain>.corp.<company>.com,1433" .

ترقية إصدار Amazon RDS ل SQL Server

لترقية إصدار Amazon RDS for SQL Server، في صفحة تحرير الخدمة المرتبطة، حدد Recommended ضمن Version وقم بتكوين الخدمة المرتبطة بالإشارة إلى خصائص الخدمة المرتبطة للإصدار الموصى به.

يوضح الجدول أدناه الاختلافات بين Amazon RDS ل SQL Server باستخدام الإصدار الموصى به والإصدار القديم.

الإصدار الموصى به الإصدار القديم
دعم TLS 1.3 عبر encrypt ك strict. TLS 1.3 غير مدعوم.

للحصول على قائمة بمخازن البيانات المدعومة كمصادر ومتلقين من خلال نشاط النسخ، انظر مخازن البيانات المدعومة .