الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مقاله حول الاستعلامات الموزعه Distributed Queries

مغلق
بدأه طارق إبراهيم في 2 نوفمبر 2004 · 0 رد · 5,336 مشاهدة · في أرشيف قسم SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1

ما هى الاستعلامات الموزعه Distributed Queries

الاستعلامات الموزعه هى استعلامات هجينه (اى تتم على مصادر بيانات مختلفه) تمكنك من التعامل مع البيانات الموزعه على اجهزه اخرى و من مصادر مختلفه

تخيل ان شركتك تستخدم ثلاث انظمه موزعه بين الاكسس و الاوراكل و ال MS SQL Server و تحتاج انت فى احدى برامجك للاستعلام من تلك الانطمه فى وقت واحد لجمع بيانات مشتركه منها فالحل المتوافر من هنا هو استخدام طريقة الاستعلامات الموزعه

مصادر البيانات Data Sources

يقوم ال MS SQL Server بدعم الاستعلامات الموزعه لمختلف مصادر البيانات عن طريق ال OLEDB مباشره

البدأ فى استخدام الاستعلامات الموزعه

قبل البدء فى الاستعلام سنقوم اولاً بانشاء مرجع Refernce لقاعدة البيانات البعيده التى نود الاستعلام منها ... و لكن كيف ذلك ؟

الخوادم المرتبطه Linked Servers

الخوادم المرتبطه هى خوادم وهميه مجرد رابط لقاعدة بيانات على خادم Server اخر بعيد

كيفية اضافة Linked Server

1 - باستخدام ال T-SQL

sp_addlinkedserver
@server = "Mserver",
@srvproduct = "Access 2000",
@Provider = "Microsoft.Jet.OLEDB.4.0",
@datasrc ="c:\Test.mdb"

فى حالة الربط ب MS SSQL Server ستقوم اولاً بانشاء Logins للاتصال بهذا الخادم

exec sp_addlinkedsrvlogin @rmtsrvname = "Mserver",
@useself = "false",
@locallogin = "sa",
@rmtuser = "Admin",
@rmtpassword = password

2 - باستخدام ال Enterprise Manager

- من ال Enterprise Manager اختر Security

- ستجد لديك Linked Servers قم بالضغط بالزر الايمن ثم قم باختيار Add new Linked Server ستضع اسم ال linked server ثم من خاصية other data source باختيار ال provider فى حالة ما إذا كان المصدر ليس sql server و من خاصية ال data source ستقوم بكتابة المسار كامل لقاعدة البيانات (اكسس للتبسيط)

- اضغط Ok

استخدام الاستعلامات الموزعه

لدينا 3 طرق استخدام ال openquery او استخدام عبارة T-SQL عاديه او openrowset

استخدام عبارة ال T-SQL تتم كالاتى :

select field1,field2
from linked_server_name ... mytable

الثلاث نقاط (...) لا تحذفهم لان الاستعلام مكون من 4 اجزاء Four Parts Name

استخدام ال openquery تتم كالاتى :

SELECT *
FROM OPENQUERY (linked_server_name, 'SELECT field1, field2 FROM mytable')

استخدام ال openrowset تتم كالاتى :

SELECT field1, field2
FROM OPENROWSET ('Microsoft.jet.oledb.4.0', 'C:\Test1.mdb';
'usernamehere'; 'passwordhere', mytable)

استخدام الاستعلامات الموزعه مع لغات البرمجه

فكرة استخدام الاستعلامات الموزعه داخل لغه مثل الفيجوال بيسك مثلاً ستكون كالتالى:

(المثال منقول من هنا )

Dim cn As ADODB.Connection

Set cn = New ADODB.Connection
cn.Open "Provider=SQLOLEDB;Data Source=(local);Initial Catalog=master;User " _
    & "Id=sa;Password=;"
cn.Execute "EXEC sp_addlinkedserver 'MyLinkedServerName', 'Jet 4.0', " _
    & "'Microsoft.Jet.OLEDB.4.0', 'c:\program files\microsoft " _
    & "office\office\samples\northwind.mdb'"
cn.Execute "EXEC sp_addlinkedsrvlogin ' MyLinkedServerName ', FALSE, NULL, " _
    & "'admin', ''"
cn.Close
Set cn = Nothing

للاتصال بقاعدة البيانات SQL Server فى حالتنا واضافة ال Linked Server لقاعدة بيانات اكسس

لتنفيذ الاستعلام الموزع بالثلاث طرق سيكون الكود كالاتى

Dim rs As ADODB.Recordset
Dim cn As ADODB.Connection
Dim SQL As String

Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset

' the OPENQUERY function
SQL = " Select a.* from OPENQUERY(MyLinkedServerName, 'Select * from " _
    & "Customers') a"

' the OPENROWSET function
SQL = "SELECT * From OPENROWSET('Microsoft.Jet.OLEDB.4.0','c:\program " _
    & "files\microsoft office\office\samples\northwind.mdb'; 'Admin';'', " _
    & "Customers)"

' the four-part syntax
SQL = "Select * from MyLinkedServerName...Customers"
cn.CursorLocation = adUseClient
cn.Open "Provider=SQLOLEDB;Data Source=(local);Initial Catalog=master;User " _
    & "Id=sa;Password=;"
rs.Open SQL, cn, adOpenStatic, adLockReadOnly
' ...
rs.Close
set rs = Nothing
cn.Close
Set cn = Nothing

* للتعليق على المقاله من هنا

مصادر اخرى يمكنك الرجوع إليها لمزيد من المعرفه

كتاب الامتحان 70-229 الخاص بتصميم وتطبيق قواعد البيانات على SQL Server

Distributed Queries

مواضيع ذات علاقه بالموضوع :

استدعاء إجراء اوراكل من خلال SQL Server باستخدام خادم الاتصال

تم تعديل هذه المشاركة بواسطة طارق إبراهيم في 16 أبريل 2005 في 14:28

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

هذا الموضوع مغلق.

مواضيع مشابهة