Sql server 2005 - changer le schema par defaut de tous les utilisateurs pour une base specifique

Contenu du snippet

Dans de nombreux cas, on développe des applications sans se soucier de la base de données. Ainsi il arrive que l'on souhaite remettre la situation au propre en définissant un Schéma particulier pour tous les objets.
Dans ce cas, il faut prendre en compte les comptes utilisateurs et modifier le schéma par défaut de chacun d'eux.
Ceci afin que le "SELECT * FROM MATABLE" puisse continuer à fonctionner dans l'application en question.

Voila donc un script qui permet d'effectuer ce travail. Il faut bien spécifier la base de travail en tête de ce script.

Source / Exemple :


USE [MaBasedeTravail]
GO

DECLARE @NewSchema	AS VARCHAR(50)
DECLARE @DBName		AS VARCHAR(50)
DECLARE @SQLCMD		AS VARCHAR(2000)	

SET @NewSchema = 'MonNouveauSchema'
SET @DBName = 'MaBasedeTravail'

DECLARE CURSORCHANGESCHEMA CURSOR FOR SELECT 'USE ['+ @DBName +'] ALTER USER ['+ name +'] WITH DEFAULT_SCHEMA=['+ @NewSchema +'] ' AS COMMANDSQL 
									FROM sys.sysusers WHERE issqluser = 1 AND hasdbaccess = 1
OPEN CURSORCHANGESCHEMA
FETCH NEXT FROM CURSORCHANGESCHEMA INTO @SQLCMD
WHILE (@@fetch_status >= 0) 
	BEGIN 
		PRINT 'MODIFICATION : '+ @SQLCMD
		EXECUTE(@SQLCMD)
		FETCH NEXT FROM CURSORCHANGESCHEMA INTO @SQLCMD
	END
CLOSE CURSORCHANGESCHEMA
DEALLOCATE CURSORCHANGESCHEMA

Conclusion :


Bon coding

Romelard Fabrice [MVP]

A voir également