2009-04-20 100 views
0

我試圖在C#中編程實現一些SQL查詢驗證(無需調用實際數據庫)。實質上,我希望用戶能夠輸入視圖,UDF或SP,並立即驗證其依賴項。用戶可以將它們輸入到用於定義數據庫對象的自定義工具中。從SQL查詢獲取依賴關係

因此,如果用戶輸入:

CREATE VIEW someView AS SELECT name, address FROM users 

我能拉出依賴「用戶」,然後覈對存儲在存儲器(例如,表,視圖,等我的數據庫對象的集合..)以確保其中一個依賴項存在。請記住,輸入到我的自定義應用中的實際視圖/ UDF/SP非常複雜,我自己解析它們是不可取的。

我目前正在嘗試使用Microsoft.Data.Schema.ScriptDom.Sql.TSql100Parser來做到這一點。這提供了一個分析方法,它返回查詢的DOM表示。但是,這是一個非常複雜的DOM,我基本上不得不爲它編寫一個完整的解析器。

任何意見/建議?謝謝!

+0

所以你只要想拉的對象在查詢中使用? – IEnumerator 2009-06-26 01:13:58

回答

2

有一個proc,您可以使用命名的sp_depends ...但它不是因爲延遲名稱解析而失敗保護。真的是沒有安全的方式來做到這一點,它已經在最新的版本中變得更好一點,但仍然在頸部

痛苦閱讀本Do you depend on sp_depends (no pun intended)明白我的意思

+0

感謝您的回覆,但我希望在不調用SQL服務器的情況下執行此操作。不會使用sp_depends需要這個嗎? – manu08 2009-04-21 14:01:48