2

是否有指定transaction isolation level当水晶报表查询一个SQL Server 2005数据库没有诉诸于以下任何一种方式:使用Crystal Reports的SQL Server 2005:设置事务隔离级别

  • 封装报告的在查询本身之前执行SET TRANSACTION ISOLATION LEVEL...存储过程的查询
  • 手写Crystal Reports中的SQL查询来执行SET TRANSACTION ISOLATION LEVEL...
+0

你用什么来连接服务器? (即ADO.NET通过SqlClient,ODBC,OleDb?JDBC?等) – chadhoc 2009-11-18 16:16:21

+1

@chadhoc:我正在尝试通过Crystal Reports应用程序完成此操作。我不写代码来使用你提到的数据库连接库。当** it **使用数据库连接库时,我希望Crystal Reports自动配置其数据库连接。 – 2009-11-18 16:38:20

+0

废话,我很害怕 - 不幸的是,我在那里没有太多的帮助。我想如果你通过CR使用ODBC,你可以选择做一些注册表更新,或者在系统上创建一个DSN来指定你想要使用的iso级别,但是如果你使用其他任何东西(即OleDb,JDBC等)我不会有太大的帮助。 – chadhoc 2009-11-18 21:09:39

回答

1

我能够在一个Command对象以嵌入此:

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ 

--Command objects need to return a value 
SELECT GetDate() 

这Command对象是除在数据库专家,我“写”查询

您会详细说明设置隔离级别的必要性吗?

+0

感谢您的回答!这个命令是否会在真正的查询之前执行*并且在相同的连接中(事务隔离级别是基于连接的连接)?我试着将它添加到一个新的报告中,并且Crystal Reports向我提供了“您当前的链接配置包含多个起点”警告,从而让我想知道哪一个首先执行。 – 2009-11-20 16:54:57

+0

我希望设置事务隔离级别,因为我们的其中一个报表具有长时间运行的查询(约2分钟),可以从常用表中选择所有行。因为这会锁定(共享锁)这个经常使用的表中的每一行,所以在查询完成之前,没有其他人能够更新它。 – 2009-11-20 16:55:29

+0

老实说,我不知道它什么时候会执行相对于'主'查询。 这是你可以测试的东西吗? 另一个想法:或许您可以为报告生成的查询创建一个特殊帐户,并设置此帐户隔离级别。 – craig 2009-11-20 17:27:14