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]