gpt4 book ai didi

sql-server - SQL Server 2019 - 服务器主体 "sa"在当前安全上下文下无法访问数据库 "DB_NAME"

转载 作者:行者123 更新时间:2023-12-03 20:49:21 25 4
gpt4 key购买 nike

我编写了以下存储过程:

CREATE PROCEDURE dbo.usp_DEMO 
@LOGINSQL VARCHAR(30),
@DBNAME VARCHAR(40)
WITH EXECUTE AS owner
AS
DECLARE @SQL NVARCHAR(1000)
SET @SQL = 'USE'
SET @SQL = @SQL + ' ' + @DBNAME + ' ' + ' CREATE USER ' + ' '
+ @LOGINSQL + ' ' + ' FOR LOGIN ' + ' ' + @LOGINSQL + ' '
+ ' ALTER ROLE [DB_OWNER] ADD MEMBER ' + ' '
+ @LOGINSQL
EXEC sp_executesql @SQL
像这样运行:
use master
go
exec usp_DEMO '<LOGIN>','<DATABASE>'
我在 SQL Server 2019 STD 版 (RTM-CU6) (KB4563110) 中从 Master 运行,出现此错误:

Msg 916, Level 14, State 2, Line 14
The server principal "<OWNER_LOGIN>" is not able to access the database "<DB_NAME>" under the current security context.


这个想法是使用存储过程将登录映射到数据库并赋予 db_owner 角色。
知道如何解决错误吗?

最佳答案

删除 WITH EXECUTE AS owner

关于sql-server - SQL Server 2019 - 服务器主体 "sa"在当前安全上下文下无法访问数据库 "DB_NAME",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63696911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com