Azure sql 数据库在某些表上授予选择权限

tho*_*der 1 sql-server azure-sql-database azure

我已在 SSMS 的 Azure sql 数据库中创建了一个用户。现在尝试向该用户授予对数据库中某些表的选择权限。安全控制选项似乎与本地 SQL Server 有很大不同。如何在 Azure 数据库上执行这些操作?

我已经在本地 SQL Server 上尝试过了,效果很好。但在 azure sql 数据库上运行这些时出现错误。

    USE [master]
    GO
    CREATE LOGIN [jnj_user] WITH PASSWORD=N'P2ssw0rd123', DEFAULT_DATABASE=[CRM], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
    GO
    USE [CRM]
    GO
    CREATE USER [jnj_user] FOR LOGIN [jnj_user]
    GO
Run Code Online (Sandbox Code Playgroud)

错误:

    Msg 40517, Level 16, State 1, Line 3
    Keyword or statement option 'default_database' is not supported in this version of SQL Server.
    Msg 40508, Level 16, State 1, Line 5
    USE statement is not supported to switch between databases. Use a new connection to connect to a different database.
Run Code Online (Sandbox Code Playgroud)

这也不适用于 Azure db:

    GRANT SELECT ON [dbo].[JJVCEtrialOB] TO  jnj_user
Run Code Online (Sandbox Code Playgroud)

错误:

    Cannot find the user 'jnj_user', because it does not exist or you do not have permission.
Run Code Online (Sandbox Code Playgroud)

Sti*_*nts 6

您需要确保在所有级别上添加登录

---- ON SERVER LEVEL
CREATE LOGIN TestUser
    WITH PASSWORD = 'ThisIsAStrongPassword!' 
GO

---- ON Master Level
CREATE USER TestUser
    FOR LOGIN TestUser
    WITH DEFAULT_SCHEMA = dbo


---- ON SQL DB LEVEL
CREATE USER TestUser
    FOR LOGIN TestUser
    WITH DEFAULT_SCHEMA = dbo
GO

GRANT SELECT ON OBJECT::dbo.Sales TO TestUser;
GO
Run Code Online (Sandbox Code Playgroud)

您需要login在主上下文下添加服务器级别

然后将用户添加到上下文master下的数据库master

然后将用户添加到sqldb并授予其权限

编辑您不能使用 use 语句,因此您必须在 SSMS 中手动切换上下文