рдПрдордПрд╕ рдПрд╕рдХреНрдпреВрдПрд▓ рд╕рд░реНрд╡рд░ рдореЗрдВ рдУрдкрди рдХреНрд╡реЗрд░реА рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░реЗрдВ
рдУрдкрди рдХреНрд╡реЗрд░реА рдореЙрдбреНрдпреВрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдмрдирд╛рдирд╛
рд╣рдо рдорд╛рди рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЯреЗрдмрд▓, рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд╛рд░реНрдпрд╡рд┐рдзрд┐рдпрд╛рдБ, рд▓рд┐рдВрдХреНрдб рд╕рд░реНрд╡рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рдЬреЙрдм рдмрдирд╛рдиреЗ рдХрд╛ рдЬреНрдЮрд╛рди рдФрд░ рдЕрдиреБрдорддрд┐ рд╣реИ, рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдРрд╕реЗ рдореБрджреНрджреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд╣рдо рдЖрдкрдХреА рдорджрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
рдЗрд╕реЗ рдЪрд▓рд╛рддреЗ рд╕рдордп, рд╣рдо рдЗрд╕реЗ рдпреВрдЯрд┐рд▓рд┐рдЯреАрдЬ рдЯрд╛рдЗрдк рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╣рдо рд╕рд╛рдЭрд╛ рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рд░рдЦрд░рдЦрд╛рд╡ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд░рдЦрддреЗ рд╣реИрдВред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓рд╛ рдХрд╛рдо рд╕рднреА рдбреЗрдЯрд╛ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рд╕реНрдЯрд░ рдЯреЗрдмрд▓ рдмрдирд╛рдирд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХреЙрд▓рдо рд╢рд╛рдорд┐рд▓ рд╣реИрдВ;
- 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
рдЬреЙрдмреНрд╕ рдХреЛ рдХреИрд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВ
рдЕрдм рдЬрдм рдпреЗ рдЪрд░рдг рдмрдирд╛рдП рдЧрдП рд╣реИрдВ, рддреЛ рд╣рдо Oracle рдФрд░ рдкреНрд░рдЧрддрд┐ рджреЛрдиреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реЗрд╖ SPROC рдореЗрдВ рдкреНрд▓рдВрдм рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реНрдЯреНрд░реАрдо 1 рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдХреЛрдб рдХреЗ рд╕рд╛рде SQL рдПрдЬреЗрдВрдЯ рдЬреЙрдм рдмрдирд╛рдПрдВ;
EXEC Utilities.dbo.GetOpenQuery_Data 1