begin process at 2008 05 12 06:31:23
1 170 146 membres
50 nouveaux aujourd'hui
13 956 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SQL SERVER 2000 - CHANGER LE OWNER DES OBJETS D'UNE BASE DE DONNÉES


Information sur la source

Catégorie :Sécurité Classé sous : sqlserver, owner, créateur, spchangeobjectowner Niveau : Expert Date de création : 25/08/2005 Date de mise à jour : 24/10/2006 12:27:17 Vu : 4 430

Note :
10 / 10 - par 3 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note


Description

Lors de certains développement, il peut arriver que l'on ne fasse pas attention au nom du créateur de l'objet dans la base de données.
Cela peut aussi se présenter lors de restauration de base de données.

Il faut alors changer le propriétaire de tous les objets, voilà donc une procédure stockée permettant de faire ceci.
Vous n'avez dans cette procédure besoin que de définir le nouveau nom du nouvel owner.

Source

  • CREATE PROCEDURE SP_System_ChangeObjetOwner
  • AS
  • DECLARE @NomNouveauUser VARCHAR(255)
  • SET @NomNouveauUser = 'dbo'
  • DECLARE @LeNomObjet VARCHAR(255)
  • DECLARE @LeNomUser VARCHAR(255)
  • DECLARE LeCurseur CURSOR FOR
  • SELECT
  • s.name AS LeNomObjet,
  • u.name AS LeNomUser
  • FROM
  • sysobjects s
  • INNER JOIN sysusers u
  • ON s.uid = u.uid
  • WHERE
  • (s.type = 'p' OR s.type = 'v' OR s.type = 'U')
  • AND
  • (NOT (s.category = 2))
  • AND
  • (NOT (s.category = 2563))
  • AND
  • (NOT(u.name = @NomNouveauUser))
  • OPEN LeCurseur
  • FETCH NEXT FROM LeCurseur INTO @LeNomObjet, @LeNomUser
  • WHILE @@fetch_status = 0
  • BEGIN
  • EXEC ('sp_changeobjectowner ['+ @LeNomUser +'.' + @LeNomObjet + '],'+ @NomNouveauUser)
  • FETCH NEXT FROM LeCurseur INTO @LeNomObjet, @LeNomUser
  • END
  • CLOSE LeCurseur
  • DEALLOCATE LeCurseur
  • GO
CREATE PROCEDURE SP_System_ChangeObjetOwner
AS

DECLARE @NomNouveauUser VARCHAR(255)
SET @NomNouveauUser = 'dbo'

DECLARE @LeNomObjet 	VARCHAR(255)
DECLARE @LeNomUser 	VARCHAR(255)
DECLARE LeCurseur 	CURSOR FOR

SELECT 
	s.name AS LeNomObjet, 
	u.name AS LeNomUser
FROM  
	sysobjects s 
INNER JOIN 	sysusers u 
	ON s.uid = u.uid
WHERE 
	(s.type = 'p' OR s.type = 'v' OR s.type = 'U') 
AND 
	(NOT (s.category = 2)) 
AND 
	(NOT (s.category = 2563))
AND
	(NOT(u.name = @NomNouveauUser))

OPEN LeCurseur

FETCH NEXT FROM LeCurseur INTO @LeNomObjet, @LeNomUser
WHILE @@fetch_status = 0
BEGIN
	EXEC ('sp_changeobjectowner ['+ @LeNomUser +'.' + @LeNomObjet + '],'+ @NomNouveauUser)
	FETCH NEXT FROM LeCurseur INTO @LeNomObjet, @LeNomUser
END

CLOSE LeCurseur
DEALLOCATE LeCurseur

GO

Conclusion

Bon coding

Romelard Fabrice.
25 août 2005 13:56:07 :
Modification de la procédure stockée pour le nouvel utilisateur.
24 octobre 2006 12:27:17 :
Spécification du moteur pour lequel ce script est fait.
  • signaler à un administrateur
    Commentaire de GiUsTiNo le 26/08/2005 16:34:59

    Simple, efficace, performant dans ce style
    Bravo 10/10 :)

  • signaler à un administrateur
    Commentaire de Gamleur84 le 08/03/2006 17:01:32

    Parfait !!!! 10/10

  • signaler à un administrateur
    Commentaire de mounimx2006 le 21/10/2006 16:51:49

    vous me sauvez la vie

    merci bcq

    un débutant en mssql

  • signaler à un administrateur
    Commentaire de CelineCiel le 12/07/2007 11:34:28

    Un grand Merci, Parfait !!!! 10/10

Ajouter un commentaire

Appels d'offres

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS