sql - 从脚本中获取 sql 日志文件名

标签 sql sql-server-2008 tsql

我们有一些测试数据库,我们将测试索引放入其中,由于我们删除表的内容并重新填充它,日志文件很快就会变得臃肿。

多亏了 Stack Overflow,我找到了一些脚本并将它们放在一起来做我需要的。

这是脚本:

USE SSSIndexes
GO
ALTER DATABASE SSSIndexes SET RECOVERY SIMPLE WITH NO_WAIT
GO
DBCC SHRINKFILE(N'SSSIndexes_Log', 1)   <-- my issue is here
GO

问题是日志文件名。有没有办法获取日志文件名而无需手动查找并将其包含在脚本中自动执行此部分的位置?

顺便说一句,我们从来没有打算恢复这个数据库。这些是临时索引。

谢谢!

最佳答案

USE SSSIndexes
GO
ALTER DATABASE SSSIndexes SET RECOVERY SIMPLE WITH NO_WAIT
GO
DECLARE @Name NVARCHAR(50)

DECLARE cur CURSOR FOR
SELECT [name]
FROM [sys].[database_files] 
where [type] = 1

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

关于sql - 从脚本中获取 sql 日志文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15207988/

相关文章:

sql - 如何从oracle中删除列的默认值?

mysql - SQL:按组排名而不汇总或加入

php - 错误消息: MySQL server has gone away

mysql - 为什么我的简单 sql 查询不起作用?

c# - SQL Server如何选择特定时间内过期的项目?

sql 在 ssms 中运行快在 asp.net 中慢

sql - sql中每行的数量增加

mysql - 我正在尝试更正 T-SQL 中的此错误代码,该代码表明我有一个无效列

MySQl 如果不存在,创建存储过程

sql - 是否可以运行存储过程来设置更新语句中的值 - SQL