如果我使用一個Web應用程序的Web數據管理員,我編輯的存儲過程的SQL查詢,它重新編譯它自己? (新的SQL Server和數據庫開發的這一側)SQL Server存儲過程自動重新編譯?
回答
SQL是一種腳本語言,這意味着你寫的代碼不編譯。而是存儲在服務器上以備後用。
當您編輯存儲過程,你可以執行ALTER腳本,或則DROP創建腳本。這會將Web數據管理員(或SSMS)窗口中的文本發送到服務器,併發出一條命令,通知服務器將此新查詢作爲過程存儲以供將來使用。
因此,簡而言之,是的,如果你執行ALTER腳本。
MSSQL Server會保持query plans緩存,但這是不一樣的編譯代碼。
的SQL Server管理這個緩存,如果緩存一個計劃,不是最優的可以是一些痛苦的根源。雖然這發生在我身上小於5倍15年(這似乎是與特定的服務器有問題),其最好讓SQL服務器處理這個問題,並沒有觸及它。
您可以強制的SQLServer通過提供WITH RECOMPILE選項重新編譯。同樣的原則同樣適用,除非你有一個實質性的理由,不要。
@Andrew理髮 - 我大膽點 – StingyJack
燁;但是我發現有時人們在提出'WITH RECOMPILE'時會斷開連接,認爲在Sproc的定義中需要使它從緩存中清除該緩存。我沒有說出我說得對的,而且*似乎表明你沒有說出你所說的話。刪除! –
- 1. 手動重新編譯存儲過程SQL Server
- 2. SQL Server - 強制NO重新編譯存儲過程
- 3. 什麼時候存儲過程重新編譯?(SQL Server)的
- 4. SQL Server過程重新編譯
- 5. 更新統計信息重新編譯sql server中的存儲過程
- 6. SQL Server T-SQL:使用存儲過程自動重新執行SQL報告
- 7. 什麼因素會導致SQL Server上的存儲過程重新編譯?
- 8. 「重新編譯」SQL Server上的存儲過程是什麼意思?
- 9. 重新編譯存儲過程時是否還重新編譯了依賴性存儲過程?
- 10. Oracle PL/SQL存儲過程編譯器vs PostgreSQL PGSQL存儲過程編譯器
- 11. 更新無法編譯存儲過程
- 12. Oracle SQL編譯錯誤 - 存儲過程
- 13. PL/SQL存儲過程編譯錯誤
- 14. SQL Server存儲過程 - 重構
- 15. SQL Server存儲過程編譯時驗證
- 16. 如何預編譯SQL Server中的存儲過程?
- 17. 更新存儲過程 - SQL Server 2012
- 18. 運行SQL Server存儲過程(更新)
- 19. SQL Server複製 - 新的存儲過程
- 20. MSSQL存儲過程中得到重新編譯每次執行
- 21. 如何確定存儲過程是否每次重新編譯?
- 22. 用重新編譯聲明存儲過程
- 23. 動態SQL Server存儲過程
- 24. SQL Server動態存儲過程
- 25. 存儲過程SQL Server
- 26. Sql server存儲過程
- 27. SQL Server存儲過程sp_executesql
- 28. sql server 2000存儲過程
- 29. SQL Server 2005存儲過程
- 30. 與SQL Server存儲過程
事實上,SQL Server存儲過程「編譯」在他們的第一次運行。 [SQL服務器 - 存儲過程都編上首次運行(http://blog.sqlauthority.com/2009/11/08/sql-server-stored-procedure-are-compiled-on-first-run-sp-taking - 更長時間運行的第一次/)這是使用Sprocs的(邊際)好處之一。不過,重複使用的文本查詢可以獲得許多相同的好處。然而,你注意到使用'ALTER'(或'DROP',然後'CREATE')確實會導致重新編譯。否則,新的sproc將不會生效。 –
@AndrewBarber優秀的一點。我甚至都沒有想過所有的SP重新編譯和調整爵士樂。想知道如果原來的問題是關於編譯或不... –