यदि आपको किसी लिंक किए गए सर्वर पर एक तालिका बनाने की आवश्यकता है, तो आप इसे सीधे दूरस्थ सर्वर पर कर सकते हैं, या आप इसे अपने स्थानीय सर्वर से एक स्क्रिप्ट चलाकर कर सकते हैं।
लिंक किए गए सर्वर पर तालिका बनाने के लिए टी-एसक्यूएल का उपयोग करने के दो तरीके यहां दिए गए हैं।
दोनों तरीके EXECUTE
. का इस्तेमाल करते हैं /EXEC
बयान। लेकिन प्रत्येक एक अलग दृष्टिकोण का उपयोग करता है।
पूर्वापेक्षा
किसी लिंक किए गए सर्वर पर संग्रहीत कार्यविधियों को निष्पादित करने के लिए आवश्यक है कि आप RPC आउट को सक्षम करें (यदि यह पहले से सक्षम नहीं है)।
sys.servers
. को क्वेरी करके आप जांच सकते हैं कि RPC आउट सक्षम है या नहीं कैटलॉग व्यू।
निम्न कोड Homer
. नामक लिंक्ड सर्वर पर RPC आउट को सक्षम बनाता है :
EXEC sp_serveroption 'MyLinkedServer', 'rpc out', 'true';
आरपीसी आउट सक्षम होने पर, हम आगे बढ़ सकते हैं और टेबल बना सकते हैं।
विधि 1
हमारा पहला तरीका AT
. का उपयोग करना है एक लिंक किए गए सर्वर को निर्दिष्ट करने के लिए तर्क जिसके लिए कोड चलाना है। यह सिंटैक्स हमें लिंक किए गए सर्वर को पास-थ्रू कमांड भेजने की अनुमति देता है।
यह इस प्रकार है:
EXEC ('
USE [Pets];
CREATE TABLE [dbo].[Cats](
[CatId] [int] IDENTITY(1,1) NOT NULL,
[CatName] [varchar](60) NULL
) ON [PRIMARY];
') AT Homer;
यह Cats
. नामक एक तालिका बनाता है Pets
. में लिंक किए गए सर्वर पर डेटाबेस Homer
. कहा जाता है .
यह कोड स्पष्ट रूप से मानता है कि Pets
. नामक एक डेटाबेस है लिंक किए गए सर्वर पर। अगर ऐसा नहीं है, तो आपको पहले इसे बनाना होगा।
लिंक किया गया सर्वर नाम (Homer
इस मामले में) स्थानीय सर्वर में एक मौजूदा लिंक्ड सर्वर परिभाषा है। यह वास्तविक रिमोट सर्वर का नाम नहीं है।
विधि 2
हमारा दूसरा तरीका sp_executesql
. को निष्पादित करना है हमारे टी-एसक्यूएल स्टेटमेंट को पास करते समय रिमोट सर्वर पर सिस्टम स्टोर की गई प्रक्रिया।
इस तरह:
EXEC Homer.master.dbo.sp_executesql N'
USE [Pets];
CREATE TABLE [dbo].[Dogs](
[DogId] [int] IDENTITY(1,1) NOT NULL,
[DogName] [nvarchar](255) NULL,
[GoodDog] [bit] NULL
) ON [PRIMARY];
';
तो भले ही वाक्य रचना अलग है, परिणाम वही है। साथ ही, CREATE TABLE
लिंक किए गए सर्वर तक पहुँचने के लिए उपयोग की जाने वाली विधि की परवाह किए बिना सिंटैक्स नहीं बदलता है।
विवरण को एक चर के रूप में पास करें
आप CREATE TABLE
. भी पास कर सकते हैं EXEC
. के चर के रूप में कथन बयान।
यदि आपके पास बनाने के लिए बहुत सारी टेबल और/या अन्य ऑब्जेक्ट हैं तो यह उपयोगी हो सकता है।
यहां पहले सिंटैक्स का उपयोग करने वाला एक उदाहरण दिया गया है:
DECLARE @tsql nvarchar(max);
SET @tsql = '
USE [Pets];
CREATE TABLE [dbo].[Cats](
[CatId] [int] IDENTITY(1,1) NOT NULL,
[CatName] [varchar](60) NULL
) ON [PRIMARY];
CREATE TABLE [dbo].[Dogs](
[DogId] [int] IDENTITY(1,1) NOT NULL,
[DogName] [nvarchar](255) NULL,
[GoodDog] [bit] NULL
) ON [PRIMARY];
';
EXEC (@tsql) AT Homer;
और यहाँ दूसरे सिंटैक्स का उपयोग करने के बराबर है:
DECLARE @tsql nvarchar(max);
SET @tsql = '
USE [Pets];
CREATE TABLE [dbo].[Cats](
[CatId] [int] IDENTITY(1,1) NOT NULL,
[CatName] [varchar](60) NULL
) ON [PRIMARY];
CREATE TABLE [dbo].[Dogs](
[DogId] [int] IDENTITY(1,1) NOT NULL,
[DogName] [nvarchar](255) NULL,
[GoodDog] [bit] NULL
) ON [PRIMARY];
';
EXEC Homer.master.dbo.sp_executesql @tsql;