Estou tentando criar um script para obter o nome do arquivo de log de um banco de dados, definir como recuperação simples, reduzir o arquivo de log desse banco de dados e definir novamente como completo.
Até agora, eu criei este script:
DECLARE @RestoreDbName nvarchar(2000);
declare @Name nvarchar(2000)
set @restoreDbName = 'dbname'
DECLARE cur CURSOR FOR
SELECT name
FROM [sys].[database_files]
where [type] = 1 and name like @restoreDbName
ALTER DATABASE @RestoreDbName
SET RECOVERY SIMPLE;
GO
OPEN cur
FETCH NEXT FROM cur INTO @Name
WHILE @@FETCH_STATUS = 0
BEGIN
DBCC SHRINKFILE(@Name, 1)
FETCH NEXT FROM cur INTO @Name
END
CLOSE cur
DEALLOCATE cur
GO
ALTER DATABASE @RestoreDbName
SET RECOVERY FULL;
GO
O script será executado a partir de um PowerShell, não gera nenhuma mensagem de erro, mas quando verifico o arquivo de log do banco de dados continua o mesmo de antes, não foi reduzido.
Alguma sugestão, o que estou fazendo errado?