我正在尝试创建一个脚本来获取数据库日志文件的名称,设置为简单恢复,从该数据库收缩日志文件并重新设置为完整。
到目前为止,我已经想出了这个脚本:
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
该脚本将从 powershell 运行,不会给出任何错误消息,但是当我检查数据库的日志文件时仍然与以前一样,并没有缩小。
有什么建议吗?我做错了什么?