4

我们正在连接到 C# 中的数据库,然后在其上运行一些 sql 脚本。

我需要能够在不指定名称的情况下缩小当前数据库。

我们在程序中没有数据库名称,我们只是获得连接并运行脚本。

这是我开始的:

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

但我不知道数据库名称或日志文件名。

可以做到吗?

4

1 回答 1

9

您可以通过调用获取当前数据库并缩小它:

DECLARE @dbName VARCHAR(50)

SELECT @dbName = DB_NAME()

DBCC SHRINKDATABASE(@dbName)

只做日志文件:

DECLARE @logName VARCHAR(50)

SELECT @logName = name FROM sys.master_files WHERE database_id = db_id() AND type = 1

DBCC SHRINKFILE(@logName, 1)
于 2013-03-04T20:24:35.480 回答