2014-03-28 78 views
1

我已經使用了Delphi一年的UniDac VCL組件,但最近開始使用SQL Server 2012開發一個相當大的項目,我想在不同的方案中分開表和存儲過程,我的整個邏輯是因此存儲過程中沒有查詢的程序中只有存儲過程的名稱和參數。UniDac找不到存儲過程架構

的問題是,當我從dbo改變我的存儲過程的模式,讓我們說SchemaA,然後嘗試從德爾福運行它TUniStoredProc組件發現它ProcedureName而不是SchemaA.ProcedureName會拋出沒有找到存儲過程的例外執行。

我不能爲不同的用戶分配不同的模式作爲他們的默認方案,因爲有些用戶根據權限使用4-6個方案。我已經嘗試過的是手動輸入SchemaA.ProcedureName,而且完美地工作,但對於約150個組件需要花費很多時間,所以我正在尋找更好的解決方案。

有什麼想法?

+0

所以你的問題實際上是:如何在我的所有'TUniStoredProc'組件中將過程名稱從「ProcedureName」更改爲「SchemaA.ProcedureName」?他們全都在數據模塊中,還是分散在你自己的表單之中? –

+0

whell有更多的架構比一個不完全的選擇:P我的問題更多的是如何強制TUniStoredProc自動檢測架構或在服務器中作出正確的權限,如果用戶有db_owner,他可以看到所有的沒有指定存儲過程模式的模式,是的,我所有的存儲過程組件都在兩個獨立的數據模塊中有任何想法? :) – AirWolf

回答

0

我不知道這些組件有多少個表單或模塊,但是如果它們是集中的,則在文本模式下打開表單並進行替換。

UniDac的宏可能會派上用場,可以使用 {MySchema} .ProcedureName並在連接宏中設置MySchema名稱。

+0

這將是一個很好的決定,如果我只使用一個方案,但在當時我使用了7個模式,所以多數民衆贊成我的選擇,我實際上做的發現uid,Unidac不太喜歡架構,所以我只是決定不要使用它們 – AirWolf