Apakah ini bug?
Tidak, itu bukan bug. Dengan desain. Mereka disimpan untuk tujuan pemecahan masalah dan dukungan.
Dari SQL_Server_2014_In-Memory_OLTP White_Paper
Administrator database tidak perlu memelihara file yang dihasilkan oleh kompilasi asli. SQL Server secara otomatis menghapus file yang dihasilkan yang tidak lagi diperlukan, misalnya pada tabel dan penghapusan prosedur tersimpan, dan pada drop database, tetapi juga pada server atau restart database.
Saya mencoba repro skenario Anda pada SQL Server 2014 + RTM + (Build12.0.2000.8)
- Dev Edition server dengan membuat tabel uji memori yang dioptimalkan dan memeriksa dll dimuat menggunakan
SELECT name, description FROM sys.dm_os_loaded_modules
WHERE description = 'XTP Native DLL'
Setelah saya menjatuhkan meja saya, dll
masih muncul di output pernyataan pilih di atas dan file-file masih dalam folder dan setelah restart mereka masih ada juga.
Dari Buku Online -
Tidak diperlukan interaksi pengguna untuk mengelola file-file ini ( .c, .obj, .xml, .pdb., .dll
). SQL Server akan membuat dan menghapus file yang diperlukan.
Jadi saya kira, kita hanya harus mengikuti apa yang dikatakan Microsoft - SQL server akan mengaturnya untuk kita :-)
HANYA UNTUK TUJUAN PENDIDIKAN:
Saya berhasil membersihkan file lama dengan
- Menerbitkan manual
CHECKPOINT
pada basis data.
- Membuat database offline dan kemudian membawanya online.
Idealnya, Anda tidak harus me-restart instance server, hanya pos pemeriksaan manual dan offline / online dari database yang akan menghapus file.
misalnya 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
--- sekarang periksa apakah dll dimuat atau tidak
SELECT name, description FROM sys.dm_os_loaded_modules WHERE description = 'XTP Native DLL'
--- sekarang drop table dan lakukan pemeriksaan manual
use db1;
drop table dbo.t1;
checkpoint
Namun modul ini dimuat dalam memori (bahkan server yang restart kadang-kadang memuat modul )
The ( .c, .obj, .xml, .pdb., .dll
) masih ada di folder:
Sekarang ambillah basis data offline dan bawa online - ( .c, .obj, .xml, .pdb., .dll
) semuanya hilang ...