Как использовать операторы SQL для настройки ниже для случаев 1 и 2?
Случай 1:
В управляемом экземпляре Azure SQL имеется несколько баз данных DB1, DB2, DB3, ...
Как создать нового пользователя базы данных User1, который может получить доступ только к DB1 и скрыть другие базы данных от этого пользователя (т. Е. Когда User1 открывает сервер базы данных в SQL Server Management Studio, ему показывается только DB1)
В то же время, User1 должен обладать привилегиями для выполнения следующих действий с DB1:
- Создание таблиц
- Добавить столбцы
- CRUD доступ к таблицам
Случай 2:
Если несколько баз данных DB1, DB2, DB3, ... являются отдельными базами данных (не в управляемом экземпляре)
Как выполнить конфигурацию, аналогичную описанной в случае 1, то есть пользователь 1 может видеть только DB1 с вышеуказанными привилегиями?
Я попробовал решение вопроса ниже:
Как создать нового пользователя в базе данных SQL Azure?
CREATE LOGIN User1 WITH password='Test1234';
CREATE USER User1 FROM LOGIN User1;
Но тогда Пользователь1 может видеть все базы данных.
+++++++++++++++++++++++++++++++
1-е обновление:
Основываясь на ссылках @Nick.McDermaid (большое спасибо), я попробовал следующие операторы SQL, и они работают:
--the below statement grant user1 access to the database, it's working:
CREATE USER user1 WITH PASSWORD = 'Test1234';
--the below 4 statements grant user1 CRUD privilege on all tables, it's working:
GRANT SELECT TO user1;
GRANT INSERT TO user1;
GRANT UPDATE TO user1;
GRANT DELETE TO user1;
Но есть проблема с предоставлением создать таблицу и добавить столбец:
--intend to grant user1 creating table privilege, commands completed successfully, but when trying to create a table return below error:
--Microsoft SQL: The specified schema name "dbo" either does not exist or you do not have permission to use it.
GRANT CREATE TABLE TO user1;
--intend to grant user1 adding columns privilege, but Azure SQL return below error:
--Incorrect syntax near 'ALTER'.
GRANT ALTER TABLE TO user1;
+++++++++++++++++++++++++++++++
2-е обновление:
Мои последние операторы SQL:
CREATE USER [user1] WITH PASSWORD=N'Test1234'
GO
CREATE ROLE [test_role]
GO
ALTER ROLE [test_role] ADD MEMBER [user1];
GO
ALTER ROLE [db_ddladmin] ADD MEMBER [test_role];
GO
ALTER ROLE [db_datawriter] ADD MEMBER [test_role];
GO
ALTER ROLE [db_datareader] ADD MEMBER [test_role];
GO