sql-server - SQL Server 是否支持内存数据库?

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

我基本上有一个测试场景,我在那里

  • 创建数据库
  • 用一些数据填充它
  • 执行要测试的业务逻辑,修改数据。我不拥有业务逻辑实现或数据库架构。我必须测试已经存在的东西。
  • 断言数据按预期更改
  • 删除数据库

  • SQL Server 是否仅在内存中支持类似的内容,以便我可以通过删除 #1 和 #5 来加快速度?显然我不需要坚持。

    最佳答案

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

    Obviously I don't need persistence



    选项 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
    

    引用:
  • https://www.red-gate.com/simple-talk/sql/database-administration/in-memory-oltp-understanding-memory-optimized-tables/
  • https://docs.microsoft.com/en-us/sql/relational-databases/in-memory-oltp/in-memory-oltp-in-memory-optimization?view=sql-server-2017
  • 关于sql-server - SQL Server 是否支持内存数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55059223/

    相关文章:

    java - 从 JPA/EclipseLink 生成内存中的 HSQLDB 表(无文件)

    c# - SQL Server 和 C# : get last inserted id

    sql - 将 nvarchar 值转换为数据类型 int 时转换失败

    testing - 删除和组合回归测试以加速测试是否是一种不好的做法?

    javascript - 测试更高级别的 javascript 事件

    java - Spring-Boot 兼容内存数据库,支持字符串数组(String[])数据类型

    sql-server - 模糊字符串匹配 SQL - 不同顺序的单词

    mysql - MS SQL 案例内部计数

    ios - UIAutomation isValid() 立即替代方案

    database - Aerospike 错误 : (9) Client timeout: timeout=1000 iterations=1 failedNodes=0 failedConns=0