В SQL Server
я хочу создать базу данных с несколькими Schemas
, каждая из которых относится к конкретному c Domain
моего приложения.
Я также хотел бы создать ограниченную Доступ к каждой схеме означает, что когда пользователь входит в базу данных (из ssms
или из entityframework
внутри приложения), он / она может получить доступ только к объектам в базе данных с одной указанной c схемой, которую он / она имеет доступ и также может выполнять все команды ddl / dml с этой схемой.
Я пришел к следующему решению:
1 - Создать базу данных для входа в систему
CREATE LOGIN [AccountingDataBaseLogin] WITH PASSWORD='AccountingDataBaseLoginPassword'
2- Создайте пользователя базы данных для созданного имени входа на шаге 1.
CREATE USER [AccountingDataBaseUser] FOR LOGIN [AccountingDataBaseLogin]
3- Создайте схему:
BEGIN
EXECUTE('CREATE SCHEMA Accounting AUTHORIZATION AccountingDataBaseUser')
ALTER USER AccountingDataBaseUser WITH DEFAULT_SCHEMA = Accounting
ALTER AUTHORIZATION ON SCHEMA::Accounting TO AccountingDataBaseUser;
GRANT CREATE TABLE TO AccountingDataBaseUser;
GRANT CREATE VIEW TO AccountingDataBaseUser;
GRANT CREATE PROCEDURE TO AccountingDataBaseUser;
GRANT CREATE TYPE TO AccountingDataBaseUser;
GRANT CREATE FUNCTION TO AccountingDataBaseUser;
GRANT CREATE DEFAULT TO AccountingDataBaseUser;
END
В моем приложении я создаю отдельную .edmx
файл для каждого Schema
, и мне потребуется отдельная строка подключения для каждого .edmx
следующим образом:
<add name="AccountingDataBaseEntities" connectionString="metadata=res://*/ModelDesigners.Accounting.AccountingDataBaseModel.csdl|res://*/ModelDesigners.Accounting.AccountingDataBaseModel.ssdl|res://*/ModelDesigners.Accounting.AccountingDataBaseModel.msl;provider=System.Data.SqlClient;provider connection string="data source=.;initial catalog=APADataBase;user id=AccountingDataBaseLogin;password=AccountingDataBaseLoginPassword;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
Я хотел бы знать, является ли то, что я делаю, лучшим способом для достижения того, что Я хочу, а если нет, то что будет лучше?