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 に答える