我有一个使用 SQL2008 SMO 来获取所有数据库的 SpaceAvailable 属性的应用程序,但它经常被其他进程长时间阻塞。我注意到我可以运行它在 SSMS 中生成的查询,而在 READ UNCOMMITTED 隔离中没有问题。
那么,是否存在强制 SQL SMO 使用未提交读隔离的方法?
我有一个使用 SQL2008 SMO 来获取所有数据库的 SpaceAvailable 属性的应用程序,但它经常被其他进程长时间阻塞。我注意到我可以运行它在 SSMS 中生成的查询,而在 READ UNCOMMITTED 隔离中没有问题。
那么,是否存在强制 SQL SMO 使用未提交读隔离的方法?
抱歉,回复晚了。我想我会发布这个,以防将来有人需要帮助。
您可以在创建服务器实例时设置指定隔离级别。
确保您有以下参考资料:
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.ConnectionInfo;
然后在创建连接的时候设置隔离级别
Server theSQLServer = new Server(@"cb-z420vmsasq1\sql12");
theSQLServer.ConnectionContext.SqlConnectionObject.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted);
您可能需要针对不同的交易进行更改。
是的,您可以在查询顶部使用 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED。您也可以根据需要更改隔离级别。在 msdn.microsoft.com 中搜索隔离级别。