أنواع بيانات الجدول فـي Synapse SQL

فـي هذه المقالة، سوف تجد توصيات لتعريف أنواع بيانات الجدول في Synapse SQL Dedicated Pool.

أنواع البيانات

يدعم Synapse SQL Dedicated Pool أنواع البيانات الأكثر استخدامًا. للحصول على قائمة بأنواع البيانات المعتمدة، راجع أنواع البيانات في عبارة CREATE TABLE. بالنسبة إلى Synapse SQL Serverless، يرجى الرجوع إلى مقالة ملفات تخزين الاستعلام مع تجمع SQL بلا خادم في Azure Synapse Analyticsوكيفية استخدام OPENROWSET باستخدام تجمع SQL بلا خادم فـي Azure Synapse Analytics

تصغير طـول الصف

تقليل حجم أنواع البيانات إلى الحد الأدنى يُقصر طول الصف، ما يؤدي إلى تحسين أداء الاستعلام. استخدم أصغر نوع بيانات يكون جيداً مع بياناتك.

  • تجنب تحديد طول افتراضي كبير لأعمدة الأحرف. على سبيل المثال، إذا كانت أطول قيمة هي 25 حرفًا، فحدد العمود الخاص بك على أنه VARCHAR (25).
  • تجنب استخدام NVARCHAR عندما تحتاج إلى VARCHAR فقط.
  • وعند الإمكان، استخدم NVARCHAR(4000) أو VARCHAR(8000) بدلاً من NVARCHAR(MAX) أو VARCHAR(MAX).
  • تجنب استِخدام الأعداد العائمة والفواصل العشرية ذات المقياس 0 (صفر). يجب أن تكون هـذه TINYINT أو SMALLINT أو INT أو BIGINT.

إشعار

إذا كنت تستخدم جداول PolyBase الخارجية لتحميل جداول Synapse SQL، فلا يمكن أن يتجاوز الطول المحدد لصف الجدول 1 ميغابايت. عندما يتجاوز الصف الذي يحتوي على بيانات متغيرة الطول 1 ميغابايت، يمكنك تحميل الصف باستخدام BCP، ولكن ليس باستخدام PolyBase.

تحديد أنواع البيانات غير المعتمدة

إذا كنت تقوم بترحيل قاعدة البيانات الخاصة بك من قاعدة بيانات SQL أخرى، فقد تواجه أنواع بيانات غير معتمدة فـي Synapse SQL. استخدم هذا الاستعلام لاكتشاف أنواع البيانات غير المدعومة فـي مُخطط SQL الحالي.

SELECT  t.[name], c.[name], c.[system_type_id], c.[user_type_id], y.[is_user_defined], y.[name]
FROM sys.tables  t
JOIN sys.columns c on t.[object_id]    = c.[object_id]
JOIN sys.types   y on c.[user_type_id] = y.[user_type_id]
WHERE y.[name] IN ('geography','geometry','hierarchyid','image','text','ntext','sql_variant','xml')
 OR  y.[is_user_defined] = 1;

الحلول البديلة لأنواع البيانات غير المدعومة

تعرض القائمة التالية أنواع البيانات التي لا يدعمها Synapse SQL وتعطي بدائل يمكنك استخدامها بدلًا مـن أنواع البيانات غير المدعومة.

نوع البيانات غير المدعوم الطرق البديلة
الهندسه Varbinary
الجغرافيا Varbinary
معرف هرمي nvarchar(4000)
صورة Varbinary
text Varchar
Ntext Nvarchar
Sql_variant قم بتقسيم العمود إلى عدة أعمدة محددة النوع بدقة.
الجدول التحويل إلى جداول مؤقتة أو مراعاة تخزين البيانات إلى التخزين باستخدام CETAS.
الطابع الزمني أعد عمل التعليمة البرمجية لاستخدام datetime2 والدالة CURRENT_TIMESTAMP. يتم دعم الثوابت كإعدادات افتراضية فحسب، لذلك لا يمكن تعريف Current_timestamp كقيود افتراضية. إذا كنت بحاجة إلى ترحيل قيم إصدار الصف من عمود طابع زمني محدد النوع، فاستخدم BINARY(8) أو VARBINARY(8) لقيم إصدار الصف NOT NULL أو NULL.
xml Varchar
نوع معرف من قبل المستخدم قم بالتحويل مرة أخرى إلى نوع البيانات الأصلي عندما يكون ذلك ممكناً.
القيم الافتراضية تدعم القيم الافتراضية القيم الحرفية والقيود فقط.

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

للمزيد من المعلومات عن تطوير الجداول، راجع نظرة عامة على الجدول.