Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एसएसआईएस - स्थानांतरण के बाद रिकॉर्ड अपडेट करने के लिए फ़ोरैच लूप कंटेनर का उपयोग करना

शायद अब तक आपको अपने प्रश्न का उत्तर मिल गया होगा। यह उत्तर दूसरों की मदद करने के लिए है जो इस प्रश्न पर ठोकर खा सकते हैं। यहां एक संभावित विकल्प दिया गया है जिसका उपयोग SSIS का उपयोग करके डेटा स्थानांतरण को हल करने के लिए किया जा सकता है। मैंने मान लिया था कि आप अभी भी SSIS पैकेज से अपने सर्वर A और B दोनों की ओर इशारा करते हुए कनेक्शन स्ट्रिंग बना सकते हैं। अगर वह धारणा गलत है, तो कृपया मुझे बताएं ताकि मैं इस उत्तर को हटा सकूं। इस उदाहरण में, मैं SQL Server 2008 R2 का उपयोग कर रहा हूं बैक-एंड के रूप में। चूंकि मेरे पास दो सर्वर नहीं हैं, इसलिए मैंने अलग-अलग Schemas . में दो समान तालिकाएं बनाई हैं सर्वरए और सर्वरB .

चरण-दर-चरण प्रक्रिया:

  1. Connection manager . में SSIS के अनुभाग में, दो OLE DB कनेक्शन बनाएं, अर्थात् ServerA और सर्वरB . यह उदाहरण एक ही सर्वर को इंगित कर रहा है लेकिन आपके परिदृश्य में, कनेक्शन को आपके दो अलग-अलग सर्वरों को इंगित करने की आवश्यकता होगी। स्क्रीनशॉट देखें #1

  2. दो स्कीमा बनाएं ServerA और ServerB . तालिका बनाएं dbo.ItemInfo दोनों स्कीमा में। इन तालिकाओं के लिए स्क्रिप्ट बनाएं स्क्रिप्ट . के अंतर्गत दिए गए हैं खंड। फिर से, ये ऑब्जेक्ट केवल इस उदाहरण के लिए हैं।

  3. मैंने कुछ नमूना डेटा के साथ दोनों टेबलों को पॉप्युलेट किया है। तालिका ServerA.ItemInfo इसमें 2,222 rows हैं और तालिका ServerB.ItemInfo इसमें 10,000 rows शामिल हैं . प्रश्न के अनुसार, लापता 7,778 पंक्तियों को ServerB . से स्थानांतरित किया जाना चाहिए करने के लिए ServerA . स्क्रीनशॉट देखें #2

  4. SSIS पैकेज के कंट्रोल फ़्लो टैब पर, डेटा फ़्लो टास्क रखें जैसा कि स्क्रीनशॉट #3 में दिखाया गया है .

  5. डेटा प्रवाह टैब पर नेविगेट करने के लिए डेटा प्रवाह कार्य पर डबल-क्लिक करें और नीचे बताए अनुसार डेटा प्रवाह कार्य को कॉन्फ़िगर करें। सर्वर B एक OLE DB Source है; सर्वर A में रिकॉर्ड खोजें एक Lookup transformation task और सर्वर ए एक OLE DB Destination है ।

  6. कॉन्फ़िगर करें OLE DB Source सर्वर B जैसा कि स्क्रीनशॉट में दिखाया गया है #4 और #5

  7. कॉन्फ़िगर करें Lookup transformation task सर्वर A में रिकॉर्ड खोजें जैसा कि स्क्रीनशॉट में दिखाया गया है #6 - #8 . इस उदाहरण में, ItemId अद्वितीय कुंजी है। इसलिए, वह कॉलम है जिसका उपयोग दो तालिकाओं के बीच लापता रिकॉर्ड की खोज के लिए किया जाता है। चूँकि हमें केवल उन पंक्तियों की आवश्यकता है जो सर्वर A . में मौजूद नहीं हैं , हमें विकल्प का चयन करने की आवश्यकता है Redirect rows to no match output

  8. एक OLE DB Destination रखें डेटा प्रवाह कार्य पर। जब आप लुकअप रूपांतरण कार्य को OLE DB गंतव्य से जोड़ते हैं, तो आपको Input Output Selection के साथ संकेत दिया जाएगा संवाद। Lookup No Match Output चुनें संवाद से जैसा कि स्क्रीनशॉट #9 . में दिखाया गया है . OLE DB Destination कॉन्फ़िगर करें सर्वर ए जैसा कि स्क्रीनशॉट में दिखाया गया है #10 और #11

  9. एक बार डेटा प्रवाह कार्य कॉन्फ़िगर हो जाने पर, यह वैसा ही दिखना चाहिए जैसा स्क्रीनशॉट में दिखाया गया है #12

  10. पैकेज का नमूना निष्पादन स्क्रीनशॉट #13 . में दिखाया गया है . जैसा कि आप देख सकते हैं, अनुपलब्ध 7,778 rows Server B . से स्थानांतरित कर दिया गया है Server A . के लिए . स्क्रीनशॉट देखें #14 पैकेज निष्पादन के बाद तालिका रिकॉर्ड गिनती देखने के लिए।

  11. चूंकि आवश्यकता केवल लापता रिकॉर्ड डालने की थी, इसलिए इस दृष्टिकोण का उपयोग किया गया है। यदि आप मौजूदा रिकॉर्ड्स को अपडेट करना चाहते हैं और उन रिकॉर्ड्स को हटाना चाहते हैं जो अब मान्य नहीं हैं, तो कृपया उस उदाहरण को देखें जो मैंने इस लिंक। टैब सीमांकित फ़ाइल लोड करने के लिए SQL एकीकरण सेवाएँ? लिंक में उदाहरण दिखाता है कि एक फ्लैट फ़ाइल को SQL में कैसे स्थानांतरित किया जाए, लेकिन यह मौजूदा रिकॉर्ड को अपडेट करता है और अमान्य रिकॉर्ड को हटा देता है। साथ ही, बड़ी संख्या में पंक्तियों को संभालने के लिए उदाहरण को ठीक से ट्यून किया गया है।

आशा है कि यह मदद करता है।

स्क्रिप्ट

CREATE SCHEMA [ServerA] AUTHORIZATION [dbo]
GO

CREATE SCHEMA [ServerB] AUTHORIZATION [dbo]
GO

CREATE TABLE [ServerA].[ItemInfo](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [ItemId] [varchar](255) NOT NULL,
    [ItemName] [varchar](255) NOT NULL,
    [ItemType] [varchar](255) NOT NULL,
    CONSTRAINT [PK_ItemInfo] PRIMARY KEY CLUSTERED ([Id] ASC),
    CONSTRAINT [UK_ItemInfo_ItemId] UNIQUE NONCLUSTERED ([ItemId] ASC)
) ON [PRIMARY]
GO

CREATE TABLE [ServerB].[ItemInfo](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [ItemId] [varchar](255) NOT NULL,
    [ItemName] [varchar](255) NOT NULL,
    [ItemType] [varchar](255) NOT NULL,
    CONSTRAINT [PK_ItemInfo] PRIMARY KEY CLUSTERED ([Id] ASC),
    CONSTRAINT [UK_ItemInfo_ItemId] UNIQUE NONCLUSTERED ([ItemId] ASC)
) ON [PRIMARY]
GO

स्क्रीनशॉट #1:

स्क्रीनशॉट #2:

स्क्रीनशॉट #3:

स्क्रीनशॉट #4:

स्क्रीनशॉट #5:

स्क्रीनशॉट #6:

स्क्रीनशॉट #7:

स्क्रीनशॉट #8:

स्क्रीनशॉट #9:

स्क्रीनशॉट #10:

स्क्रीनशॉट #11:

स्क्रीनशॉट #12:

स्क्रीनशॉट #13:

स्क्रीनशॉट #14:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. टी-एसक्यूएल में एक्सएमएल कैसे पढ़ा जाए?

  2. टी-एसक्यूएल का उपयोग कर एसक्यूएल सर्वर 2008 पर सभी एसएसआईएस पैकेज कैसे सूचीबद्ध करें?

  3. तालिका संरचना में हेरफेर

  4. जहां क्लॉज में स्ट्रिंग्स की सूची बनाने के लिए अल्पविराम से अलग किए गए स्ट्रिंग को पार्स करें

  5. क्या एक चर को एक बार में जारी रखने का कोई तरीका है?