我有一個存儲過程,在我的SQL Server,這一次設置權限給所有的存儲過程爲particulat數據庫中的一個數據庫。有沒有一種方法來創建的方式這個存儲過程中,我可以輕鬆地從任何數據庫的SQL服務器中,如果讓我怎麼去這樣做這樣的事情可以創建使用SQL存儲過程的所有數據庫
回答
我有我的SQL服務器中的存儲過程,在一個數據庫中,該 權限集在一次所有存儲過程的特定 數據庫。
你可以歸檔相同的結果要容易得多:
創建新的角色,例如
db_executor
CREATE ROLE db_executor
授予該角色的執行權限,不指定任何對象:
GRANT EXECUTE TO db_executor
這個角色,現在對所有存儲過程和函數執行權限 - 它甚至會得到爲相同權限的任何未來的存儲過程您添加到您的數據庫!
只需將此角色分配到您需要的用戶,你就大功告成了....
你試過3或4部分名字來稱呼它?
InstanceName.DatabaseName.dbo.usp_Name
反過來可能在其他數據庫參考對象使用相同的約定這一程序。因此,您可以參數化要操作的數據庫的名稱,並使用動態SQL生成4個部分名稱來引用對象,如系統表。
雖然以授予執行所有程序的這一特定問題的最佳解決方案是the one provided by marc_s,實際的問題是,有沒有方法來創建單個存儲過程並使其可用於所有數據庫。
做到這一點的方式是記錄在https://nickstips.wordpress.com/2010/10/18/sql-making-a-stored-procedure-available-to-all-databases/:
- 創建於
master
數據庫中的存儲過程。 - 必須命名入手
sp_
,例如sp_MyCustomProcedure
- 執行
sys.sp_MS_marksystemobject
傳遞過程的名稱,例如EXEC sys.sp_MS_marksystemobject sp_MyCustomProcedure
下面是一個簡單的例子,剛剛選擇當前數據庫的名稱:
use master
go
create procedure dbo.sp_SelectCurrentDatabaseName as begin
select db_name()
end
go
execute sys.sp_MS_marksystemobject sp_SelectCurrentDatabaseName
go
任何數據庫,然後將工作在調用exec dbo.sp_SelectCurrentDatabaseName
。
爲了將過程標記爲不是系統對象,在https://social.msdn.microsoft.com/Forums/sqlserver/en-US/793d0add-6fd9-43ea-88aa-c0b3b89b8d70/how-do-i-undo-spmsmarksystemobject?forum=sqltools處建議了一些令人討厭的黑客行爲,但是最簡單的方法是刪除並重新創建過程。
買者
過程中創建的系統程序,如:這是打破未命名自己的過程,作爲sp_xxx
的一般規律,由於它們與衝突的可能性內置在SQL Server的未來版本的程序。因此,這應該小心謹慎地完成,而不僅僅是創建一個隨機命名的過程的負載,你會發現有用的。
避免這種常見的簡單方法是將自己的公司/個人前綴添加到Microsoft不太可能使用的過程中,例如, sp_MyCompany_MyCustomProcedure
。
- 1. sql server - 使用存儲過程使用服務器上所有內存的存儲過程的數據庫
- 2. SQL - 使用多個可選參數創建存儲過程
- 3. 爲具有特定表的所有數據庫創建動態存儲過程
- 4. 創建存儲過程 - SQL
- 5. 如何使用H2數據庫創建存儲過程?
- 6. SQL Server中的所有存儲過程都存儲在哪個數據庫中?
- 7. 如何創建存儲過程來創建數據庫
- 8. 使用現有存儲過程創建存儲過程以填充新表格
- 9. 創建可以使用不同表格的存儲過程
- 10. 常用功能/所有數據庫的存儲過程
- 11. 使用可變數量的參數創建存儲過程
- 12. 可以使用存儲過程中的動態SQL創建MySQL觸發器嗎?
- 13. 如何爲SQL-Sever創建和使用存儲過程,該過程將使用VS 2010刪除數據庫中所有表中的數據?
- 14. 在SQL中,可能有一個表示可以在存儲過程中使用的數據庫表的變量?
- 15. 是否可以從Oracle數據庫調用MySQL存儲過程?
- 16. 創建通用存儲庫從存儲過程返回數據與EFCore
- 17. 使用存儲過程創建存儲過程
- 18. 在所有數據庫中搜索存儲過程/函數
- 19. 編寫數據庫中所有存儲過程中的文本
- 20. 顯示數據庫中的所有存儲過程
- 21. 解析數據庫中的所有存儲過程
- 22. 使用存儲過程從硬盤備份SQL Server數據庫?
- 23. SQL 2005/2008創建存儲過程和數據庫交互的順序圖
- 24. 從存儲過程創建的select語句中存儲數據
- 25. 如何在SQL數據庫中搜索所有存儲過程的文本
- 26. 如何統計SQL Server中數據庫的所有存儲過程?
- 27. 如何在存儲過程中使用模式創建新的數據庫?
- 28. 爲SQL Server存儲過程創建xml
- 29. 創建Oracle PL/SQL存儲過程
- 30. 從SQL存儲過程創建/更改
不是我所知 - 至少在我所知道的任何數據庫系統中都沒有。存儲過程始終是單個數據庫的一部分 - 對於這些存儲過程沒有「全局」範圍... –