我已经设置了一个远程 SQL 服务器,其中包含一些数据库。具有特定登录名的用户可以在服务器上创建一个数据库,然后可以将其他用户(每个用户具有特定的登录名)分配给新创建的数据库(作为 db_owner)。是否可以让多个数据库用户在 SQL 数据库上拥有 db_owner 权限?如果可以,我该如何授予其他用户 db_owner 权限。
我已经使用 USE dbName 创建了一个登录名;CREATE USER [用户名] FOR LOGIN [用户名];
GO
EXEC sp_addrolemember 'db_owner', [用户名]
使用 master GRANT VIEW ANY DATABASE TO [用户名]; 现在在我给定的数据库中,我有 2 个用户,一个是用户名,另一个是 dbo,它映射到创建数据库的用户上,并且与用户名不同。 之后,我使用 SMO 将这些数据库从远程服务器传输到本地主机,在执行 transferDatabase.TransferData(); 时,我收到以下错误 {“登录名已有一个使用不同用户名的帐户。”} 。 创建传输实例时,我还设置了属性 CopyAllUsers=true。 我该如何修复此问题。
答案1
是的,当然。权限并不意味着用户实际上是数据库的所有者,而“仅仅”意味着他/她对数据库有完全的控制权。
您可以使用 SQL Server Management Studio 或 T-SQL 授予权限:
https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-addrolemember-transact-sql
https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-role-transact-sql