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

标签 sql sql-server-2008 tsql

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

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

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

这是我开始的:

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

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

可以做到吗?

最佳答案

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

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)

关于sql - 可以在不指定数据库名称的情况下对当前数据库进行收缩吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15210357/

相关文章:

c# - LINQ:单个谓词中的多个 LIKE 子句

SQL Server - PK 删除性能不佳

c# - 将 T-SQL 语句解析为标记

php - 需要帮助在 PHP 中从 SQL 连接多个表

SQL SERVER 和 SET ANSI_NULLS ON,SET QUOTED_IDENTIFIER ON

python - 时间序列数据的 sqlalchemy 查询格式为(步骤,下一步)时间相邻样本对

sql - 在 MS SQL Server 2008 下的 T-SQL 中,参数 *value* 前面的 '@' 是什么意思?

sql - SELECT INTO行为和IDENTITY属性

sql-server-2008 - 从插入语句中的子查询(超过 1 条记录)获取最新日期

sql-server-2008 - 从同一表中的行中选择值和下一个最高值