可以在不指定数据库名称的情况下对当前数据库执行收缩

Ero*_*ocM 3 sql t-sql sql-server-2008

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

我需要能够缩小当前数据库而不指定名称.

我们在程序中没有数据库名称,只是给出了连接并运行脚本.

这就是我的开始:

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

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

可以吗?

Ada*_*her 6

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

DECLARE @dbName VARCHAR(50)

SELECT @dbName = DB_NAME()

DBCC SHRINKDATABASE(@dbName)
Run Code Online (Sandbox Code Playgroud)

这对你有用吗?

要只做日志文件:

DECLARE @logName VARCHAR(50)

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

DBCC SHRINKFILE(@logName, 1)
Run Code Online (Sandbox Code Playgroud)