0
我遇到问题,下面的查询只从当前连接到的数据库中选择视图,而不是全部。无论如何要做到这一点,而不是使用sp_MSForEachDB
?查询SQL Server 2012数据库实例中的所有视图
DECLARE @useText VARCHAR(500)
DECLARE @viewNM VARCHAR(500)
DECLARE @schemaNM VARCHAR(500)
DECLARE @dbNM VARCHAR(500)
DECLARE @sqlCmd varchar(4000)
DECLARE DBCursor CURSOR GLOBAL FOR
SELECT NAME FROM SYS.DATABASES
OPEN DBCursor
FETCH NEXT FROM DBCursor INTO @dbNM
WHILE @@FETCH_STATUS <> -1
BEGIN
SET @useText = 'USE [' + @dbNM + ']'
EXEC(@useText)
DECLARE ViewCursor CURSOR FOR
SELECT 'GRANT SELECT ON ' + '[' + SCHEMA_NAME(schema_id) + '].[' + name + ']' + ' TO [account]'
FROM SYS.VIEWS V
OPEN ViewCursor
FETCH NEXT FROM ViewCursor INTO @sqlCmd
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT(@sqlCmd)
FETCH NEXT FROM ViewCursor INTO @sqlCmd
END
CLOSE ViewCursor
DEALLOCATE ViewCursor
FETCH NEXT FROM DBCursor INTO @dbNM
END
CLOSE DBCursor
DEALLOCATE DBCursor
嗯,我想你可能会遇到GRANT的另一个问题。您只能授予或撤销当前数据库中对象的权限。 – jim31415 2014-10-03 19:33:54