एमएस एसक्यूएल सर्वर में ओपन क्वेरी को स्वचालित करें
यह तालिका और संग्रहीत प्रक्रियाओं का सेट आपको Oracle और प्रगति डेटाबेस से SQL सर्वर में डेटा के हस्तांतरण को स्वचालित करने में सक्षम करेगा।
ओपन क्वेरी मॉड्यूल प्राप्त करें बनाना
हम मान रहे हैं कि आपके पास टेबल, संग्रहीत कार्यविधियाँ, लिंक्ड सर्वर ऑब्जेक्ट और जॉब बनाने का ज्ञान और अनुमति है, इसके बिना ऐसे मुद्दे हो सकते हैं जिनमें हम आपकी मदद नहीं कर सकते।
इसे चलाते समय, हम इसे यूटिलिटीज टाइप डेटाबेस में रखते हैं जहां हम साझा कार्यों और रखरखाव वस्तुओं को रखते हैं।
हमारे पास पहला काम सभी डेटा प्रवाह को प्रबंधित करने के लिए एक मास्टर टेबल बनाना है, जिसमें शामिल करने के लिए कुछ कॉलम शामिल हैं;
- GetOpenQueryStream - यह एक पूर्णांक फ़ील्ड है जो आपको तालिकाओं के प्रक्रिया सेट को बैच करने की अनुमति देता है, और कॉलम GetOpenQueryOrder में सेट किए गए क्रम में चलेगा
- GetOpenQueryName - यह या तो GetOpenQuery_Progress या GetOpenQuery_Oracle होना चाहिए जब तक कि आपने कोड को अनुकूलित नहीं किया है।
- GetOpenQueryLinkServ - लिंक किया गया सर्वर नाम है, जिसे सर्वर ऑब्जेक्ट में सेट करने की आवश्यकता है
- GetOpenQuerySourceSchema - स्रोत डेटाबेस स्कीमा है
- GetOpenQueryDatabase, GetOpenQuerySchema, GetOpenQueryTable तीन भाग पहचानकर्ता बनाते हैं जहां डेटा की प्रतिलिपि बनाने के लिए सेट किया गया है।
- आप WHERE, INNER और TOP स्टेटमेंट में जोड़ सकते हैं
- GetOpenQuerySkipCols - यह आयात करते समय तालिका से कॉलम हटा देगा।
Create Table
CREATE TABLE dbo.GetOpenQuery(
GetOpenQueryID int IDENTITY(1,1) NOT NULL,GetOpenQueryStream int NULL,GetOpenQueryName nvarchar(100) NULL,GetOpenQueryLinkServ nvarchar(100) NULL,GetOpenQueryDatabase nvarchar(100) NULL,GetOpenQuerySchema nvarchar(max) NULL,GetOpenQueryTable nvarchar(100) NULL,GetOpenQueryWHERE nvarchar(1000) NULL,GetOpenQueryTOP nvarchar(100) NULL,GetOpenQuerySourceSchema nvarchar(100) NULL,GetOpenQuerySkipCols nvarchar(max) NULL,GetOpenQueryINNER nvarchar(max) NULL,GetOpenQuerySkipTruncate bit NULL DEFAULT ((0)),GetOpenQueryOrder bit NULL DEFAULT ((0)))
एक केन्द्र
इस संग्रहीत प्रक्रिया के माध्यम से संबंधित तालिकाओं के माध्यम से नौकरियों को स्ट्रीम आईडी और लूप में पास करने के लिए लगाया जा सकता है। यह उपरोक्त तालिका के माध्यम से लूप करता है, और Oracle या प्रोग्रेस लिंक्ड सर्वर के लिए प्रासंगिक कोड को बंद कर देता है।
यह तब हब बन जाता है जिसके द्वारा अन्य सभी नौकरियों को बुलाया जा सकता है।
Create Stored Procedure
CREATE PROC [dbo].[GetOpenQuery_Data](@Stream INT) AS BEGINDECLARE @GetOpenQueryName NVARCHAR(100),@GetOpenQueryLinkServ NVARCHAR(100),@GetOpenQueryDatabase NVARCHAR(100),@GetOpenQuerySchema NVARCHAR(MAX),@GetOpenQueryTable NVARCHAR(100),@GetOpenQueryWHERE NVARCHAR(1000),@GetOpenQueryTOP NVARCHAR(100),@SrcScheme NVARCHAR(100),@SkipCols NVARCHAR(MAX),@GetOpenQueryINNER NVARCHAR(MAX),@GetOpenQuerySkipTruncate BIT DECLARE @SQL NVARCHAR(MAX),@SQLRows BIGINT,@SQLRowCount BIGINT,@SQLOutPut NVARCHAR(100)='@SQLRows BIGINT' DECLARE C CURSOR FAST_FORWARD FORSELECTGetOpenQueryName, GetOpenQueryLinkServ, GetOpenQueryDatabase, GetOpenQuerySchema, GetOpenQueryTable,GetOpenQueryWHERE, GetOpenQueryTOP, GetOpenQuerySourceSchema, GetOpenQuerySkipCols, GetOpenQueryINNER, GetOpenQuerySkipTruncateFROM GetOpenQueryWHERE GetOpenQueryStream=@StreamORDER BY GetOpenQueryOrderOPEN CFETCH NEXT FROM CINTO @GetOpenQueryName,@GetOpenQueryLinkServ,@GetOpenQueryDatabase,@GetOpenQuerySchema,@GetOpenQueryTable,@GetOpenQueryWHERE,@GetOpenQueryTOP,@SrcScheme,@SkipCols,@GetOpenQueryINNER,@GetOpenQuerySkipTruncateWHILE @@FETCH_STATUS = 0 BEGIN BEGIN TRY SET @SQL='EXEC '+@GetOpenQueryName+' '''+ @GetOpenQueryLinkServ+''','''+ @GetOpenQueryDatabase+''','''+ @GetOpenQuerySchema+''','''+ @GetOpenQueryTable+''','+ ISNULL(NULLIF(''''+@GetOpenQueryWHERE+'''',''),'NULL')+','+ ISNULL(NULLIF(@GetOpenQueryTOP,''),'NULL')+','+ ISNULL(NULLIF(@SrcScheme,''),'NULL')+','+ ISNULL(NULLIF(''''+@SkipCols+'''',''),'NULL')+','+ ISNULL(NULLIF(''''+@GetOpenQueryINNER+'''',''),'NULL')+','+(CASE WHEN @GetOpenQuerySkipTruncate=1 THEN '1' ELSE '0' END) EXEC sp_executesql @SQL SET @SQLRows=@@ROWCOUNT SELECT @SQLRows END TRY BEGIN CATCH PRINT @GetOpenQueryLinkServ+'; Table '+@GetOpenQueryTable+' Failed' END CATCH PRINT @SQL FETCH NEXT FROM C INTO @GetOpenQueryName,@GetOpenQueryLinkServ,@GetOpenQueryDatabase,@GetOpenQuerySchema,@GetOpenQueryTable, @GetOpenQueryWHERE,@GetOpenQueryTOP,@SrcScheme,@SkipCols,@GetOpenQueryINNER,@GetOpenQuerySkipTruncateEND CLOSE C;DEALLOCATE C;ENDGO