Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql &引用;更改角色db“所有者添加成员A”;不';行不通_Sql_Sql Server_Database - Fatal编程技术网

Sql &引用;更改角色db“所有者添加成员A”;不';行不通

Sql &引用;更改角色db“所有者添加成员A”;不';行不通,sql,sql-server,database,Sql,Sql Server,Database,当我执行alterroleb\uowner addmembera时,它给出以下错误 Msg 15151,第16级,状态1,第4行 无法更改角色“A”,因为它不存在或您没有权限 这里提到, 限制和限制 无法更改固定数据库角色的名称 但我找不到与这个错误有任何关系。我要做的是添加一个成员,而不是更改固定的角色名 非常感谢您对解决此问题的任何支持首先删除现有用户角色,然后使用以下命令: USE Databasename GO -- create new role for your s to belon

当我执行
alterroleb\uowner addmembera
时,它给出以下错误

Msg 15151,第16级,状态1,第4行
无法更改角色“A”,因为它不存在或您没有权限

这里提到,

限制和限制

无法更改固定数据库角色的名称

但我找不到与这个错误有任何关系。我要做的是添加一个成员,而不是更改固定的角色名


非常感谢您对解决此问题的任何支持

首先删除现有用户角色,然后使用以下命令:

USE Databasename
GO
-- create new role for your s to belong to
CREATE ROLE s
GO
-- add s Role to db_owner
EXEC sys.sp_addrolemember 
    @rolename = N'db_owner',
    @membername = N's';
GO
GO

我认为你错过了一步。您有一个登录名,但没有将该登录名作为用户添加到数据库中。以下所有步骤都是您需要的。您的工作中似乎缺少
CREATE USER
步骤(数据库级调用)

我认为您不需要
创建登录名
,我只想包含它,这样您就可以看到完成此操作所需的所有信息

USE [master]
GO
CREATE LOGIN [A] WITH PASSWORD=N'<password>', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
USE [YourDatabase]
GO
CREATE USER [A] FOR LOGIN [A]
GO 
ALTER ROLE db_owner ADD MEMBER [A]
GO
使用[master]
去
创建登录名[A],密码=N'',默认数据库=master,检查过期时间=OFF,检查策略=OFF
去
使用[你的数据库]
去
为登录创建用户[A]
去
更改角色db_所有者添加成员[A]
去

在尝试此操作之前,请将数据库更改为正确的值

我尝试了sp_addrolemember和ALTER角色。但他们中没有一个人成功了。在这两者之间,“sp_addrolemember”不推荐使用。我正在使用sql server 2016。您确定您有权运行
ALTER
?因为,你所拥有的应该有用。或者,数据库用户
A
不存在(更可能是这种情况)。该用户已创建。但我不确定这是否是权限问题。鉴于您提供的SQL,我无法重现您的错误消息。该错误表明您试图运行
alterrole[A]…
。您能提供完整的复制脚本吗?
CREATE LOGIN[a]密码为0x02003F6C7A9A9677F786B5F3E89CFD9233464BB8423932575B80AE9C2AD2134B8B730819CA1EC682E40A636C663675534D279117AF1D5246869F1E1B7EF978B0E249A4散列,SID=0xD7920B0B559D946A8389E2A9024B93F,默认数据库=[master],勾选策略=OFF,选中\u EXPIRATION=OFF GO ALTER ROLE db\u owner ADD MEMBER[A]
是的,这样做有效。但在这里,你创造了一个角色。我已经有了要添加的用户列表。我使用了创建登录是,确切地说“创建用户”是缺少的步骤。现在它很好用,非常感谢RichardsHanks,这很有帮助。实际上,对我来说有问题的部分是
登录必须在主上下文中创建,但是
用户必须在相关数据库中