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 / Exemple :
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.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.