Đây có phải là một lỗi?
Không, nó không phải là một lỗi. Đó là do thiết kế. Chúng được giữ cho mục đích khắc phục sự cố và hỗ trợ.
Từ SQL_Server_2014_In-Memory_OLTP White_Paper
Quản trị viên cơ sở dữ liệu không cần phải duy trì các tệp được tạo bởi quá trình biên dịch gốc. SQL Server tự động loại bỏ các tệp được tạo không còn cần thiết, ví dụ như trên bảng và xóa thủ tục được lưu trữ, và trên cơ sở dữ liệu thả, mà còn trên máy chủ hoặc cơ sở dữ liệu khởi động lại.
Tôi đã cố gắng lặp lại kịch bản của bạn trên SQL Server 2014 + RTM + (Build12.0.2000.8)
máy chủ - Dev Edition bằng cách tạo bảng thử nghiệm được tối ưu hóa bộ nhớ và kiểm tra dll được tải bằng cách sử dụng
SELECT name, description FROM sys.dm_os_loaded_modules
WHERE description = 'XTP Native DLL'
Sau khi tôi bỏ bảng, phần dll
vẫn xuất hiện trong đầu ra của câu lệnh select ở trên và các tệp vẫn nằm trong thư mục và sau khi khởi động lại chúng vẫn ở đó.
Từ sách trực tuyến -
Không cần tương tác người dùng để quản lý các tệp này ( .c, .obj, .xml, .pdb., .dll
). SQL Server sẽ tạo và xóa các tệp khi cần thiết.
Vì tôi đoán, chúng ta chỉ cần làm theo những gì Microsoft nói - Máy chủ SQL sẽ quản lý chúng cho chúng ta :-)
CHỈ DÀNH CHO MỤC ĐÍCH GIÁO DỤC:
Tôi quản lý để dọn sạch các tập tin cũ bằng cách
- Phát hành một hướng dẫn
CHECKPOINT
trên cơ sở dữ liệu.
- Lấy cơ sở dữ liệu ngoại tuyến và sau đó đưa nó trực tuyến.
Tốt nhất, bạn không nên khởi động lại phiên bản máy chủ, chỉ cần điểm kiểm tra thủ công và ngoại tuyến / trực tuyến của cơ sở dữ liệu sẽ xóa các tệp.
ví dụ: Repro:
USE master
GO
create database db1
GO
ALTER DATABASE db1 ADD FILEGROUP db1_mod CONTAINS memory_optimized_data
GO
-- adapt filename as needed
ALTER DATABASE db1 ADD FILE (name='db1_mod', filename='D:\SQLServer2014\MSSQL12.SQL2014\MSSQL\DATA\db1_mod') -- change here as per your need !!
TO FILEGROUP db1_mod
GO
USE db1
GO
CREATE TABLE dbo.t1
(c1 int not null primary key nonclustered,
c2 int)
WITH (MEMORY_OPTIMIZED=ON)
GO
--- bây giờ hãy kiểm tra xem dll đã được tải hay chưa
Tên CHỌN, mô tả TỪ sys.dm_os_loaded_modules WHERE description = 'XTP Native DLL'
--- bây giờ thả bảng và làm một điểm kiểm tra thủ công
use db1;
drop table dbo.t1;
checkpoint
Vẫn mô-đun được tải trong bộ nhớ ( đôi khi máy chủ khởi động lại sẽ tải mô-đun đôi khi )
( .c, .obj, .xml, .pdb., .dll
) Vẫn còn trong thư mục:
Bây giờ hãy lấy cơ sở dữ liệu ngoại tuyến và sau đó mang nó trực tuyến - ( .c, .obj, .xml, .pdb., .dll
) đã biến mất ...