Replication
有沒有辦法(乾淨或不干淨)消除生產 SQL Server 數據庫上的文件流數據文件?
有沒有辦法(乾淨或不干淨)消除生產數據庫上的文件流數據文件?
我強制對空文件流進行垃圾收集:
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'