كيفية إجراء استعلام SQL Server موزعة مع خادم OLAP


ملخص


توضح هذه المقالة كيفية إجراء استعلام موزع ملقم SQL لاسترداد البيانات من مكعب OLAP Services (خدمات التحليل أو). باستخدام Microsoft SQL Server الإصدار 7.0، يمكنك تنفيذ استعلامات مقابل موفري OLE DB. للقيام بذلك، يمكنك:
  • استخدام دالات SQL للعمليات OPENROWSET أو في OPENQUERY. -أو-
  • استخدام استعلام بأسماء أربعة أجزاء، بما في ذلك اسم ملقم مرتبط.
على سبيل المثال:
sp_addlinkedserver 'mylinkedserver', 'product_name', 'myoledbprovider', 'data_source','location', 'provider_string', 'catalog'

SELECT * FROM OPENQUERY(mylinkedserver, 'select * from table1')
يمكنك استخدام OPENROWSET أو الدالة OPENQUERY في عبارة SQL SELECT الملقم لتمرير الاستعلامات المرتبطة بملقم OLAP. الاستعلام يقتصر على بناء جملة SELECT مختصر معتمد من قبل خدمات OLAP; ومع ذلك، يمكن أن يتضمن الاستعلام بناء جملة تعبيرات متعددة الأبعاد (MDX). إرجاع استعلام يتضمن MDX "التسوية" مجموعات الصفوف كالموضحة في وثائق OLE DB. لمزيد من المعلومات حول بناء جملة SELECT المعتمدة من قبل SQL Server OLAP Services، راجع الموضوع "دعم تحديد بناء جملة SQL" في OLAP الخدمات المباشرة.

للاستعلام عن ملف محلي أو قاعدة بيانات خادم OLAP البعيدة من SQL Server، يجب عليك تثبيت موفر MSOLAP OLE DB على الكمبيوتر الذي يستخدم SQL Server. يتم تثبيت موفر MSOLAP OLE DB عند تثبيت مكونات العميل OLAP من القرص المضغوط SQL Server 7.0.


المثال OPENROWSET و OPENQUERY

يوضح مثال التعليمات البرمجية التالي SQL لكيفية إعداد واستخدام استعلامات الموزعة مع ملقم OLAP OPENQUERY ووظائف OpenRowset . يجب تغيير أسماء مصادر البيانات واسم الكتالوج حسب الاقتضاء.
------------------------------------------
--OPENROWSET for OLAP Server
------------------------------------------


SELECT a.* FROM OpenRowset('MSOLAP','DATASOURCE=myOlapServer; Initial Catalog=FoodMart;',
'SELECT Measures.members ON ROWS,
[Product Category].members ON COLUMNS
FROM [Sales]') as a
go

-- Example of MDX with slicing --

SELECT a.* FROM OpenRowset('MSOLAP','DATASOURCE=myOlapServer; Initial Catalog=FoodMart;',
'SELECT
{ Time.Year.[1997] } ON COLUMNS,
NON EMPTY Store.MEMBERS ON ROWS
FROM Sales
WHERE ( Product.[Product Category].[Dairy] )') as a

--------------------------------------------------
-- Linked Server Examples with OPENQUERY
--------------------------------------------------

EXEC sp_addlinkedserver
@server='olap_server',
@srvproduct='',
@provider='MSOLAP',

@datasrc='server',
@catalog='foodmart'

go

-- MDX in OPENQUERY --

SELECT * FROM OPENQUERY(olap_server,
'SELECT
{ Time.Year.[1997] } ON COLUMNS,
NON EMPTY Store.MEMBERS ON ROWS
FROM Sales
WHERE ( Product.[Product Category].[Dairy])' )
ملاحظة: الموضوع "تمرير الاستعلامات من SQL الخادم للمرتبطة خادم OLAP" في OLAP الخدمات المباشرة، لدى خطأ وثائق في مثال التعليمات البرمجية:
SELECT * FROM OPENQUERY(olap_server,
'SELECT [customer], [quantity] FROM sales')
يتم اعتماد شكل محدود من SQL، ويمكن تحديد أسماء مستوى أو المقياس. عند تشغيل الاستعلام، تتلقى رسالة الخطأ هذه:
ملقم: رسالة 7399، مستوى 16 حالة 1، البند 1 موفر OLE DB 'MSOLAP' بالإعلام عن خطأ. [موفر OLE/DB إرجاع الرسالة: اسم العمود 'العميل' غير صالح. يمكنك تحديد أسماء مستوى أو المقياس.]
طريقة واحدة لإصلاح الاستعلام استخدام ما يلي:
SELECT * FROM OPENQUERY(olap_server,
'SELECT [unit sales] FROM sales')
ومع ذلك، تمرير عبارات SQL في هذا النموذج إلى خادم OLAP قد تكون بطيئة جداً، وقد تتلقى خطأ مهلة على بعض أجهزة الكمبيوتر:
موفر OLE DB 'MSOLAP' بالإعلام عن خطأ. [موفر OLE/DB إرجاع الرسالة: لا يمكن فتح قاعدة البيانات 'foodmart'] [موفر OLE/DB إرجاع الرسالة: خطأ خادم OLAP: العملية المطلوبة فشل بسبب انتهاء مهلة.]

أمثلة على ملقم مرتبط بأسماء أربعة أجزاء

يوضح مثال التعليمات البرمجية SQL للعمليات في هذا القسم استخدام ملقم مرتبط باسم أربعة أجزاء للاستعلام مكعب OLAP. تم إنشاء ملقم مرتبط يسمى Olap_server في التعليمات البرمجية في المثال السابق:
Select [Store:Store Name] from Olap_server.FoodMart..[sales] WHERE [Store:Store State]='WA'

go

Select [Product:Product Category], count ([Store:Store Name]) from Olap_server.FoodMart..[sales]
WHERE [Store:Store State]='WA'
GROUP BY [Product:Product Category]
على الرغم من أن ربط الأمثلة الملقم باسم أربعة أجزاء عمل جيد، قد يستغرق وقتاً طويلاً لإرجاع نتيجة إلى العميل. بناء جملة الاسم المكون من أربعة أجزاء مفهوم SQL Server؛ يتم استخدامه في أمر SQL للعمليات للإشارة إلى جدول في ملقم مرتبط ومحدودة بناء الجملة من أجل استعلامات OLAP. ملقم SQL قد تحدد أنه يجب قراءة جدول الحقائق كاملة من خادم OLAP والقيام "مجموعة وحدها"، التي قد تستغرق وقتاً وموارد كبيرة.

توصي Microsoft بإرسال جملة MDX عبر OPENROWSET أو دالة OPENQUERY، كما هو موضح في الأمثلة السابقة. تسمح هذه الطريقة بإرسال الأمر مباشرة إلى موفر OLAP المرتبطة، دون محاولة تحليل SQL Server. قد يكون الأمر MDX أو مجموعة فرعية من SQL الذي يدعم موفر OLAP. يمكنك استخدام مجموعة الصفوف التي تم إرجاعها من دالة OPENQUERY في أي عوامل SQL. استعلامات MDX الأساسية واستعلامات "المجموعة التي" تقوم بإرجاع كمية صغيرة نسبيا من البيانات (مثل screenful)، يجب إنشاء مجموعة النتائج دائماً في أقل من 10 ثوان، بشكل عام في 5 ثواني، بغض النظر عن حجم المكعب. إذا استعلامات يستغرق وقتاً أطول، يمكنك بناء مزيد من المجموعات باستخدام التحليل القائم على استخدام المعالج.

تلميحات الأداء

فيما يلي بعض التلميحات الأداء:
  • فتح SQL Server اتصالين لموفر OLAP لكل استعلام. أحد هذه إعادة استخدام الاستعلامات اللاحقة؛ ولذلك، إذا قمت بتشغيل الأمر مرة أخرى، قد تشغيل الاستعلام الثاني أسرع.
  • لزيادة سرعة تجميع حسب البعد آخر (لأن تحصل على بيانات أقل).
  • ستكون أسوأ سيناريو عندما يتم تخزين المكعب خلال العلائقية OLAP (ROLAP) وهناك لا تجميع. ثم، خادم OLAP بفتح اتصال إلى SQL Server للحصول على الحقيقة صفوف الجدول. يستخدم استعلام SQL Server موزعة في هذه الحالة.
  • إذا كنت تريد فقط مجموعة نتائج من ملقم OLAP أو ملف مكعب، حاول تشغيل SQL Server أو استعلام متعدد الأبعاد مباشرة مقابل خادم OLAP أو أي ملف المكعب، باستخدام تطبيق OLE DB c + + أو تطبيق ADO(ADO*MD).
  • بعض موفري OLE DB بتثبيت SQL Server وتكوين تلك تحميل قيد التشغيل. لأنه لم يتم تثبيت موفر MSOLAP قبل SQL Server، يتم تكوينه لتحميل خارج العملية. توصي Microsoft بشدة بتغيير خيارات موفر OLAP لتحميل كقيد التشغيل، لأن هذا التكوين بتحسين أداء استعلامات OLAP الخاص بك. لإجراء التغييرات، اتبع الخطوات التالية:
    1. في مجلد " الأمان "، انقر بالزر الأيمن الملقمات المرتبطة، وثم انقر فوق ملقم مرتبط جديد.
    2. اسم الموفر، انقر لتحديد موفر Microsoft OLE DB ل OLAP Services.
    3. انقر فوق خيارات.
    4. انقر لتحديد السماح إينبروسيس.
    5. انقر فوق موافق.

المراجع


للحصول على وصف تفصيلي ل sp_addlinkedserver معلمات الإجراء المخزن، راجع كتب SQL Server 7.0.

لمزيد من التفاصيل حول إعداد واستخدام استعلامات الموزعة، ابحث عن sp_addlinkedserver"OPENQUERY"، "OPENROWSET" ومواضيع ذات صلة، في كتب SQL Server 7.0.

لمزيد من المعلومات حول بناء جملة MDX وتقنية OLAP، راجع OLAP Services كتب. لمزيد من المعلومات حول استخدام الأمان باستخدام خدمات OLAP، راجع المقالة التالية في "قاعدة المعارف ل Microsoft":
كيفية إعداد أمان ملقم مرتبط بخدمات OLAP 242025