किसी लिंक किए गए सर्वर पर डेटाबेस बनाने का एक तरीका है, बस उस सर्वर पर कूदना और इसे स्थानीय रूप से बनाना।
लेकिन आप शायद थोड़ा ठगा हुआ महसूस करेंगे यदि मैं इसे लिंक किए गए सर्वर पर डेटाबेस बनाने के "2 तरीकों" में से एक के रूप में शामिल करता हूं।
इसके अलावा, जबकि वह विकल्प ठीक है यदि आप इसे करने में सक्षम और इच्छुक हैं, तो यह आलेख आपको दिखाता है कि स्थानीय सर्वर पर कूदने के बिना, टी-एसक्यूएल का उपयोग करके इसे दूरस्थ रूप से कैसे किया जाए। साथ ही आपको यह तकनीक दूसरे सर्वर पर कूदने की तुलना में जल्दी मिल सकती है।
दोनों “2 तरीकों” में EXECUTE
. शामिल है स्टेटमेंट (जिसे छोटा भी किया जा सकता है EXEC
) हम इस कथन का उपयोग लिंक किए गए सर्वर पर कोड निष्पादित करने के लिए कर सकते हैं, और इसमें उस पर एक डेटाबेस बनाना शामिल है।
पूर्वापेक्षा
किसी लिंक किए गए सर्वर पर संग्रहीत कार्यविधियों को निष्पादित करने के लिए आवश्यक है कि आप RPC आउट को सक्षम करें (यदि यह पहले से सक्षम नहीं है)।
sys.servers
. को क्वेरी करके आप जांच सकते हैं कि RPC आउट सक्षम है या नहीं कैटलॉग व्यू।
निम्न कोड Homer
. नामक लिंक्ड सर्वर पर RPC आउट को सक्षम बनाता है :
EXEC sp_serveroption 'MyLinkedServer', 'rpc out', 'true';
एक बार यह सक्षम हो जाने पर, हम आगे बढ़ सकते हैं और डेटाबेस बना सकते हैं।
विधि 1
लिंक किए गए सर्वर पर डेटाबेस बनाने की पहली विधि यहां दी गई है।
EXEC ('CREATE DATABASE Pets') AT Homer;
इस उदाहरण में, मैं Pets
. नामक एक डेटाबेस बनाता हूं Homer
. नामक लिंक किए गए सर्वर पर ।
EXECUTE
/EXEC
कथन का उपयोग लिंक किए गए सर्वरों को पास-थ्रू कमांड भेजने के लिए किया जा सकता है।
ऐसा करने के लिए, EXECUTE
. के बाद कोष्ठक में पास-थ्रू कमांड शामिल करें /EXEC
कीवर्ड, उसके बाद AT LinkedServerName
. के साथ उसका पालन करें , जहां LinkedServerName
लिंक किए गए सर्वर का नाम है जिस पर आप डेटाबेस बनाना चाहते हैं।
इसलिए, हमें केवल अपनी CREATE TABLE
. को शामिल करना है इस कथन के तर्क के रूप में कथन।
ध्यान दें कि लिंक किया गया सर्वर नाम वह नाम है जिसे आपने लिंक सर्वर बनाते समय दिया था। यह रिमोट सर्वर का वास्तविक सर्वर नाम नहीं है।
विधि 2
दूसरी विधि पहले के समान है, इस मामले को छोड़कर हम sp_executesql
को अपना आदेश देते हैं दूरस्थ सर्वर पर सिस्टम संग्रहीत कार्यविधि।
EXEC Homer.master.dbo.sp_executesql N'CREATE DATABASE World;';
ऐसा करने के लिए, हमें चार-भाग के नाम का उपयोग करने की आवश्यकता है, जिसमें लिंक किए गए सर्वर का नाम शामिल है। अगर हमने ऐसा नहीं किया, तो हम sp_executesql
executing को क्रियान्वित कर देंगे दूरस्थ सर्वर के बजाय हमारे स्थानीय सर्वर पर।
विवरण को एक चर के रूप में पास करें
आप CREATE DATABASE
. भी पास कर सकते हैं EXEC
. के चर के रूप में कथन बयान।
इस तरह:
DECLARE @tsql nvarchar(max);
SET @tsql = 'CREATE DATABASE Pets';
EXEC (@tsql) AT Homer;
हालाँकि, यदि आप डेटाबेस पर स्विच करने और तालिकाएँ बनाने का प्रयास करते हैं, तो आप समस्याओं में भाग सकते हैं, भले ही आप GO
जोड़ते हैं सामान्य स्थानों में। ऐसा शायद इसलिए है क्योंकि GO
कीवर्ड वास्तव में टी-एसक्यूएल का हिस्सा नहीं है, और यह केवल कुछ उपयोगिताओं द्वारा पहचाना जाता है।
इसलिए, आपको टेबल बनाने के लिए एक अलग स्क्रिप्ट चलाने की आवश्यकता हो सकती है।