Replication

有沒有辦法(乾淨或不干淨)消除生產 SQL Server 數據庫上的文件流數據文件?

  • January 2, 2019

有沒有辦法(乾淨或不干淨)消除生產數據庫上的文件流數據文件?

我強制對空文件流進行垃圾收集:

sp_filestream_force_garbage_collection @dbname = N'DB' ,   @filename = N'db_mod';  

我試過了,記憶體選擇和文件流實際上並沒有在數據庫上啟用

SELECT name, description FROM sys.dm_os_loaded_modules WHERE description = 'XTP Native DLL'

這個腳本給出了 db 中的文件:

選擇 sdf.name AS

$$ FileName $$, 尺寸/128 AS$$ Size_in_MB $$, fg.name AS$$ File_Group_Name $$ FROM sys.database_files sdf INNER JOIN sys.filegroups fg ON sdf.data_space_id=fg.data_space_id 文件名 Size_in_MB File_Group_Name

db 7282 主要 db_mod 1528 db_mod

我可以設法消除這個阻止我使用數據庫鏡像的空文件和文件組嗎?

我當然試過

-- Remove the File

ALTER DATABASE db 刪除文件 db_mod1 ; – 刪除文件組 ALTER DATABASE db REMOVE FILEGROUP db_mod ;

我得到錯誤:

消息 41802,級別 16,狀態 1,第 1 行無法刪除最後一個記憶體優化容器“db_mod1”。

需要明確的是,FILESTREAM 和 In-Memory OLTP 功能是完全獨立的,並且不兼容。即使 In-Memory OLTP 使用 FILESTREAM 的某些組件,也不必啟用 FILESTREAM 功能即可使用 In-Memory OLTP,並且記憶體優化表不能與 FILESTREAM 功能一起使用。

根據您收到的錯誤,您正在嘗試刪除記憶體優化文件組,這是不可能的。

以下查詢返回什麼?

SELECT *
FROM [InMemTest2].sys.database_files
INNER JOIN [InMemTest2].sys.filegroups ON database_files.data_space_id = filegroups.data_space_id
WHERE filegroups.type = 'FX'

引用自:https://dba.stackexchange.com/questions/223825