2 votes

Comment exécuter un ensemble de requêtes sélectionnées ?

J'ai cette requête

SELECT 'GRANT SELECT ON ' + TABLE_NAME + ' TO '+ @UserName
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_TYPE = 'BASE TABLE' AND 
TABLE_NAME LIKE 'aspnet%'

Et des résultats comme celui-ci :

GRANT SELECT ON aspnet_Applications TO user04
GRANT SELECT ON aspnet_Membership TO user04
GRANT SELECT ON aspnet_Paths TO user04
GRANT SELECT ON aspnet_PersonalizationAllUsers TO user04
GRANT SELECT ON aspnet_PersonalizationPerUser TO user04
GRANT SELECT ON aspnet_Profile TO user04
GRANT SELECT ON aspnet_Roles TO user04
GRANT SELECT ON aspnet_SchemaVersions TO user04

Je veux exécuter toutes les requêtes de sélection dans ce résultat. Comment puis-je le faire ?

1voto

Michael Fredrickson Points 24359
DECLARE @Sql NVARCHAR(MAX)
SET @Sql = ''

SELECT @Sql = @Sql + 'GRANT SELECT ON ' + TABLE_NAME + ' TO '+ @UserName + '
' -- Newline to keep statements from being just one long line.
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_TYPE = 'BASE TABLE' AND 
TABLE_NAME LIKE 'aspnet%'

-- Print it first to double-check that it looks right before running.
PRINT @Sql

-- After you've validated it with print, run it.
EXEC sp_executeSql @Sql

0voto

Je m'en sors, n'oubliez pas de mettre un espace avant GRANT.

    DECLARE @Sql NVARCHAR(MAX)
SET @Sql = ''
SELECT @Sql =@Sql + ' GRANT SELECT ON ' + TABLE_NAME + ' TO '+ @UserName +''
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_TYPE = 'BASE TABLE' AND 
TABLE_NAME LIKE 'aspnet%'
PRINT @Sql
EXEC sp_executeSql @Sql

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X