यदि आप स्वयं को SQL सर्वर में सभी लिंक किए गए सर्वरों की सूची प्राप्त करने के लिए Transact-SQL का उपयोग करने की आवश्यकता महसूस करते हैं, तो ऐसा करने के लिए आप नीचे दो तरीके अपना सकते हैं।
पहले उदाहरण में मैं sp_linkedservers
. का उपयोग करता हूं लिंक किए गए सर्वर को वापस करने के लिए सिस्टम संग्रहीत प्रक्रिया। दूसरे उदाहरण में मैं sys.servers
. का उपयोग करता हूं सिस्टम कैटलॉग व्यू।
उदाहरण 1 - sp_linkedservers
संग्रहित प्रक्रिया
sp_linkedservers
सिस्टम संग्रहीत कार्यविधि विशेष रूप से स्थानीय सर्वर में परिभाषित लिंक किए गए सर्वरों की सूची वापस करने के लिए डिज़ाइन की गई है।
इसे निष्पादित करने के लिए, यह करें:
EXEC sp_linkedservers;
परिणाम:
+--------------+--------------------+---------------+------------------+----------------------+----------------+-----------+ | SRV_NAME | SRV_PROVIDERNAME | SRV_PRODUCT | SRV_DATASOURCE | SRV_PROVIDERSTRING | SRV_LOCATION | SRV_CAT | |--------------+--------------------+---------------+------------------+----------------------+----------------+-----------| | c1b060f68fcb | SQLNCLI | SQL Server | c1b060f68fcb | NULL | NULL | NULL | | Homer | SQLNCLI | | 172.17.0.2,1433 | NULL | NULL | NULL | +--------------+--------------------+---------------+------------------+----------------------+----------------+-----------+
इस मामले में मुझे दो पंक्तियां मिलती हैं। दरअसल, पहली पंक्ति मेरा स्थानीय सर्वर है। स्थानीय सर्वर में "होमर" नामक एक लिंक किया गया सर्वर होता है, और यह दूसरी पंक्ति में प्रदर्शित होता है।
उदाहरण 2 - sys.servers
सिस्टम दृश्य
sys.servers
सिस्टम कैटलॉग दृश्य में पंजीकृत प्रति लिंक या दूरस्थ सर्वर के लिए एक पंक्ति होती है, और स्थानीय सर्वर के लिए एक पंक्ति होती है जिसमें
server_id
होता है। का 0
।
यह दृश्य कुछ कॉलम लौटाता है, इसलिए मैं इस उदाहरण में परिणाम प्रदर्शित करने के लिए लंबवत आउटपुट का उपयोग करूंगा।
उदाहरण:
SELECT * FROM sys.servers;
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
-[ RECORD 1 ]------------------------- server_id | 0 name | c1b060f68fcb product | SQL Server provider | SQLNCLI data_source | c1b060f68fcb location | NULL provider_string | NULL catalog | NULL connect_timeout | 0 query_timeout | 0 is_linked | 0 is_remote_login_enabled | 1 is_rpc_out_enabled | 1 is_data_access_enabled | 0 is_collation_compatible | 0 uses_remote_collation | 1 collation_name | NULL lazy_schema_validation | 0 is_system | 0 is_publisher | 0 is_subscriber | 0 is_distributor | 0 is_nonsql_subscriber | 0 is_remote_proc_transaction_promotion_enabled | 0 modify_date | 2019-09-27 00:30:06.820 is_rda_server | 0 -[ RECORD 2 ]------------------------- server_id | 1 name | Homer product | provider | SQLNCLI data_source | 172.17.0.2,1433 location | NULL provider_string | NULL catalog | NULL connect_timeout | 0 query_timeout | 0 is_linked | 1 is_remote_login_enabled | 0 is_rpc_out_enabled | 0 is_data_access_enabled | 1 is_collation_compatible | 0 uses_remote_collation | 1 collation_name | NULL lazy_schema_validation | 0 is_system | 0 is_publisher | 0 is_subscriber | 0 is_distributor | 0 is_nonsql_subscriber | 0 is_remote_proc_transaction_promotion_enabled | 1 modify_date | 2019-09-29 10:31:36.570 is_rda_server | 0
दृश्य के साथ आपको बहुत अधिक जानकारी मिलती है।
बेशक, आप केवल उन्हीं कॉलमों को निर्दिष्ट कर सकते हैं जिनमें आपकी रुचि है।
उदाहरण के लिए:
SELECT name, provider, data_source FROM sys.servers;
परिणाम:
+--------------+------------+-----------------+ | name | provider | data_source | |--------------+------------+-----------------| | c1b060f68fcb | SQLNCLI | c1b060f68fcb | | Homer | SQLNCLI | 172.17.0.2,1433 | +--------------+------------+-----------------+
और यदि आप नहीं चाहते कि स्थानीय सर्वर वापस आए, तो आप WHERE is_linked = 1
जोड़ सकते हैं आपकी क्वेरी के लिए:
SELECT name, provider, data_source FROM sys.servers WHERE is_linked = 1;
परिणाम:
+--------+------------+-----------------+ | name | provider | data_source | |--------+------------+-----------------| | Homer | SQLNCLI | 172.17.0.2,1433 | +--------+------------+-----------------+