در این آموزش ، سرفصل های متعددی بهمنظور تسلط بر مدیریت و استفاده از بانک های اطلاعاتی با استفاده از SQL Server پوشش داده می شود. برخی از مهم ترین مباحث شامل آشنایی با مفهوم سرورهای متصل (Linked Server) و نحوه پیاده سازی آن ، تعریف سرورهای متصل به سرور جاری از طریق محیط SQL Server Management Studio (SSMS) و برقراری ارتباط با سرورهای مختلف SQL Server و حتی سرورهای با انواع مختلف (مثل Oracle و MySQL) هستند.
بررسی و پیادهسازی Linked Server در SQL Server
در برخی مواقع، ممکن است هنگام اجرای یک کوئری، نیاز به واکشی داده از سرور دیگری داشته باشیم تا از آن در کوئری خود استفاده کنیم. Linked Server در SQL Server به عنوان پل ارتباطی بین دو سرور عمل میکند و این امکان را فراهم میکند تا دادههایی که امکان انتقال دائمی به سرور جاری را ندارند، به صورت موقت و در حین اجرای کوئری واکشی و مورد استفاده قرار گیرند.
فرض کنید که دو سرور با نامهای ServerA و ServerB داریم. ServerA دارای یک دیتابیس به نام DB1 با آدرس 192.168.1.10 و ServerB دارای دیتابیسی به نام DB2 با آدرس 192.168.1.20 است. حال اگر بخواهیم دادهای از جدول Student در دیتابیس DB1 موجود در ServerA را با دادهای از جدول Course در دیتابیس DB2 موجود در ServerB ادغام کنیم (Join کنیم)، باید از یک Linked Server استفاده کنیم.
SELECT *
FROM DB1.dbo.Student AS STD
JOIN DB2.dbo.Course AS CRS ON STD.Id = CRS.Id
با این حال، این کوئری به طور مستقیم قابل اجرا نیست؛ زیرا SQL Server نمیتواند بدون ایجاد Linked Server به جدول Course در ServerB دسترسی پیدا کند. برای رفع این مشکل، ابتدا باید یک Linked Server بین ServerA و ServerB ایجاد کنیم.
پس از ایجاد Linked Server، کوئریها میتوانند دادهها را از ServerB واکشی کرده و با دادههای موجود در ServerA ادغام کنند.
ایجاد لینک سرور (Linked Server) در SQL Server
لینک سرور در SQL Server به شما این امکان را میدهد تا به دادههای موجود در سرورهای دیگر دسترسی پیدا کنید و از آنها در کوئریهای خود استفاده نمایید. در ادامه، مراحل ایجاد لینک سرور و تنظیمات مرتبط با آن به تفصیل توضیح داده میشود:
- اتصال به سرور اصلی : در محیط SQL Server Management Studio (SSMS)، به سرور مورد نظر متصل شوید. از طریق Object Explorer، به بخش Server Objects بروید.
- ایجاد لینک سرور جدید : روی Linked Servers راست کلیک کرده و گزینه New Linked Server را انتخاب کنید.
- تعریف نام لینک سرور و نوع سرور : در قسمت Linked Server، نامی برای لینک سرور خود انتخاب کنید. در قسمت Server Type، بسته به نیاز خود یکی از دو گزینه SQL Server یا Other Data Source را انتخاب کنید. اگر سرور مورد نظر شما یک سرور SQL Server دیگر است، گزینه SQL Server را انتخاب کنید. برای دیگر منابع داده مانند Oracle، Access و غیره، گزینه Other Data Source را انتخاب کنید.
- تنظیمات امنیتی : در تب Security، دسترسیهای مورد نیاز را برای اتصال به سرور دیگر تنظیم کنید. شما میتوانید یک یا چند لاگین از سرور فعلی را با سرور دیگر Map کنید. این تنظیمات مشخص میکنند که کدام کاربران میتوانند از لینک سرور استفاده کنند و با چه سطح دسترسی.
- Local Server Login to Remote Server Login Mappings: این گزینه به شما اجازه میدهد که لاگینهای سرور اصلی را به لاگینهای سرور مقصد Map کنید.
- For a Login Not Defined in the List Above: این گزینه برای تصمیمگیری در مورد لاگینهایی است که در لیست بالا تعریف نشدهاند.
- Not be Made: جلوگیری از اتصال کاربران غیرمجاز.
- Be Made Without Using a Security Context: اتصال به صورت Guest که به صورت پیشفرض غیرفعال است.
- Be Made Using the Login’s Current Security Context: اتصال با لاگین فعلی و استفاده از همان سطح دسترسی.
- Be Made Using This Security Context: در صورت نبود لاگین در لیست بالا، با یوزر و پسووردی که در این بخش تعیین میشود، اتصال به سرور دیگر انجام میشود.
- تنظیمات مربوط به لینک سرور : در تب Server Options، تنظیمات کلی مربوط به لینک سرور را مشخص کنید. برای مثال، با فعال کردن گزینه RPC، میتوانید Stored Procedureها را از طریق لینک سرور فراخوانی کنید.
ایجاد لینک سرور با اسکریپت در SQL Server
ایجاد لینک سرور در SQL Server به شما امکان میدهد تا دادهها را از سرورهای دیگر واکشی کنید و در کوئریهای خود از آنها استفاده نمایید. در اینجا نحوه انجام این کار با استفاده از اسکریپت T-SQL و توضیحات کامل آمده است.
ایجاد لینک سرور با اسکریپت T-SQL :
میتوانید با استفاده از پراسیجر sp_addlinkedserver
یک لینک سرور ایجاد کنید. این پراسیجر به شما امکان میدهد که به سرورهای دیگر متصل شوید و دادههای آنها را در کوئریهای خود استفاده کنید.
EXEC sp_addlinkedserver
@server = ‘LinkedServerTest’,
@srvproduct = ”,
@provider = ‘SQLNCLI’,
@datasrc = ‘Server123\InstanceABC’;
توضیحات :
sp_addlinkedserver
: این پراسیجر برای ایجاد لینک سرور استفاده میشود.@server
: نامی که به لینک سرور اختصاص میدهید. در این مثال، نام لینک سرور ‘LinkedServerTest’ است.@srvproduct
: محصول سرور که میتواند خالی بماند.@provider
: نام پروایدر OLE DB که برای اتصال استفاده میشود. در اینجاSQLNCLI
برای اتصال به SQL Server استفاده شده است.@datasrc
: آدرس یا نام سرور و اینستنس مقصد. در این مثال ‘Server123\InstanceABC’ نام سرور مقصد است.
واکشی دادهها از لینک سرور
پس از ایجاد لینک سرور، میتوانید دادهها را از سرور دیگر واکشی کنید و در کوئریهای خود از آنها استفاده کنید.
مثال :
SELECT *
FROM LinkedServerTest.DatabaseName.SchemaName.TableName;
در این کوئری، ‘LinkedServerTest’ نام لینک سرور، ‘DatabaseName’ نام دیتابیس، ‘SchemaName’ نام اسکیمای جدول و ‘TableName’ نام جدولی است که میخواهید دادهها را از آن واکشی کنید.
اتصال با یوزرنیم و پسورد
اگر نیاز به اتصال به سرور دوم با یوزرنیم و پسورد خاصی دارید، میتوانید از پراسیجر sp_addlinkedsrvlogin
استفاده کنید.
مثال :
EXEC sp_addlinkedsrvlogin
@rmtsrvname = ‘LinkedServerTest’,
@useself = ‘false’,
@rmtuser = ‘username’,
@rmtpassword = ‘password123’;
اجرای کوئریهای پیچیده با OPENQUERY
برای اجرای کوئریهای پیچیده و کاهش بار روی سرور اصلی، میتوانید از OPENQUERY
استفاده کنید.
مثال :
SELECT *
FROM OPENQUERY([LinkedServerTest], ‘SELECT * FROM DatabaseName.dbo.TableName WHERE ColumnName = ”Value”’);
نحوه ایجاد لینک سرور با SQL Server Management Studio (SSMS)
- در محیط SSMS، به Object Explorer بروید و به سرور مورد نظر متصل شوید.
- به مسیر Server Objects > Linked Servers بروید.
- روی New Linked Server کلیک کنید.
- نام سرور مقصد را در قسمت Linked Server وارد کنید.
- در تب Security، اطلاعات احراز هویت را وارد کنید.
- تنظیمات Server Options را انجام دهید.
- برای نهایی کردن، روی OK کلیک کنید.
ایجاد لینک سرور از SQL Server به PostgreSQL
برای اتصال از SQL Server به PostgreSQL از طریق Linked Server، مراحل زیر را میتوانید دنبال کنید:
- نصب ODBC Driver برای PostgreSQL: ابتدا باید ODBC Driver مربوط به PostgreSQL را روی سرور SQL Server نصب کنید. این درایور به SQL Server اجازه میدهد تا با استفاده از ODBC با سرور PostgreSQL ارتباط برقرار کند.
- ساخت Linked Server: پس از نصب ODBC Driver، میتوانید یک Linked Server ایجاد کنید تا ارتباط مستقیم بین SQL Server و PostgreSQL برقرار شود. مراحل زیر را انجام دهید:
- به SQL Server Management Studio (SSMS) متصل شوید و در Object Explorer به سرور SQL خود وصل شوید.
- روی Server Objects > Linked Servers راست کلیک کرده و 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 مربوط به PostgreSQL که قبلاً ایجاد کردهاید را وارد کنید.
- در Provider String، رشتهای به شکل
DSN=PostgreSQL_DSN
وارد کنید. - در بخش Location، آدرس یا اطلاعات سرور PostgreSQL را وارد کنید.
- تنظیمات امنیتی: به تب Security بروید و اطلاعات ورود به PostgreSQL (یوزرنیم و پسورد) را وارد کنید تا دسترسی مناسب به سرور PostgreSQL فراهم شود.
ایجاد Linked Server از SQL Server به Oracle
برای اتصال SQL Server به یک پایگاه داده Oracle، میتوانید از دو روش اصلی استفاده کنید: ODBC و Linked Server. هر دو روش نیازمند تنظیمات دقیق و آشنایی با هر دو پایگاه داده است.
1. استفاده از ODBC (Open Database Connectivity)این روش با استفاده از درایور ODBC برای اتصال به Oracle عمل میکند:
- نصب ODBC Driver برای Oracle : ابتدا باید ODBC Driver مربوط به Oracle را بر روی سرور SQL Server خود نصب کنید. این درایور ارتباط میان SQL Server و پایگاه داده Oracle را فراهم میکند.
- تنظیم منبع داده ODBC (DSN – Data Source Name) : یک DSN ایجاد کنید که شامل تنظیمات مربوط به اتصال به Oracle است، مانند نام سرور، پورت، نام کاربری و رمز عبور.
- استفاده از منبع داده ODBC در SQL Server : پس از ایجاد DSN، میتوانید از طریق SQL Server به Oracle متصل شوید و کوئریهای خود را اجرا کنید.
2. استفاده از Linked Server در SQL Serverروش دیگر استفاده از Linked Server است که به شما امکان اتصال مستقیم به Oracle از SQL Server را میدهد:
- نصب Oracle Provider for OLE DB: Oracle Provider for OLE DB را بر روی سرور SQL Server نصب کنید تا امکان اتصال OLE DB به Oracle فراهم شود.
- ایجاد Linked Server : با استفاده از SQL Server Management Studio (SSMS) یا دستورات Transact-SQL، یک Linked Server به Oracle ایجاد کنید. در این فرآیند، اطلاعات مربوط به اتصال به Oracle، مانند آدرس سرور، نام کاربری و رمز عبور وارد میشود.
سخن پایانی
ایجاد لینک سرور یک روش مؤثر برای دسترسی به داده های پایگاه های داده مختلف از طریق یک سرور مرکزی است. این فرآیند به مدیران پایگاه داده اجازه میدهد که به راحتی اطلاعات را از سرورهای مختلف واکشی کرده و آن ها را با یکدیگر ترکیب کنند. با استفاده از این قابلیت، میتوان کوئری های پیچیده را به سرورهای مختلف ارسال و نتایج را به صورت متمرکز مدیریت کرد. این رویکرد نه تنها به بهینه سازی فرآیندهای کاری کمک میکند، بلکه باعث افزایش کارایی و سرعت دسترسی به داده ها در محیط های گسترده و متنوع میشود.