我正在尝试缩小数据库文件,但遇到了错误。
使用sys.database_files
作品中的 file_id ,但使用逻辑文件名会产生错误。
两个语句中的逻辑文件名相同,所以这不是问题。此外,正在连接的数据库是相同的。以下按预期工作:
declare @fileId as int = (select file_id from sys.database_files where name = 'XY')
DBCC SHRINKFILE (@fileId, 0, TRUNCATEONLY)
Run Code Online (Sandbox Code Playgroud)
然而以下...
DBCC SHRINKFILE ('XY' , 0, TRUNCATEONLY)
Run Code Online (Sandbox Code Playgroud)
...将导致错误 8985:
消息 8985,级别 16,状态 1,第 1 行
无法在 sys.database_files 中找到数据库“<我的数据库>”的文件“XY”。该文件要么不存在,要么已被删除。
我正在使用这样的 SQL 查询创建 xml:首先是 CTE,然后SELECT
是创建 XML的语句。
那个有效。但是,我想将输出存储在 XML 变量中(如果更容易,表变量也可以)。但我似乎无法让它工作(见第二个片段)。有什么建议?
有效的 XML 生成:
;WITH cte
AS (SELECT ...
)
SELECT ...
FOR XML PATH ('root')
Run Code Online (Sandbox Code Playgroud)
这是我尝试将它存储在表变量中,但我无法让它工作:
DECLARE @myXml TABLE(
x xml
);
;WITH cte
AS (SELECT ...
)
INSERT INTO @myXml SELECT ...
FOR XML PATH ('root')
Run Code Online (Sandbox Code Playgroud)
这是由此产生的错误消息:
Meldung 6819, Ebene 16, Status 1, Zeile 240
Die FOR XML-Klausel ist in einer INSERT-Anweisung nicht zulässig。
(我不能在插入语句中使用 FOR XML。)