Ich versuche, eine Datenbankdatei zu verkleinern, aber es treten Fehler auf.
Die Verwendung der Datei-ID von sys.database_files
funktioniert, aber die Verwendung des logischen Dateinamens führt zu einem Fehler.
Der logische Dateiname ist in beiden Anweisungen gleich, sodass dies nicht das Problem sein kann. Auch die Datenbank, mit der eine Verbindung hergestellt wird, ist dieselbe. Folgendes funktioniert wie erwartet:
declare @fileId as int = (select file_id from sys.database_files where name = 'XY')
DBCC SHRINKFILE (@fileId, 0, TRUNCATEONLY)
Jedoch die folgenden ...
DBCC SHRINKFILE ('XY' , 0, TRUNCATEONLY)
... führt zu Fehler 8985:
Nachricht 8985, Ebene 16,
Status 1, Zeile 1 Die Datei 'XY' für die Datenbank '<meine Datenbank>' in sys.database_files konnte nicht gefunden werden. Die Datei existiert entweder nicht oder wurde gelöscht.
DECLARE @filename SYSNAME; SELECT @filename = name FROM sys.database_files ...);
und dann @filename
im Argument verwenden DBCC
?
DBCC SHRINKFILE (XY, 0, TRUNCATEONLY)