SQL Sever是否支持内存数据库?

时间:2019-03-08 08:21:53

标签: sql-server integration-testing in-memory-database database-testing

我基本上有一个测试场景,我在其中

  1. 创建数据库
  2. 用一些数据填充它
  3. 执行要测试的业务逻辑,以修改数据。我不拥有业务逻辑实现,而不是数据库模式。我必须测试已经存在的东西。
  4. 确认数据已按预期更改
  5. 删除数据库

SQL Server是否仅在内存中支持类似的内容,以便我可以播种它?显然我不需要持久性

1 个答案:

答案 0 :(得分:1)

SQL Server具有内存中的OLTP。此功能与您正在寻找的功能非常接近。从SQL Server 2016 SP1开始,所有版本都可以使用,包括sql express。

  

显然我不需要持久性

选项DURABILITY=SCHEMA_ONLY仅保留元数据。这样的方案对于登台表可能是最佳的,因为它会导致无锁/无锁/无日志的数据加载方式。显然,该表将无法在实例/服务重启后继续存在。

CREATE DATABASE [Test]
GO 
-- Memory Optimized FG
ALTER DATABASE [Test] ADD FILEGROUP [MemoryOptimizedFG] CONTAINS MEMORY_OPTIMIZED_DATA 
ALTER DATABASE [Test] ADD FILE (name='Test1', filename='D:\SQLData\TestInMemory') TO FILEGROUP [MemoryOptimizedFG]
GO

CREATE TABLE dbo.[TestTable] (
    ID int NOT NULL IDENTITY (1, 1) PRIMARY KEY NONCLUSTERED,
    ColumnID int NOT NULL,
    Description varchar(100) NOT NULL,
    dateAndTime datetime NOT NULL
)  WITH (MEMORY_OPTIMIZED=ON, DURABILITY=SCHEMA_ONLY) 
GO

参考文献: