【发布时间】:2014-11-24 22:01:19
【问题描述】:
你好
我有一个 Sql Server 数据库,它可以从两个不同的应用程序访问,其中一个应用程序只是从数据库中选择(我们将其命名为 x)和另一个(将其命名为 y)正在做所有事情。 我的问题是当 y 应用程序通过事务插入或更新数据库时,x 应用程序无法从数据库中读取。
我阅读了有关事务隔离级别的信息,发现 SNAPSHOT 隔离级别对我的情况很好,但我不知道如何使数据库的默认隔离级别为 SNAPSHOT这样我就不必为每个事务或每个连接指定隔离级别。
简而言之: 我想在另一个应用程序的事务正在运行时通过一个应用程序从数据库中读取数据。
谢谢
【问题讨论】:
-
这听起来更像是资源问题,而不是数据库问题。如果两个数据库彼此独立,则数据库 x 没有响应的唯一(主要)原因是缺乏资源,无论是处理时间还是磁盘访问。这可能是数据库 a 上缺少索引的问题,或者是驱动器等待时间过长、内存不足等的贫血服务器……如果数据库相互交互,请参阅以下有关隔离设置的答案。
-
对不起,先生,您想念我了。我没有两个不同的数据库,我有两个不同的应用程序(x 和 y)处理同一个数据库。
-
是的,我想念这个问题。
-
考虑到这一点,M.Ali 有一个很好的观点。如果数据不必 100% 是最新的,则将数据分解为事务数据库和报告数据库可能会解决问题而不会出现问题。然后通过复制、批处理将相关信息移植到报告服务器......
标签: sql sql-server transactions