有一個應用程序可以在SQL Server 2008上啓動事務並移動一些數據。然後,雖然交易仍未提交,但應用會打印出一些標籤。在打印成功之前,事務不會被提交是非常重要的;如果發生打印錯誤,則會回滾所有內容。在兩個連接之間共享事務空間
現在,印刷引擎是a)變得相當龐大和複雜,並且b)最終需要很多地方。因此決定分離發動機並使其成爲服務。
是的,可以將打印所需的所有數據從客戶端應用程序傳遞到該服務器,以便服務器僅打印並且不關心數據庫。但是,這意味着在需要打印的每個應用程序中留下一堆代碼和標籤模板;有效地,然後將發生非常少的分離。相反,這將是extreemely高效(我寫和維護更容易)只傳遞所需的服務,然後將數據庫和獲取數據的ID。所有格式和佈局將集中,應用程序將只從打印作業12345請求5個送貨單。
現在,這不會發生,因爲交易在打印時尚未提交。該服務將無法讀取數據,並使用READ UNCOMMITTED不是一種選擇。
我打算使用舊的sp_bindsession
來加入兩個會話,即應用程序和服務,但之後它突然被棄用並從未來版本中刪除。幫助建議我使用MARS或分佈式交易,但我看不出他們會如何提供幫助。
有什麼建議嗎?
Rigth。 經過一些雖然,我們決定不使用任何depecated功能 已決定由印刷服務全局定義的每個標籤格式將有一個相應的存儲的SQL函數將返回帶有給定printjob的標籤參數的XML,調用者應用程序將在其上下文中執行該函數,並將所得到的XML作爲字符串傳遞給打印服務,這基本上是您的建議,但有點整理。 – GSerg 2010-01-13 10:25:33