Je veux générer un script pour attribuer un compte d'utilisateur à certains securables, par exemple. Tableau: Sélectionnez. P>
Comment faire cela? P>
4 Réponses :
Vous pouvez modifier la clause de la sélection de l'objet comme vous le voyez. Devrait être un petit sweeking minimal si vous recherchez un script de 2005 ou 2008.
/ prudence! em> / Ce script peut être un peu dangereux. P> Declare @TableName varchar(100),
@Sql nvarchar(500),
@Result int,
@UserName nvarchar(258)
set @UserName= QuoteName('<your_user>')
Print @UserName
DECLARE
Your_Cursor cursor
LOCAL
FORWARD_ONLY
OPTIMISTIC
FOR
/* if you only want one object to apply permissions to*/
-- select Name from Sysobjects where name = 'Your_TableName'
/*tables*/-- select name from sysobjects where xtype = 'U' order by name
/*views*/-- select name from sysobjects where xtype = 'V' order by name
/*StoredPs*/-- select name from sysobjects where xtype = 'P' order by name
/*UDFs*/-- select name from sysobjects where xtype = 'FN' order by name
/**********************************************************************/
OPEN Your_Cursor
FETCH NEXT from Your_Cursor into @TableName
while (@@fetch_status = 0)
begin
/*Tables*/
-- set @Sql = N'Grant Select On '+ @TableName+ N' To ' + @UserName
-- set exec @Result = sp_executeSql @Sql
-- if @Result = 0
-- begin
-- Print 'Granted Select On '+ @TableName + ' by ' + @UserName
-- end
-- set @Sql = N'Grant Insert On '+ @TableName+ N' To ' + @UserName
-- set exec @Result = sp_executeSql @Sql
-- if @Result = 0
-- begin
-- Print 'Granted Insert On '+ @TableName + ' by ' + @UserName
-- end
-- set @Sql = N'Grant Update On '+ @TableName+ N' To '+ @UserName
-- set exec @Result = sp_executeSql @Sql
-- if @Result = 0
-- begin
-- Print 'Granted Update On '+ @TableName + ' by ' + @UserName
-- end
-- set @Sql = N'Grant Delete On '+ @TableName+ N' To '+ @UserName
-- set exec @Result = sp_executeSql @Sql
-- if @Result = 0
-- begin
-- Print 'Granted Delete On '+ @TableName + ' by ' + @UserName
-- end
/*Stored Procs and UDFs*/
-- set @Sql = N'Grant Execute On '+ @TableName+ N' To '+ @UserName
-- set exec @Result = sp_executeSql @Sql
-- if @Result = 0
-- begin
-- Print 'Granted Execute On '+ @TableName + ' by ' + @UserName
-- end
FETCH NEXT from your_Cursor into @TableName
end
CLOSE Your_Cursor
DEALLOCATE Your_Cursor
Le lien de Ryu est mort.
trouvé un autre script qui fait le travail ici: p>
http://blogs.msdn.com/b/blogdozequiel/archive/2010/04/26/Le-sql -Swiss-armée-couteau-1.aspx p>
Si cela meurt ici, il est: p>
Ce script ne gère pas les membres des rôles de base de données
J'ai eu le même problème et j'ai résolu avec une suggestion Justins. P>
Propriétés CODE>, Securables CODE>. li>
- Changer LI>
- do Ctrl + Shift + n pour obtenir un script du changement. Li>
ul>
Cela fonctionne bien pour scripter de nouvelles modifications mais pas pour script de valeur existante. :(
retour, alors j'ai créé ce petit script pour interroger les autorisations de notre serveur. C'était la première fois que je puisse utiliser des curseurs SQL .. :) J'espère que cela aide:
p>
Vous avez déjà reçu les autorisations attribuées par l'utilisateur aux securables et vous souhaitez générer les relevés de subvention?
Oui, mais automatiquement. Juste comme "script> créer une table"
Ceci a été répondu à: Stackoverflow.com/Questtions/7048839/...