有誰知道驗證數據庫中所有存儲過程中查詢的正確性的方法嗎? 我在想如果你在代碼文件中修改某些東西的場景,只是做一個重建會顯示你編譯錯誤,指向你需要修復的地方。在數據庫場景中,假設您修改表並刪除存儲過程中使用的列,則只有在第一次運行該過程時纔會知道有關此問題的任何信息。解析數據庫中的所有存儲過程
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. 從SQL Server 2008中的所有數據庫獲取所有存儲過程
- 7. 數據庫存儲過程
- 8. SQL存儲過程解析
- 9. 解析存儲過程
- 10. 常用功能/所有數據庫的存儲過程
- 11. 搜索SQL存儲過程的所有數據庫
- 12. 解析RSS數據庫和存儲在數據庫中
- 13. H2數據庫中的存儲過程
- 14. 解析存儲過程中的xml oracle
- 15. MYSQL中的XML解析存儲過程
- 16. 解析點com破壞解析數據庫中的所有userdata
- 17. 如何解析已存儲在數據庫中的數據 - PHP
- 18. 如何從特定數據庫下載所有存儲過程
- 19. 更改ANSI_NULLS在數據庫設置爲所有存儲過程
- 20. 存儲過程中使用的所有數據庫中的表的列表
- 21. sql server - 使用存儲過程使用服務器上所有內存的存儲過程的數據庫
- 22. TSQL在存儲過程中解析XML
- 23. 數據庫交互的通用存儲庫或存儲過程?
- 24. 將數組的文本存儲到解析數據庫中
- 25. 從腳本中跟蹤存儲過程存儲的數據庫
- 26. 解析字符串的存儲過程
- 27. 在數據庫的所有表中搜索關鍵字的存儲過程
- 28. 解析將類中的所有數據保存到本地數據庫
- 29. 具有OSB中的存儲過程的數據庫適配器
- 30. HTTP 400 - 無法解析遠程存儲庫npm元數據
的可能重複(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