Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
访问对SQL Server数据库的临时更改_Sql_Sql Server - Fatal编程技术网

访问对SQL Server数据库的临时更改

访问对SQL Server数据库的临时更改,sql,sql-server,Sql,Sql Server,我的一所老学院花了很多时间在MicrosoftSQLServer中实现一个数据库,在那里他用VBA宏更新它。数据库更新需要6分钟,每次观察都要进行多次更新。这会使观测在更新期间处于无效状态 我的问题是,有没有一个快速修复方法可以让其他人在更新时查询数据库?如果他想从中间状态读取数据,如果他只做了只写的更改,这两者都是可能的吗 我知道它不好看,我们将在后面交换数据库。因此,不要回答:“远离VBA”。对于发布的有限信息量,我能想到的最好办法是在更新数据库之前复制数据库,并允许仍需要只读访问权限的程序

我的一所老学院花了很多时间在MicrosoftSQLServer中实现一个数据库,在那里他用VBA宏更新它。数据库更新需要6分钟,每次观察都要进行多次更新。这会使观测在更新期间处于无效状态

我的问题是,有没有一个快速修复方法可以让其他人在更新时查询数据库?如果他想从中间状态读取数据,如果他只做了只写的更改,这两者都是可能的吗


我知道它不好看,我们将在后面交换数据库。因此,不要回答:“远离VBA”。

对于发布的有限信息量,我能想到的最好办法是在更新数据库之前复制数据库,并允许仍需要只读访问权限的程序在更新主数据库时查询副本。

我有一个类似的问题,我通过执行以下操作来解决它:

  • 在表上创建索引(如果还没有索引)
  • 更改索引并将ALLOW_PAGE_LOCKS=off和ALLOW_ROW_LOCKS=on设置为on
  • 通过“readpass”查询表以避免未提交的记录而不等待

  • 您需要确定性能低下的原因-vba速度慢吗?更新查询是否优化不足,运行时间过长?在当前状态下,我们几乎无法回答您的问题-您已经说过,在更新过程中查询数据库是不合适的,因此建议无锁场景不会有帮助(如果甚至是导致缓慢的行锁定),这些“多个更新”应该在单个事务中完成,那么数据库在更新过程中就不会处于无效状态了@horse所说的结合快照隔离应该满足您的需要