回答
最簡單的,如果你可以在系統上是(他們必須linked - 點擊鏈接服務器的鏈接信息):
EXEC [RemoteServer].DatabaseName.ObjectOwnerName.StoredProcedureName
有關更多信息,請查看here。
此外,爲了擺脫硬編碼服務器名稱,請參閱Paul的answer here涉及同義詞。
遠程服務器名稱周圍的括號只有在名稱包含無效標識符字符時才需要,就像SQL中的其他名稱一樣。我在這裏工作的地方看到了很多,因爲我們有很多帶名稱連字符的服務器,這些服務器需要括號,所以人們最終將它們用於所有服務器名稱,這是不必要的醜事,海事組織。 – 2010-09-08 12:02:52
請參閱我的答案,以便將服務器名稱從存儲過程中抽象出來。這樣你可以在不同環境之間移動代碼,而不必修改引用本身。 – 2010-09-08 12:03:54
另外,如果問題存儲過程屬於數據庫所有者,倒數第二部分僅爲數據庫所有者(dbo)。在大多數設計中,它的確如此,但更正確的規範將是ObjectOwnerName。 – 2010-09-08 12:07:00
除了@Kyles的回答,您可以添加一個synonym來消除對較長/鏈接結構的需要。這將抽象引用的服務器。所以你可以將SP從UAT移到LIVE環境,代碼不必改變。在兩個環境中的同義詞將被設置在每個服務器上以正確引用該環境中的另一個服務器。
同義詞應該是最佳實踐,硬編碼4部分名稱只是要求麻煩。 +1 – user404463 2010-09-08 12:06:00
@ Daytona250:沒錯,但是知道功能是可用的,這始終是問題。只有一位新的DBA進入我以前的角色,向團隊強調了這一點。在此之前,我們認爲硬編碼鏈接是唯一的選擇。 – 2010-09-08 12:23:55
- 1. 從另一臺機器上的其他存儲過程調用存儲過程
- 2. 如何調用其他存儲過程中的存儲過程
- 3. 調用存儲在另一個存儲過程的過程
- 4. 是否有調用其他存儲過程的存儲過程不好?
- 5. 使用其他存儲過程的存儲過程列表
- 6. 調用其他存儲過程
- 7. 更新三個不同服務器上的存儲過程
- 8. 通過EF6調用存儲過程,其中存儲過程調用另一個過程的結果
- 9. 如何從另一個存儲過程調用存儲過程?
- 10. 從另一個存儲過程調用存儲過程
- 11. 調用存儲過程到另一個存儲過程
- 12. 從另一個存儲過程調用Sybase存儲過程
- 13. 從另一個存儲過程動態調用存儲過程
- 14. RIA服務 - 調用存儲過程
- 15. 從存儲過程中調用存儲過程在MySQL中
- 16. 一個是否通過存儲庫/服務/其他存儲XML/CSV /其他
- 17. Oracle - 在另一個存儲過程的循環中調用存儲過程
- 18. 動態存儲過程在不同的SQL服務器中?
- 19. 存儲過程..使用SQL服務器
- 20. 在另一個存儲過程中未執行存儲過程
- 21. 無法在另一個存儲過程中調用存儲過程
- 22. 在Oracle中與另一個存儲過程調用存儲過程
- 23. 調用存儲過程中的存儲過程
- 24. 存儲過程調用多個存儲過程
- 25. MySQL從另一個存儲過程調用一個存儲過程
- 26. 從另一個存儲過程調用存儲過程,並將第一個存儲過程的值傳遞到第二個存儲過程
- 27. mysql服務器在哪裏存儲存儲過程代碼?
- 28. 在SQL服務器中執行另一個存儲過程中的存儲過程
- 29. SQL服務器 - 從存儲過程
- 30. SQL服務器:遞歸存儲過程
我假設S.P是「存儲過程」? – 2010-09-08 11:56:15
是的你是對的 – banupriya 2010-09-08 12:04:36