Linked Server in SQL Server
مفهوم لینک سرور : واکشی اطلاعات از سرور دیگری به سرور جاری
برخی اوغات نیاز است که در حین اجرای کوئری اطلاعاتی را از سرور دیگری واکشی کرده و در کوئری خود استفاده کنیم ، لینک سرور در اصل پل ارتباطی مابین دو سرور بوده جهت انتقال اطلاعاتی که امکان انتقال دائم به سرور جاری را ندارد .
فرض کنیم دیتابیس Test1 با آدرس 10.0.50.10 موجود است که ما اسم آن را X می گذاریم .
و سرور دیگری با آدرس 10.0.50.20 نیز با دیتابیس Test2 وجود دارد که ما آنرا Y نامگذاری می کنیم.
برای واکشی دیتا از جدولی در سرور X و Join دیتای این جدول با جدولی در سرور Y از اسکریپت زیر استفاده می کنیم:
SELECT * FROM Student AS STD JOIN Course AS CRS
ON STD.Id = CRS.Id
در این کوئری جدول Course از سرور Y و جدول Student از سرور X است ولی این کوئری هیچ وقت اجرا نمی شود چون جدول Course را پیدا نمی کند ، می بایست از سرور Y به سرور X ارتباطی از نوع Linked Server ایجاد کرد .
نحوه ایجاد لینک سرور :
در بخش Object Explorer به سرور مورد نظر کانکت شده و در قسمت Server Objects بر روی Linked Server راست کلیک کرده و New Linked Server را می زنیم .
در کادر زیر نام لینک سرور را مشخص کرده و از قسمت Server Type یکی از گزینه های SQL server یا Other data source را جهت برقراری ارتباط انتخاب میکنیم .
در تب Security دسترسی های لازمه جهت اتصال به سرور اول یا دوم را مشخص کرده و یوزر ها رو اضافه میکنیم .
گزینه Local Server Login to remote server login mappings :
در این گزینه می توان یک یا چند لاگین این سرور را با سرور دوم Map کرد .
گزینه For a login not defined in the list above.connections :
جهت تصمیم گیری = ایجاد لاگین هایی بوده که در لیست بالا وجود ندارد و میخواهند از لینک سرور استفاده کنند .
به ترتیب :
- Not be made : جلوگیری از اتصال هیچ گونه یوزر .
- Be made without using a security context : اتصال به صورت مهمان که به صورت پیش فرض غیر فعال است .
- Be made using the logins current security context : اتصال با لاگین خود با همان سطح دسترسی.
- Be made using this security context : در انتها اگر در لیست بالا موجود نبود با یوزر و پسووردی که در زیر تعیین می شود به سرور دیگر متصل شود .
در تب Server Option تنظیمات کلی مربوط به لینک سرور را می توان مشخص کرد ، مثال با فعال کردن RPC میتوان Stored Procedure ها را Call کرد .
ایجاد لینک سرور با اسکریپت :
با استفاده از پراسیجر زیر می توان لینک سرور ایجاد کرد :
sp_addlinkedserver 'TestLinkedServer', '', 'SQLNCLI', '.\ServerY'
توضیحات :
sp_addlinkedserver : نام پراسیجری است که برای ایجاد لینک سرور استفاده می شود .
پارامتر اول جهت نامگذاری لینک سرور می باشد .
پارامتر دوم Product Name می باشد .
پارامتر سوم Provider Name یا جایی که قرار است اطلاعات را از آن دریافت کنیم که در اینجا (SQL Native Client) یا SQLNCLI می باشد که البته می توان منابع داده را تغییر داده و از منبع غیر Sql مثل MySql,Oracle,Acces نیز استفاده کرد .
پارامتر چهارم نیز نام Instance و یا آدرس IP ارائه دهنده داده ای است که میخواهیم به آن متصل بشویم .
بعد از انجام این مراحل با استفاده از نام لینک سرور و جدول مورد نظر می توان دیتای سرور دوم را مشاهده کرد مانند اسکریپت زیر :
SELECT * FROM ServerY.DataBase.Student
در صورت نیاز به اتصال به سرور دوم با یوزر و پسوورد می توان از اسکریپت زیر استفاده کرد و نام کاربری و کلمه عبور دلخواه خود را وارد کرد .
sp_addlinkedsrvlogin 'MyServer',@rmtuser='user1', @rmtpassword='123456'
بعد از ایجاد لینک سرور میتوان به دو صورت زیر کوئری های موجود را در سرور دیگر ارسال و اجرا کرد .
1 – Distributed Query
روشی که در بالا استفاده کردیم روش Distributed Query بوده که به شکل زیر است :
SELECT * FROM ServerY.DataBase.Student
برای کوئری های ساده و بدون پیچیدگی خاصی می توان از این روش استفاده کرد
2 – OPENQUERY
برای ارسال کوئری های پیچیده به Remote Server می توان از این روش نیز استفاده کرد چرا که هزینه کمتری برای سرور دارد .
SELECT * from OPENQUERY([ServerY], 'SELECT * FROM [testDB].[dbo].[Student]')
در SQL Server، شما میتوانید از دو روش برای ایجاد لینک سرور استفاده کنید:
- استفاده از SQL Server Management Studio (SSMS):
- از منوی “Object Explorer” در SSMS، به مسیر “Server Objects > Linked Servers” بروید.
- روی “New Linked Server” کلیک کنید.
- در پنجره “New Linked Server”، در بخش “General”، نام سرور مقصد را در قسمت “Linked Server” وارد کنید.
- در بخش “Security”، وارد کردن اطلاعات احراز هویت برای سرور مقصد اختیاری است.
- در بخش “Server Options”، انتخاب کنید که چگونه به سرور مقصد متصل شود.
- برای ایجاد لینک، روی دکمه “OK” کلیک کنید.
- استفاده از دستورات T-SQL:
- برای ایجاد لینک با استفاده از دستور “sp_addlinkedserver”، از مثال زیر استفاده کنید:
EXEC sp_addlinkedserver
@server = 'MyLinkedServer',
@srvproduct = '',
@provider = 'SQLNCLI',
@datasrc = 'MyServer\MyInstance';
در مثال بالا، “MyLinkedServer” نام لینک سرور است، “MyServer\MyInstance” نام سرور مقصد است و “SQLNCLI” نام پروایدر OLE DB است که برای اتصال به SQL Server استفاده میشود.
سپس میتوانید از دستورات T-SQL مثل “SELECT” و “INSERT” برای دریافت و ذخیره اطلاعات از سرور مقصد استفاده کنید، به عنوان مثال:
SELECT * FROM MyLinkedServer.MyDatabase.dbo.MyTable
در این مثال، “MyLinkedServer” نام لینک سرور است، “MyDatabase” نام دیتابیس مقصد و “MyTable” نام جدولی است که میخواهید اطلاعات آن را دریافت کنید.
ایجاد لینک سرور و دریافت اطلاعات از سرور دیگر از طریق پروتکل HTTP یا HTTPS امکان پذیر است. برای ایجاد لینک سرور، آدرس IP سرور را وارد کرده و به این آدرس پورت مورد نظر را اضافه کنید. به عنوان مثال، اگر آدرس IP سرور 192.168.1.100 و پورت 8080 باشد، لینک سرور به صورت زیر خواهد بود:
سپس با استفاده از این لینک میتوانید اطلاعات مورد نیاز خود را از سرور دریافت کنید، به طور مثال با استفاده از درخواست GET یا POST. برای مثال، درخواست GET میتواند به صورت زیر باشد:
GET /path/to/resource HTTP/1.1 Host: 192.168.1.100:8080
در این درخواست، مسیر منبع در مسیر /path/to/resource قرار دارد و آدرس سرور و پورت آن به عنوان میزبان درخواست در هدر ارسال میشود. سپس سرور به درخواست پاسخ میدهد و اطلاعات مورد نظر را ارسال میکند.
ایجاد لینک سرور از SQL Server به اوراکل :
برای اتصال از یک سرور SQL Server به یک پایگاه داده Oracle، شما به دو روش اصلی میتوانید اقدام کنید:
1. **استفاده از ODBC (Open Database Connectivity):**
این یک استاندارد مشترک برای اتصال به پایگاههای داده مختلف است. برای این منظور باید مراحل زیر را انجام دهید:
– **نصب ODBC Driver برای Oracle:** ابتدا باید ODBC Driver مربوط به پایگاه داده Oracle را بر روی سرور SQL Server خود نصب کنید.
– **تنظیم منبع داده ODBC (DSN – Data Source Name):** سپس باید یک منبع داده ODBC با تنظیمات مورد نیاز برای اتصال به پایگاه داده Oracle ایجاد کنید. این تنظیمات شامل نام سرور Oracle، پورت، نام کاربری و رمز عبور میشود.
– **استفاده از منبع داده ODBC در SQL Server:** حالا میتوانید با استفاده از منبع داده ODBC ایجاد شده، از SQL Server به پایگاه داده Oracle متصل شوید و دستورات مورد نیاز خود را اجرا کنید.
2. **استفاده از Linked Server در SQL Server:**
این روش به شما این امکان را میدهد که یک لینک مستقیم به سرور Oracle از داخل SQL Server ایجاد کنید. برای این منظور:
– **نصب Oracle Provider for OLE DB:** ابتدا باید Oracle Provider for OLE DB را بر روی سرور SQL Server خود نصب کنید.
– **ساخت Linked Server:** سپس باید با استفاده از دستورات Transact-SQL یک Linked Server به Oracle ایجاد کنید. در این Linked Server، اطلاعات مورد نیاز برای اتصال به پایگاه داده Oracle را تنظیم میکنید.
– **استفاده از Linked Server در کوئریها:** حالا میتوانید با استفاده از Linked Server ایجاد شده، دستوراتی را که به پایگاه داده Oracle نیاز دارید، در کوئریهای SQL Server خود استفاده کنید.
هر دو روش بالا نیازمند تنظیمات دقیق و دانش فنی در زمینههای Oracle و SQL Server هستند. قبل از انجام هر گونه تغییری در تنظیمات سرورهایتان، بهتر است از تیمهای فنی متخصص مشورت کنید تا از ایجاد مشکلات ناخواسته جلوگیری شود.
نحوه ایجاد لینک سرور از SQL Server به PostgreSQL
برای اتصال از سرور SQL Server به PostgreSQL، میتوانید از Linked Server در SQL Server استفاده کنید. این روش به شما امکان ایجاد لینک مستقیم به سرور PostgreSQL از داخل SQL Server را میدهد. در ادامه، نحوه انجام این کار را شرح میدهم:
1. **نصب ODBC Driver برای PostgreSQL:**
قبل از شروع، باید ODBC Driver مربوط به PostgreSQL را بر روی سرور SQL Server نصب کنید.
2. **ساخت Linked Server:**
پس از نصب ODBC Driver، مراحل زیر را برای ایجاد Linked Server به PostgreSQL انجام دهید:
– با استفاده از SQL Server Management Studio یا ابزار مدیریت دیگر، به SQL Server خود وارد شوید.
– در شیوهنامهها (Object Explorer)، روی دیتابیس مورد نظر راست کلیک کرده و “Tasks” را انتخاب کنید. سپس بر روی “New Linked Server…” کلیک کنید.
– در پنجرهای که باز میشود، بخش “General” را انتخاب کنید و نام Linked Server را وارد کنید.
– از منوی “Server Type”، “Other Data Source” را انتخاب کنید.
– در بخش “Provider”، “Microsoft OLE DB Provider for ODBC Drivers” را انتخاب کنید.
– در بخش “Product name”، “PostgreSQL” را وارد کنید.
– در بخش “Data source”، نام DSN مورد استفاده را انتخاب کنید. این DSN باید با تنظیمات ODBC برای PostgreSQL ایجاد شده باشد.
– در بخش “Provider String”، رشتهای را وارد کنید که به صورت “DSN=DSN_Name” باشد (DSN_Name باید با نام DSN ایجاد شده جایگزین شود).
– در بخش “Location”، اطلاعات محل سرور PostgreSQL را وارد کنید.
– بر روی تب “Security” رفته و اطلاعات ورود به PostgreSQL را وارد کنید.
– بعد از تکمیل تنظیمات، روی “OK” کلیک کنید تا Linked Server ایجاد شود.
3. **استفاده از Linked Server در کوئریها:**
حالا با استفاده از Linked Server ایجاد شده، میتوانید کوئریهایی را که به PostgreSQL نیاز دارید، در کوئریهای SQL Server خود استفاده کنید. به عنوان مثال:
SELECT * FROM [LinkedServerName].[DatabaseName].[SchemaName].[TableName];
در اینجا، “LinkedServerName” نام Linked Server ایجاد شده، “DatabaseName” نام دیتابیس PostgreSQL، “SchemaName” نام اسکیمای مورد نظر و “TableName” نام جدول مورد نظر در PostgreSQL است.
مطمئن شوید که تنظیمات امنیتی و دسترسیهای لازم را برای اتصال به PostgreSQL در نظر بگیرید. همچنین توجه داشته باشید که این توصیفات ممکن است با نسخههای مختلف ابزارها یا سیستمهای مدیریت پایگاه داده متفاوت باشد، بنابراین بهتر است مستندات مربوط به نسخههای استفادهشده را بررسی کنید.
نحوه ایجاد لینک سرور از SQL Server به DB2 :
برای اتصال از سرور SQL Server به پایگاه داده IBM DB2، میتوانید از Linked Server در SQL Server استفاده کنید. این روش به شما امکان ایجاد لینک مستقیم به سرور DB2 از داخل SQL Server را میدهد. در ادامه، نحوه انجام این کار را شرح میدهم:
1. **نصب ODBC Driver برای DB2:**
قبل از هر چیز، باید ODBC Driver مربوط به DB2 را بر روی سرور SQL Server نصب کنید.
2. **ساخت Linked Server:**
پس از نصب ODBC Driver، مراحل زیر را برای ایجاد Linked Server به DB2 انجام دهید:
– با استفاده از SQL Server Management Studio یا ابزار مدیریت دیگر، به SQL Server خود وارد شوید.
– در شیوهنامهها (Object Explorer)، روی دیتابیس مورد نظر راست کلیک کرده و “Tasks” را انتخاب کنید. سپس بر روی “New Linked Server…” کلیک کنید.
– در پنجرهای که باز میشود، بخش “General” را انتخاب کنید و نام Linked Server را وارد کنید.
– از منوی “Server Type”، “Other Data Source” را انتخاب کنید.
– در بخش “Provider”، “Microsoft OLE DB Provider for ODBC Drivers” را انتخاب کنید.
– در بخش “Product name”، “IBM ODBC Driver for DB2” را وارد کنید.
– در بخش “Data source”، نام DSN مورد استفاده را انتخاب کنید. این DSN باید با تنظیمات ODBC برای DB2 ایجاد شده باشد.
– در بخش “Provider String”، رشتهای را وارد کنید که به صورت “DSN=DSN_Name” باشد (DSN_Name باید با نام DSN ایجاد شده جایگزین شود).
– در بخش “Location”، اطلاعات محل سرور DB2 را وارد کنید.
– بر روی تب “Security” رفته و اطلاعات ورود به DB2 را وارد کنید.
– بعد از تکمیل تنظیمات، روی “OK” کلیک کنید تا Linked Server ایجاد شود.
3. **استفاده از Linked Server در کوئریها:**
حالا با استفاده از Linked Server ایجاد شده، میتوانید کوئریهایی را که به DB2 نیاز دارید، در کوئریهای SQL Server خود استفاده کنید. به عنوان مثال:
SELECT * FROM [LinkedServerName].[DatabaseName].[SchemaName].[TableName];
در اینجا، “LinkedServerName” نام Linked Server ایجاد شده، “DatabaseName” نام دیتابیس DB2، “SchemaName” نام اسکیمای مورد نظر و “TableName” نام جدول مورد نظر در DB2 است.
همچنین توجه داشته باشید که تنظیمات امنیتی و دسترسیهای لازم را برای اتصال به DB2 در نظر بگیرید. همچنین توصیه میشود که مستندات مربوط به نسخههای استفادهشده را بررسی کرده و با دقت تنظیمات را انجام دهید.
دیدگاه ها 1