Para resolver este problema estou usando a extended stored procedure xp_sqlmaint para executar um processo de Integrity and Optimization.
No script apresentado abaixo é criada uma tabela temporária que recebe o valor extraída do comando “SELECT @@idle” (valor variável extraído do temporizador do sistema) e que será utilizado como password do login que é criado em tempo de execução atraves do comando sp_addlogin, que em seguida recebe os direitos de sysadmin (sp_addsrvrolemember).
Quando efetuo na opção SET @opt o select na tabela temporária, apenas estou agregando, ou concatenando o resultado em um comando específico (xp_sqlmaint). O mais interessante de tudo é que durante a execução você não consegue saber qual é a password utilizada, pois o valor é variável nunca se repetirá e está guardado em uma tabela temporária que também não é visível. Depois da execução do comando tudo é removido exceto o resultado do xp_sqlmaint, que neste caso é guardado na tabela sysdbmaintplan_history da base msdb.
Em meu ambiente esta rotina está em scheduled para execução semanal!
CREATE TABLE #tt
(
pass varchar(20)
)
INSERT INTO #tt SELECT @@IDLE
DECLARE @pass varchar(20)
— Atribui valor da coluna pass para a variável @pass
SET @pass = (select pass from #tt)
— Cria login itifrd e atribui a ele direitos de sysadmin
EXEC sp_addlogin itifrd, @pass
EXEC sp_addsrvrolemember ‘itifrd’, ‘sysadmin’
DECLARE @opt char (200)
SET @opt = (select ‘xp_sqlmaint N”-U itifrd -P ‘+ pass + ‘ -PlanID 949D9D64-59AE-4604-AE52-695510C3160A -WriteHistory -RebldIdx 10 ‘+ ”’ ‘ from #tt )
— Executa a string armazenada na variável @opt
EXEC (@opt)
— Exclui a tabela temporária
DROP TABLE #tt
— Exclui o login itifrd
EXEC sp_droplogin itifrd

