有誰知道驗證數據庫中所有存儲過程中查詢的正確性的方法嗎? 我在想如果你在代碼文件中修改某些東西的場景,只是做一個重建會顯示你編譯錯誤,指向你需要修復的地方。在數據庫場景中,假設您修改表並刪除存儲過程中使用的列,則只有在第一次運行該過程時纔會知道有關此問題的任何信息。解析數據庫中的所有存儲過程
6
A
回答
4
你所描述的是單元測試的目的。存儲過程和函數通常需要設置參數,並且如果存儲過程或函數封裝了動態SQL,則有可能錯過了[corner]情況。
此外,你所提到的只是檢查基本錯誤 - 沒有任何關於驗證返回的數據。例如 - 我可以更改數字列的精度...
這也進入了對於直接問題應該發生的基本測試,以及迴歸測試以確保沒有不可預見的問題。
1
您可以使用SCHEMABINDING創建所有對象,這會阻止您更改任何基礎表而不刪除並重新創建構建於其上的視圖和過程。
根據您的開發過程,這可能會非常麻煩。儘管我提供它作爲解決方案,因爲如果你想確保數據庫中所有過程的正確性,這將做到這一點。
0
我在MSDN(SQL Server 2012)上找到了這個例子。我想這可以在某些情況下使用:
USE AdventureWorks2012;
GO
SELECT p.name, r.*
FROM sys.procedures AS p
CROSS APPLY sys.dm_exec_describe_first_result_set_for_object(p.object_id, 0) AS r;
相關問題
- 1. 解析數據庫中的存儲過程
- 2. 編寫數據庫中所有存儲過程中的文本
- 3. 在所有數據庫中搜索存儲過程/函數
- 4. 顯示數據庫中的所有存儲過程
- 5. SQL Server中的所有存儲過程都存儲在哪個數據庫中?
- 6. 常用功能/所有數據庫的存儲過程
- 7. 解析RSS數據庫和存儲在數據庫中
- 8. H2數據庫中的存儲過程
- 9. MYSQL中的XML解析存儲過程
- 10. 解析點com破壞解析數據庫中的所有userdata
- 11. 更改ANSI_NULLS在數據庫設置爲所有存儲過程
- 12. 如何通過存儲過程執行數據庫中的所有視圖
- 13. sql server - 使用存儲過程使用服務器上所有內存的存儲過程的數據庫
- 14. 從腳本中跟蹤存儲過程存儲的數據庫
- 15. 解析字符串的存儲過程
- 16. 具有OSB中的存儲過程的數據庫適配器
- 17. HTTP 400 - 無法解析遠程存儲庫npm元數據
- 18. 授予數據庫中所有存儲過程的用戶執行權限?
- 19. 如何在SQL數據庫中搜索所有存儲過程的文本
- 20. 如何統計SQL Server中數據庫的所有存儲過程?
- 21. 授予對某個數據庫中所有存儲過程的執行權限
- 22. 在給定數據庫的所有存儲過程中搜索關鍵詞?
- 23. 爲具有特定表的所有數據庫創建動態存儲過程
- 24. 解析xml在mysql中存儲數據
- 25. 存儲和解析數據庫中的布爾表達式
- 26. 通過BeautifulSoup解析存儲在URL中的數據?
- 27. java - 存儲過程數據庫鏈接
- 28. postgresql存儲過程輸入json解析
- 29. 如何在SQL Server數據庫中一次性刪除所有存儲過程?
- 30. 存儲過程中的H2數據庫選擇數據
的可能重複(HTTP [我如何以編程方式檢查(解析)一個TSQL語句的有效性?]://計算器。 com/questions/3084387/how-can-i-program-check-parse-the-validity-of-a-tsql-statement)@CyberDude - 你可以使用'SET NOEXEC ON',但我認爲最好的方法是寫一個實用程序來實際嘗試並執行它們並回滾。 – 2010-09-18 18:25:24
我想我可以建立一個動態腳本,列出所有程序並嘗試執行它們。一個有趣的部分是嘲笑所有必需的參數,但......另一種方法是檢索過程文本並嘗試執行「ALTER PROCEDURE」,但不會更改任何內部的任何內容。 – CyberDude 2010-09-18 18:37:43
解析是有用的第一步,您可以解析修改後的存儲過程以驗證其語法。但是將它們加載到數據庫中就可以做到這一點,所以這沒有什麼好處。通過一些常規方法驗證它們的工作似乎更有用。 OMG Ponies提供的「單元測試」答案相當不錯。 – 2010-09-19 04:44:17