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