You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core EF访问SQL Server跨库视图触发权限报错如何解决?

问题解决办法

报错原因是你当前连接DatabaseA使用的userA账户,没有访问DatabaseB的权限,根据你的部署场景选择对应解决方案即可:


场景1:DatabaseA与DatabaseB部署在同一个SQL Server实例

直接给userA授予DatabaseB的访问权限即可,用SQL Server管理员账户执行以下SQL:

-- 切换到DatabaseB
USE DatabaseB
GO
-- 创建userA对应的数据库用户
CREATE USER userA FOR LOGIN userA
GO
-- 授予视图所需的表查询权限,按需调整权限范围
GRANT SELECT ON SCHEMA::dbo TO userA
GO

如果视图涉及写入操作,额外授予INSERT/UPDATE/DELETE对应权限即可。


场景2:DatabaseB部署在独立的SQL Server实例(跨服务器访问,已配置链接服务器)

需要给链接服务器配置userA到远程实例的权限映射,用SQL Server管理员账户在SQL Server A上执行以下SQL:

EXEC master.dbo.sp_addlinkedsrvlogin 
@rmtsrvname = N'你配置的指向SQL Server B的链接服务器名称',
@useself = N'False',
@locallogin = N'userA',
@rmtuser = N'userB',
@rmtpassword = N'userB的密码';

如果配置后仍有报错,可以开启链接服务器的RPC权限:

EXEC master.dbo.sp_serveroption 
@server=N'指向SQL Server B的链接服务器名称', 
@optname=N'rpc', 
@optvalue=N'true';

EXEC master.dbo.sp_serveroption 
@server=N'指向SQL Server B的链接服务器名称', 
@optname=N'rpc out', 
@optvalue=N'true';

验证方式

配置完成后先用SSMS以userA账户登录,直接查询跨库视图确认能正常返回结果,再重启ASP.NET Core项目即可,你的现有代码和连接字符串不需要做任何修改。

内容的提问来源于stack exchange,提问作者user13717625

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 01:54:01