我有一个技术用户,对数据库的权限非常有限。我授予了其中一个程序的权限,但是这个程序使用了很多其他的东西(特别是引用其他数据库)。
我的程序如下:
CREATE PROCEDURE dbo.example AS BEGIN
SELECT * FROM other_db.dbo.table
SELECT * FROM yet_another_db.dbo.table
INSERT INTO dbo.some_local_tables VALUES (1,2,3)
END
用户目前无法访问other_db
和yet_another_db
。
如何授予存储过程权限,包括实际执行该过程所需的所有权限?
答案 0 :(得分:0)
以下是提供访问其他数据库的不同方案的链接:
https://www.mssqltips.com/sqlservertip/2549/options-for-cross-database-access-within-sql-server/
简而言之:您必须授予此用户访问权限或遵循证书签名方案(请查看该文章末尾的其他链接。
Cert方案将允许您不将当前用户映射到其他数据库,也不会明确地向他提供该数据库的任何权限。但是他将能够运行这个访问其他数据库的过程。