مشاهده و مدیریت (metadata) Linked Servers در SQL Server: راهنمای جامع
Linked Serverها در SQL Server قابلیت قدرتمندی را برای ارتباط و کوئری گرفتن از منابع دادهای خارجی، چه در همان اینستنس SQL Server و چه در سرورهای جداگانه، فراهم میکنند. مدیریت و عیبیابی این ارتباطات نیازمند درک عمیق (metadata) مربوط به آنها است. این مقاله به شما کمک میکند تا با روشهای مختلف مشاهده و بررسی Linked Serverها آشنا شوید و کنترل بیشتری بر محیط دادهای خود داشته باشید.
یکی از اولین گامها برای مدیریت Linked Serverها، شناسایی تمامی سرورهای پیوندخوردهای است که در اینستنس SQL Server شما پیکربندی شدهاند. این کار را میتوان با استفاده از کاتالوگ ویو `sys.servers` انجام داد. این ویو اطلاعات جامعی درباره تمامی سرورهای محلی و Linked Serverها ارائه میدهد.
برای مشاهده تمامی Linked Serverهای فعال، میتوانید از کوئری زیر استفاده کنید:
SELECT *
FROM sys.servers
WHERE is_linked = 1;
این کوئری تمام ستونها را از `sys.servers` برمیگرداند و نتایج را به سرورهایی فیلتر میکند که به عنوان Linked Server (`is_linked = 1`) مشخص شدهاند. این شامل نام سرور، ID، و سایر مشخصات پیکربندی است.
روش دیگری برای مشاهده لیست Linked Serverها، استفاده از پروسیجر ذخیره شده `sp_linkedservers` است. این پروسیجر یک مجموعه نتایج سادهتر و متمرکزتر بر روی نام Linked Serverها و اطلاعات مرتبط با آنها برمیگرداند.
برای اجرای این پروسیجر و مشاهده لیست Linked Serverها، دستور زیر را به کار ببرید:
EXEC sp_linkedservers;
این دستور لیستی از Linked Serverها را به همراه provider name، product name و timeout نمایش میدهد.
برای کسب اطلاعات دقیقتر و جامعتر درباره یک Linked Server خاص، پروسیجر ذخیره شده `sp_helpserver` ابزار بسیار مفیدی است. این پروسیجر جزئیات بیشتری از جمله گزینههای پیکربندی، security options و وضعیت سرور را ارائه میدهد.
برای مشاهده جزئیات یک سرور خاص (مثلاً سروری با نام ‘YourLinkedServerName’)، دستور زیر را اجرا کنید:
EXEC sp_helpserver 'YourLinkedServerName';
توجه: به جای ‘YourLinkedServerName’ باید نام واقعی Linked Server خود را جایگزین کنید. این کوئری اطلاعاتی مانند `server_id`, `product`, `provider`, `data_source` و `location` را نمایش میدهد.
مدیریت امنیت یکی از جنبههای حیاتی Linked Serverها است. شما نیاز دارید بدانید کدام لاگینها برای دسترسی به Linked Serverها پیکربندی شدهاند. کاتالوگ ویو `sys.linked_logins` اطلاعاتی در مورد نگاشت لاگینهای محلی به لاگینهای راه دور برای Linked Serverها ارائه میدهد.
برای مشاهده تمامی لاگینهای پیکربندی شده برای Linked Serverها، از کوئری زیر استفاده کنید:
SELECT *
FROM sys.linked_logins;
این کوئری اطلاعاتی مانند `server_id`, `local_principal_id`, `uses_self_credential` و `remote_name` را نشان میدهد و به شما کمک میکند تا مجوزهای دسترسی را بررسی کنید.
پروسیجر `sp_helplinkedsrvlogin` دیدگاه دقیقتری نسبت به `sys.linked_logins` در مورد نگاشتهای لاگین برای یک Linked Server خاص ارائه میدهد. این پروسیجر میتواند اطلاعات مفیدی را برای عیبیابی مشکلات دسترسی فراهم کند.
برای مشاهده اطلاعات لاگین برای یک Linked Server خاص (مثلاً ‘YourLinkedServerName’)، دستور زیر را اجرا کنید:
EXEC sp_helplinkedsrvlogin 'YourLinkedServerName';
همانند `sp_helpserver`، ‘YourLinkedServerName’ را با نام Linked Server خود جایگزین کنید تا جزئیات مربوط به نحوه احراز هویت لاگینهای مختلف برای دسترسی به آن Linked Server را ببینید.
`sys.remote_servers` نیز یک کاتالوگ ویو است که اطلاعاتی در مورد سرورهای راه دور (remote servers) ذخیره میکند. گرچه Linked Serverها نیز نوعی سرور راه دور هستند، `sys.remote_servers` ممکن است اطلاعات کمی متفاوتی را بسته به پیکربندیهای قدیمیتر یا خاصتر ارائه دهد.
برای مشاهده اطلاعات از `sys.remote_servers`، کوئری زیر را اجرا کنید:
SELECT *
FROM sys.remote_servers;
توضیح: معمولاً `sys.servers` برای Linked Serverهای مدرن ترجیح داده میشود، اما این ویو نیز میتواند در برخی سناریوها مفید باشد.
پیکربندیهای مربوط به Linked Serverها در سطح سرور قابل مشاهده هستند. این تنظیمات میتوانند بر عملکرد و رفتار Linked Serverها تأثیر بگذارند. کاتالوگ ویو `sys.configurations` به شما امکان میدهد این تنظیمات را مشاهده کنید.
برای بررسی تنظیمات مربوط به Linked Serverها، کوئری زیر را به کار ببرید:
SELECT *
FROM sys.configurations
WHERE name LIKE '%linked server%';
این کوئری تمام تنظیمات سیستمی را که در نامشان عبارت ‘linked server‘ وجود دارد، از جمله تنظیماتی مانند ‘Linked Server connection timeout’ و ‘remote proc trans’, نمایش میدهد.
در برخی موارد برای عیبیابی مشکلات پیچیده، ممکن است نیاز به فعال کردن Trace Flagهای خاص برای Linked Serverها باشد. Trace Flag 7300 به طور خاص برای عیبیابی Linked Serverها استفاده میشود و جزئیات بیشتری در مورد نحوه پردازش کوئریها فراهم میکند.
برای بررسی وضعیت Trace Flag 7300، دستور زیر را اجرا کنید:
DBCC TRACESTATUS (7300, -1);
این دستور وضعیت Trace Flag 7300 را در سطح سراسری (-1) گزارش میدهد و به شما کمک میکند تا بفهمید آیا برای اهداف عیبیابی فعال است یا خیر.
هنگام کار با Linked Serverها، برای کوئری گرفتن از دادههای موجود در سرور راه دور، از روشهای مختلفی مانند `OPENQUERY` یا استفاده از نام چهاربخشی (four-part naming) استفاده میشود. این روشها به شما امکان میدهند به جداول و ویوهای موجود در Linked Server دسترسی پیدا کنید.
مثال استفاده از نام چهاربخشی برای دسترسی به یک جدول در Linked Server:
SELECT *
FROM YourLinkedServerName.YourDatabaseName.YourSchemaName.YourTableName;
مثال استفاده از `OPENQUERY` برای اجرای یک کوئری دلخواه روی Linked Server:
SELECT *
FROM OPENQUERY(YourLinkedServerName, 'SELECT * FROM YourDatabaseName.YourSchemaName.YourTableName');
در هر دو مثال، باید ‘YourLinkedServerName’, ‘YourDatabaseName’, ‘YourSchemaName’ و ‘YourTableName’ را با مقادیر واقعی محیط خود جایگزین کنید. این کوئریها نحوه تعامل مستقیم با دادهها را از طریق Linked Server نشان میدهند.
کاتالوگ ویو `master.sys.servers` همانند `sys.servers` اطلاعاتی را در مورد Linked Serverها ارائه میدهد، اما با صراحت بیشتری نشان میدهد که این اطلاعات از دیتابیس `master` بازیابی میشوند. این میتواند در سناریوهایی که نیاز به اطمینان از منبع اطلاعات کاتالوگ ویو دارید، مفید باشد.
برای مشاهده Linked Serverها از `master.sys.servers`، از کوئری زیر استفاده کنید:
SELECT *
FROM master.sys.servers
WHERE is_linked = 1;
این کوئری نتیجهای مشابه با `SELECT * FROM sys.servers WHERE is_linked = 1;` تولید میکند، اما با تأکید بر اینکه اطلاعات از `master` database بازیابی شدهاند.
نتیجهگیری
مدیریت موثر Linked Serverها در SQL Server برای حفظ عملکرد، امنیت و قابلیت اطمینان سیستمهای توزیع شده ضروری است. با استفاده از کاتالوگ ویوها و پروسیجرهای ذخیرهشدهای که در این مقاله معرفی شدند، میتوانید به طور جامع متا دیتای Linked Serverهای خود را مشاهده و بررسی کنید. این دانش به شما امکان میدهد تا با اطمینان بیشتری عیبیابی کنید، پیکربندیها را بهینه سازید و امنیت محیط SQL Server خود را تضمین کنید. به یاد داشته باشید که بررسی منظم این متا دیتا بخش مهمی از نگهداری سالم و کارآمد پایگاه داده شماست.