It took me a while to work out how to do what I wanted to do...
This code is provided as-is, with no warranties. Test it before using it in earnest: and if you want to share the joy, please credit me. I wouldn't have managed it without the code here.
CREATE TABLE #temptable
(
[Owner] VARCHAR(50),
[Object] VARCHAR(100),
grantee VARCHAR(50),
grantor VARCHAR(50),
protecttype VARCHAR(50),
[Action] VARCHAR(50),
[Column] VARCHAR(50),
dbname VARCHAR(50)
)
DECLARE @STATEMENT VARCHAR(500)
SET @STATEMENT = 'Use [' + '?' + ']
INSERT INTO #temptable
([Owner],
[Object],
Grantee,
Grantor,
ProtectType,
[Action],
[Column]
)
EXEC (''sp_helprotect'')
UPDATE #temptable SET dbname = db_name()
WHERE dbname IS NULL'
EXEC MASTER.dbo.Sp_msforeachdb @command1=@STATEMENT
GO
SELECT *
FROM #temptable
ORDER BY dbname
GO
DROP TABLE #temptable
GO