Advertisement
Guest User

Untitled

a guest
May 27th, 2016
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.94 KB | None | 0 0
  1. EXEC master.dbo.sp_addlinkedserver @server = N'POSTGRESQL', @srvproduct=N'PostgreSQL', @provider=N'MSDASQL', @datasrc=N'PostgreSQL'
  2. EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'POSTGRESQL',@useself=N'False',@locallogin=NULL,@rmtuser=N'xxxxxx',@rmtpassword='xxxxx'
  3. EXEC master.dbo.sp_serveroption @server=N'POSTGRESQL', @optname=N'collation compatible', @optvalue=N'false'
  4. EXEC master.dbo.sp_serveroption @server=N'POSTGRESQL', @optname=N'data access', @optvalue=N'true'
  5. EXEC master.dbo.sp_serveroption @server=N'POSTGRESQL', @optname=N'dist', @optvalue=N'false'
  6. EXEC master.dbo.sp_serveroption @server=N'POSTGRESQL', @optname=N'pub', @optvalue=N'false'
  7. EXEC master.dbo.sp_serveroption @server=N'POSTGRESQL', @optname=N'rpc', @optvalue=N'true'
  8. EXEC master.dbo.sp_serveroption @server=N'POSTGRESQL', @optname=N'rpc out', @optvalue=N'true'
  9. EXEC master.dbo.sp_serveroption @server=N'POSTGRESQL', @optname=N'sub', @optvalue=N'false'
  10. EXEC master.dbo.sp_serveroption @server=N'POSTGRESQL', @optname=N'connect timeout', @optvalue=N'0'
  11. EXEC master.dbo.sp_serveroption @server=N'POSTGRESQL', @optname=N'collation name', @optvalue=null
  12. EXEC master.dbo.sp_serveroption @server=N'POSTGRESQL', @optname=N'lazy schema validation', @optvalue=N'false'
  13. EXEC master.dbo.sp_serveroption @server=N'POSTGRESQL', @optname=N'query timeout', @optvalue=N'0'
  14. EXEC master.dbo.sp_serveroption @server=N'POSTGRESQL', @optname=N'use remote collation', @optvalue=N'true'
  15. EXEC master.dbo.sp_serveroption @server=N'POSTGRESQL', @optname=N'remote proc transaction promotion', @optvalue=N'false'
  16.  
  17. ALTER PROCEDURE [dbo].[SP_Name]
  18. @DateFrom DATETIME,
  19. @DateTo DATETIME
  20.  
  21. AS
  22.  
  23. DECLARE @variableB int
  24.  
  25. SET @variableB= {some criteria}
  26.  
  27. IF (@variableB < 1000)
  28.  
  29. BEGIN
  30. -- Passthrough to PG for a filtered table, instead of entire table grabbed via open query
  31. IF OBJECT_ID('tempdb.dbo.#temp_table1', 'U') IS NOT NULL
  32. DROP TABLE #temp_table1;
  33.  
  34. create table #temp_table1 (column1 int, column2 varchar(60))
  35.  
  36. DECLARE @TSQL varchar(max)
  37. SET @TSQL = 'select c1, c2 from OpenQuery([POSTGRESQL],''
  38. select c1, c2 from table1 t where
  39. t.date>=''''' +CONVERT(VARCHAR(15),@DateFrom,102)+ '''''' + 't.date <=''''' +CONVERT(VARCHAR(15),@DateTo,102) + '''''' +'order by c1'')'
  40.  
  41. insert into #temp_table1
  42. EXEC (@TSQL)
  43.  
  44. create clustered index temp_index1 on #temp_table1
  45. (column1 asc)
  46. WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
  47.  
  48. -- 2nd table passthrough to PG for a filtered table, instead of entire table grabbed via open query
  49. IF OBJECT_ID('tempdb.dbo.#temp_table2', 'U') IS NOT NULL
  50. DROP TABLE temp_table2;
  51.  
  52. create table #temp_table2 (column1 int, column2 varchar(60), column3 int)
  53.  
  54. SET @TSQL = 'select a, b, c from OpenQuery([POSTGRESQL],''
  55. select a, b, c from table2 t where
  56. t.date>=''''' +CONVERT(VARCHAR(15),@DateFrom,102)+ '''''' + 't.date <=''''' +CONVERT(VARCHAR(15),@DateTo,102) + '''''' +'order by a'')'
  57.  
  58. insert into #temp_table2
  59. EXEC (@TSQL)
  60.  
  61. -- 3rd table passthrough to PG for a filtered table, instead of entire table grabbed via open query
  62. IF OBJECT_ID('tempdb.dbo.#temp_table3', 'U') IS NOT NULL
  63. DROP TABLE temp_table3;
  64.  
  65. create table #temp_table3 (column1 int, column2 varchar(60))
  66.  
  67. SET @TSQL = 'select a1, a2, a3 from OpenQuery([POSTGRESQL],''
  68. select a1, a2, a3
  69. from
  70. table3 t
  71. where
  72. t.date>=''''' +CONVERT(VARCHAR(15),@DateFrom,102)+ '''''' + 't.date <=''''' +CONVERT(VARCHAR(15),@DateTo,102) + ''''''
  73. {plus other filtering criteria} +'order by a1'')'
  74.  
  75. insert into #temp_table2
  76. EXEC (@TSQL)
  77.  
  78. IF (@variableB < 1000)
  79.  
  80. BEGIN
  81.  
  82. select {many columns}
  83. from {various local tables with left joins}
  84. left join #temp_table1 on {conditions}
  85. left join #temp_table2 on {conditions}
  86. left join #temp_table3 on {conditions}
  87.  
  88. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement