﻿<?xml version="1.0" encoding="utf-8"?>
<ReportsExport>
  <Reports>
    <Report id="6d582749-b46f-4364-8572-7a8110cbbeef" codekey="Validation od DB objects" categoryCodekey="SpecialPurpose" name="Validation of procedures, functions, views" description="Validate and list only problematic procedures, functions, views.">
      <MetaData created="2012-04-11T09:20:46" createdBy="Administrator viwis (Administrator)" createdBy_user_id="12" modified="2012-04-11T10:34:40" modifiedBy="Administrator viwis" />
      <ExecutionDetails format="TableResult" commandType="SqlCommandOrQuery" exportHandler="" adminControl="" exportMultipleTablesToSheets="False" datesWithTime="False" extraParams="" />
      <Mandators mandatorMode="OnlyOwner" mandator_id="345bbab2-62a8-424d-a6e6-133aeab480a4" isStandard="True" isUsedByMenu="False" />
      <Roles>
        <Role id="90" />
      </Roles>
      <command>
        ------------------------------------------------------------------
        --         Refresh all user SP, Functions and Views             --
        ------------------------------------------------------------------

        -- table variable to store object names
        DECLARE @v TABLE (RecID INT IDENTITY(1,1), spname sysname)
        DECLARE @result TABLE (msg nvarchar(1024))

        -- retrieve the list of stored procedures, functions and views
        INSERT INTO @v(spname)

	        SELECT '[' + u.[name] + '].[' + o.name + ']' 
	        FROM dbo.sysobjects o
	        INNER JOIN dbo.sysusers u
	        ON o.uid = u.uid
	        WHERE o.Type = 'P' or o.Type = 'V' or o.Type = 'FN'
	        ORDER BY o.[Name]

        -- counter variables
        DECLARE @cnt INT
        DECLARE @tot INT
        SELECT @cnt = 1
        SELECT @tot = COUNT(*) FROM @v

        DECLARE @spname sysname

        -- start the loop
        WHILE @cnt &lt;= @tot BEGIN
            SELECT @spname = spname
                FROM @v
                WHERE RecID = @cnt 

        --    PRINT 'refreshing...' + @spname

            BEGIN TRY
		        BEGIN TRANSACTION
                -- refresh object
                EXEC sp_refreshsqlmodule @spname
                COMMIT TRANSACTION
            END TRY
            BEGIN CATCH
		        insert into @result (msg) values ('Validation failed for : ' + @spname + ', Error:' + ERROR_MESSAGE())

            IF XACT_STATE() &lt;&gt; 0
		    			ROLLBACK TRANSACTION;
            END CATCH
            SET @cnt = @cnt + 1
        END

        select * from @result
      </command>
    </Report>
  </Reports>
</ReportsExport>