10
votes

Comment script automatiquement les securables attribués à un compte SQL?

Je veux générer un script pour attribuer un compte d'utilisateur à certains securables, par exemple. Tableau: Sélectionnez.

Comment faire cela?


3 commentaires

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/...


4 Réponses :


0
votes

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


0 commentaires

1
votes

Le lien de Ryu est mort.

trouvé un autre script qui fait le travail ici:

http://blogs.msdn.com/b/blogdozequiel/archive/2010/04/26/Le-sql -Swiss-armée-couteau-1.aspx

Si cela meurt ici, il est: xxx


1 commentaires

Ce script ne gère pas les membres des rôles de base de données



4
votes

J'ai eu le même problème et j'ai résolu avec une suggestion Justins.

  • Cliquez avec le bouton droit de la souris sur un modèle / exemple utilisateur dans la ruche de la base de données.
  • Choisissez Propriétés , Securables .
  • Changer
  • do Ctrl + Shift + n pour obtenir un script du changement.

1 commentaires

Cela fonctionne bien pour scripter de nouvelles modifications mais pas pour script de valeur existante. :(



0
votes

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:

xxx


0 commentaires