Vous ne pouvez pas supprimer 'sa' d'être un administrateur système. Il est généralement recommandé de désactiver le compte sa car il s'agit d'un compte connu qui aura toujours les droits d'administrateur système et donc l'utilisateur qui a le plus souvent tenté d'être piraté. Ceci étant dit, ceci créera un autre utilisateur qui sera sysadmin, puis créera un autre utilisateur et lui accordera la possibilité d'exécuter des procédures stockées dans toutes les bases de données utilisateur. Vous pouvez l'exécuter en tant que votre compte 'sa'.
-- Create new account with a very secure password
CREATE LOGIN sqlmanager WITH PASSWORD = 'Now I am the master.';
GO
-- Grant new account sysadmin rights
ALTER SERVER ROLE [sysadmin] ADD MEMBER [sqlmanager]
GO
-- Create new role for executing procedures only in all user db's
DECLARE @command varchar(1000)
SELECT @command = '
IF ''?'' NOT IN(''master'', ''model'', ''msdb'', ''tempdb'')
BEGIN
IF NOT EXISTS (select 1 from sys.database_principals where name=''db_executor'')
BEGIN
CREATE ROLE [db_executor];
END;
GRANT EXECUTE TO db_executor;
END
'
EXEC sp_MSforeachdb @command
GO
-- Create new account for executing procedures
CREATE LOGIN sqlexecutor WITH PASSWORD = 'You run along now';
GO
-- Add new user to db_executor role in all user db db's
DECLARE @command varchar(1000)
SELECT @command = '
IF ''?'' NOT IN(''master'', ''model'', ''msdb'', ''tempdb'')
BEGIN
IF NOT EXISTS(SELECT principal_id FROM sys.database_principals WHERE name = ''sqlexecutor'')
BEGIN
CREATE USER [sqlexecutor] FOR LOGIN [sqlexecutor] WITH DEFAULT_SCHEMA=[dbo];
END;
ALTER ROLE [db_executor] ADD MEMBER [sqlexecutor];
END
'
EXEC sp_MSforeachdb @command
GO
Enfin log REDUCTIONS sa et connectez-vous comme sqlmanager. Vérifiez que vous disposez des autorisations sysadmin, puis désactivez le compte sa
-- Disable sa account
ALTER LOGIN [sa] DISABLE
Je l'ai fait de cette façon et cela a fonctionné –