获取消息 15151,无法更改用户“xxxx”,因为它不存在或您没有权限

Eld*_*n Z 5 sql-server t-sql

我有以下脚本,但执行时不断出现错误。

USE [master]
GO

If Not EXISTS (Select loginname from [master].[dbo].[syslogins]
    Where name = 'xxxx' and dbname = 'xxxx-xxxx')
BEGIN
    CREATE LOGIN [xxxx] WITH PASSWORD=N'xxxxx', DEFAULT_DATABASE=[xxxx-xxxx], DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
    ALTER LOGIN [xxxx] ENABLE
END
GO

USE [xxxx-xxxx]
ALTER USER [xxxx] WITH DEFAULT_SCHEMA=[db_datareader]
ALTER ROLE [db_datareader] ADD MEMBER [xxxx]
ALTER ROLE [db_datawriter] ADD MEMBER [xxxx]
ALTER ROLE [db_owner] ADD MEMBER [xxxx]
GO
Run Code Online (Sandbox Code Playgroud)

我尝试了该脚本的几种排列,但没有成功。它确实创建了登录名,但不允许我更改“用户”或“角色”属性。当我可以让它正常工作时,它不会对用户配置文件进行更改。

Kin*_*hah 2

您在更改之前缺少创建用户。

登录 - 获取服务器的访问权限 数据库用户 - 获取特定数据库的访问权限

所以在你的脚本中添加create user from login ...

USE [xxxx-xxxx]
create user [xxxx] from login [xxxx] <--- this is needed !
ALTER USER [xxxx] WITH DEFAULT_SCHEMA=[db_datareader]
ALTER ROLE [db_datareader] ADD MEMBER [xxxx]
ALTER ROLE [db_datawriter] ADD MEMBER [xxxx]
ALTER ROLE [db_owner] ADD MEMBER [xxxx]
GO
Run Code Online (Sandbox Code Playgroud)

一些事情 :