home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 14 / hacker14.iso / patches / sql / SQL70-KB815495-v7.00.1094-ENU.exe / hotfix1 / Files / securityhotfix.sql < prev    next >
Encoding:
Text File  |  2002-09-17  |  7.8 KB  |  305 lines

  1. --------------------------------------------------------------------------------
  2. -- VERIFY Server is started in single-user-mode (catalog-updates enabled), and
  3. --    start marking of system-objects.
  4. --------------------------------------------------------------------------------
  5. use master
  6. go
  7.  
  8. dump tran master with no_log
  9. go
  10.  
  11. exec dbo.sp_configure 'allow updates',1
  12. go
  13. reconfigure with override
  14. go
  15.  
  16. set ANSI_NULLS off
  17.  
  18. exec sp_MS_upd_sysobj_category 1
  19. go
  20.  
  21.  
  22. if exists (select * from sysobjects
  23.         where name = 'xp_execresultset')
  24.     revoke execute on dbo.xp_execresultset to public
  25.  
  26. if exists (select * from sysobjects
  27.         where name = 'xp_displayparamstmt')
  28.     revoke execute on dbo.xp_displayparamstmt to public
  29.  
  30. if exists (select * from sysobjects
  31.         where name = 'xp_printstatements')
  32.     revoke execute on dbo.xp_printstatements to public
  33.  
  34.  
  35. -- Revoke privileges on mswebtasks and stored procedures
  36. USE msdb
  37. go
  38. REVOKE INSERT ON mswebtasks FROM PUBLIC
  39. go
  40. REVOKE DELETE ON mswebtasks FROM PUBLIC
  41. go
  42. REVOKE UPDATE ON mswebtasks FROM PUBLIC
  43. go
  44. REVOKE EXECUTE ON sp_insmswebtask FROM PUBLIC
  45. go
  46. REVOKE EXECUTE ON sp_updmswebtask FROM PUBLIC
  47. go
  48.  
  49. -- Revoke privileges on stored procedures
  50. USE master
  51. go
  52. REVOKE EXECUTE ON sp_makewebtask FROM PUBLIC
  53.  
  54. -- Drop the stored procedures if they exist, since they had changed an need to be recreated
  55. IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id(N'dbo.sp_dropwebtask') AND type = 'P')
  56.    DROP PROCEDURE dbo.sp_dropwebtask
  57. go
  58. IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id(N'dbo.sp_runwebtask') AND type = 'P')
  59.    DROP PROCEDURE dbo.sp_runwebtask
  60. go
  61. IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id(N'dbo.sp_cleanupwebtask') AND type = 'P')
  62.    DROP PROCEDURE dbo.sp_cleanupwebtask
  63. go
  64. IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id(N'dbo.sp_convertwebtasks') AND type = 'P')
  65.    DROP PROCEDURE dbo.sp_convertwebtasks
  66. go
  67.  
  68. IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id(N'dbo.sp_readwebtask') AND type = 'P')
  69.    DROP PROCEDURE dbo.sp_readwebtask
  70. go
  71.  
  72. --====================================================================================
  73. -- sp_dropwebtask: Drops a previously created Web Page Task
  74.  
  75. CREATE PROCEDURE sp_dropwebtask
  76.         @procname nvarchar(128) = NULL,
  77.         @outputfile    nvarchar(255) = NULL
  78. AS
  79. BEGIN
  80.     DECLARE    @retval int
  81.     SET @retval = 0
  82.        
  83.     DECLARE    @username nvarchar(256)
  84.     SET @username = (select SUSER_SNAME())
  85.  
  86.  
  87.     -- At least one of the parameters have to be NOT NULL
  88.     IF ( (@procname is NULL) AND (@outputfile is NULL) )
  89.     BEGIN
  90.         RAISERROR(16801,11,1)
  91.         RETURN(1)
  92.     END
  93.     
  94.     EXEC @retval = master..xp_dropwebtask @username, @procname, @outputfile
  95.     
  96.     IF (@retval <> 0)
  97.     BEGIN
  98.         SET @procname = 'sp_dropwebtask'
  99.         RAISERROR(@retval,11,1, @procname)
  100.     END
  101.  
  102.     RETURN @retval
  103. END
  104. go
  105.  
  106. --====================================================================================
  107. -- sp_runwebtask: Runs a previously created Web Page Task and creates the
  108. --            web page
  109.  
  110. CREATE PROCEDURE sp_runwebtask
  111.         @procname nvarchar(128) = NULL,
  112.         @outputfile    nvarchar(255) = NULL
  113. AS
  114. BEGIN
  115.  
  116.    DECLARE    @retval int
  117.     SET @retval = 0
  118.       
  119.    DECLARE    @username nvarchar(256)
  120.    SET @username = (select SUSER_SNAME())
  121.  
  122.     -- At least one of the parameters have to be NOT NULL
  123.     IF ( (@procname is NULL) AND (@outputfile is NULL) )
  124.     BEGIN
  125.         RAISERROR(16803,11,1)
  126.         RETURN(1)
  127.     END
  128.    
  129.    -- We added one extra argument to the xp - username
  130.    -- In it we pass the name of the current user, who called the sp_runwebtask
  131.    -- Please see more comments in the xp_runwebtask()
  132.  
  133.     EXEC @retval = master..xp_runwebtask @username, @procname, @outputfile
  134.     
  135.     IF (@retval <> 0)
  136.     BEGIN
  137.         SET @procname = 'sp_runwebtask'
  138.         RAISERROR(@retval,11,1, @procname)
  139.     END
  140.  
  141.     RETURN @retval
  142. END
  143. go
  144.  
  145. --====================================================================================
  146. -- sp_cleanupwebtask: Internal stored procedure called by Enterprise Manager
  147. --            to clean up web
  148. --            task entries after their system task entry has been
  149. --            deleted. This procedure will return success
  150. --            if there is no web task entry associated with the given
  151. --            task id.
  152.  
  153. CREATE PROCEDURE sp_cleanupwebtask
  154.         @taskid  int = 0
  155. AS
  156. BEGIN
  157.     DECLARE    @procname nvarchar(128)
  158.     DECLARE    @retval int
  159.     SET @retval = 0
  160.  
  161.     DECLARE    @username nvarchar(256)
  162.     SET @username = (select SUSER_SNAME())
  163.  
  164.     IF (@taskid = 0)
  165.     RETURN(1)
  166.     SELECT @procname = (SELECT procname FROM msdb..mswebtasks WHERE taskid = @taskid)
  167.  
  168.     --  Return if there is no such task
  169.     IF (@procname is NULL)
  170.     RETURN(1)
  171.  
  172.     EXEC @retval = master..xp_cleanupwebtask @username, @procname
  173.     RETURN @retval
  174. END
  175. go
  176.  
  177. --====================================================================================
  178. -- sp_convertwebtasks: Converts 6.5 webtasks to 7.0 format
  179. --
  180. CREATE PROCEDURE sp_convertwebtasks
  181. AS
  182. BEGIN
  183.     DECLARE    @retval int
  184.     DECLARE    @procname nvarchar(128)
  185.     DECLARE    @thisproc nvarchar(128)
  186.     DECLARE @wpw_65 varbinary(5)
  187.     DECLARE @TotalConverted    int
  188.     DECLARE    @TotalFailed    int
  189.  
  190.    DECLARE    @username nvarchar(256)
  191.    SET @username = (select SUSER_SNAME())
  192.  
  193.     -- Are there any webtasks to convert?
  194.     IF ((SELECT count(*) FROM msdb..mswebtasks) = 0)
  195.         goto DONE
  196.  
  197.     SET @TotalConverted = 0
  198.     SET @TotalFailed = 0
  199.  
  200.     -- Initialize variables
  201.     SET    @thisproc = 'sp_convertwebtasks'
  202.     SET    @retval = 0
  203.     SET    @wpw_65 = 0x00
  204.  
  205.     -- Loop through all tasks and convert to 7.0 format
  206.     DECLARE webtaskCur cursor FOR 
  207.         SELECT procname FROM msdb..mswebtasks
  208.         WHERE substring(wparams,1,2) = @wpw_65        -- version 6.5
  209.  
  210.     OPEN webtaskCur
  211.     FETCH webtaskCur INTO @procname    
  212.     
  213.     WHILE (@@fetch_status = 0)
  214.     BEGIN
  215.         EXEC @retval = master..xp_convertwebtask @username, @procname
  216.         IF (@retval <> 0)
  217.         BEGIN
  218.             
  219.             RAISERROR('%s: Failed to convert webtask from 6.5 to 7.0 format.  You need to use sp_makewebtask to recreate the task',16,1,@thisproc, @procname) WITH LOG
  220.             SET @TotalFailed = @TotalFailed + 1
  221.  
  222.         END
  223.         ELSE
  224.         BEGIN
  225.             
  226.             -- Increment successfully converted task count
  227.             SET @TotalConverted = @TotalConverted + 1
  228.             
  229.             -- Tag webtasks in sysjobs.  Web Assistant tasks are category 4.        
  230.             UPDATE msdb.dbo.sysjobs
  231.             SET category_id = 4
  232.             WHERE name = @procname
  233.  
  234.         END
  235.  
  236.         FETCH webtaskCur INTO @procname
  237.     END
  238.  
  239.     CLOSE webtaskCur
  240.     DEALLOCATE webtaskCur
  241.  
  242.     RAISERROR('%s: %d web tasks converted successfully.  %d webtasks failed to convert.',0,1,@thisproc, @TotalConverted,@TotalFailed) WITH LOG
  243.  
  244. -- Done with conversion
  245.  
  246. DONE:
  247.     RETURN @retval
  248.  
  249. END
  250. go
  251. --====================================================================================
  252. -- sp_readwebtask: retreive web task parameters
  253. --
  254. CREATE PROCEDURE sp_readwebtask
  255.         @procname nvarchar(128) = NULL
  256. AS
  257. BEGIN
  258.     DECLARE @retval int
  259.     SET @retval = 0
  260.  
  261.     DECLARE    @username nvarchar(256)
  262.     SET @username = (select SUSER_SNAME())
  263.  
  264.     -- If the procedure name is NULL, Display a list of web tasks
  265.     IF NOT EXISTS (SELECT * FROM msdb..mswebtasks WHERE procname = @procname)
  266.     BEGIN
  267.         SET @retval = 16815
  268.         RAISERROR(@retval,11,1,@procname)
  269.         RETURN(@retval)
  270.     END
  271.     
  272.     -- Execute xp_readwebtask given the procedure name
  273.     EXEC @retval = master..xp_readwebtask @procname
  274.     
  275.     IF (@retval <> 0)
  276.     BEGIN
  277.         SELECT @procname = 'sp_readwebtask'
  278.         RAISERROR(@retval,11,1, @procname)
  279.     END
  280.  
  281.     RETURN @retval
  282. END
  283. go
  284.  
  285.  
  286. --====================================================================================
  287. GRANT EXECUTE ON sp_runwebtask TO PUBLIC
  288. go
  289. GRANT EXECUTE ON sp_readwebtask TO PUBLIC
  290. go
  291.  
  292.  
  293. exec sp_MS_upd_sysobj_category 2
  294. go
  295.  
  296. exec sp_configure 'allow updates',0
  297. go
  298.  
  299. reconfigure with override
  300. go
  301.  
  302.  
  303.  
  304.  
  305.