Установить базу данных по умолчанию для пользователя SQL Server (Azure) - PullRequest
2 голосов
/ 19 марта 2019

Я пытаюсь создать пользователя базы данных из C # в Azure SQL Server. Но мне нужно установить базу данных по умолчанию (DEFAULT_DATABASE), но скрипт не работает в Azure.

Кто-нибудь знает, как мне это сделать?

CREATE USER newlogin FOR LOGIN newlogin;
ALTER LOGIN newlogin WITH DEFAULT_DATABASE = myDatabase;

но выдает ошибку:

Параметр ключевого слова или оператора 'default_database' не поддерживается в этой версии SQL Server.

После того, как я создал пользователя и попытался подключиться к SQL Server, возникает эта ошибка:

enter image description here

Ответы [ 3 ]

1 голос
/ 19 марта 2019

База данных по умолчанию всегда [master] дБ.Вместо этого используйте базу данных строки подключения / исходный параметр каталога в качестве базы данных по умолчанию.Чтобы добавить конкретного пользователя, войдите в базу данных db server master, используя учетную запись владельца.

Затем в [master] db вы можете создать нового пользователя, например:

CREATE LOGIN dev_team WITH PASSWORD = 'P@ssW0rd'
GO

Затем переключитесь нанужная база данных для dev_team входа.Создайте пользователя и предоставьте доступ к пользователю в этой базе данных, например:

USE [myseconddb]
GO
CREATE USER dev_team FOR LOGIN dev_team
GO
GRANT EXECUTE TO dev_team
GRANT INSERT TO dev_team
GRANT DELETE TO dev_team
GRANT UPDATE TO dev_team
GRANT SELECT TO dev_team
GO

Или просто переключитесь на нужную базу данных,

USE [myseconddb]
GO
CREATE USER dev_team2 WITH PASSWORD = 'P@ssW0rd'
GO
EXEC sp_addrolemember N'db_owner', N'dev_team2'
GO
GRANT EXECUTE TO dev_team2
GRANT INSERT TO dev_team2
GRANT DELETE TO dev_team2
GRANT UPDATE TO dev_team2
GRANT SELECT TO dev_team2
GO

Пользователь dev_team и dev_team2тогда не может получить доступ к другой базе данных, кроме [myseconddb].Затем вы можете использовать в строке подключения, например, ИД пользователя dev_team2 и пароль P@ssW0rd и исходный каталог имя myseconddb (по умолчанию).

Надеюсь, это поможет.

1 голос
/ 19 марта 2019

Это можно сделать в Azure, но, как намекает @Larnu, это не совсем просто. Советы, приведенные в их ответе , будут работать для одного входа, но, вероятно, это не то, что практично или желательно в любом производственном сценарии. Я бы предложил сделать следующее:

  1. создать группу в Active Directory, которая инкапсулирует пользователей, к которым вы хотите применить это поведение; назначить соответствующих членов в эту группу
  2. добавить группу в качестве нового имени входа на целевой сервер Azure Sql; измените логин, чтобы соответствующая база данных была установлена ​​по умолчанию
  3. добавить группу как нового пользователя в базу данных по умолчанию, которая была назначена ранее


Код для этого немного отличается в Azure Sql Server от локального:

-- run in [master]
create login [YourGroupName] from external provider;
alter login [YourGroupName] with default_database = [YourDefaultDatabase];

-- run in [YourDefaultDatabase]
create user [YourGroupName] from login [YourGroupName];


Edit:

Пользователи в Azure Sql Server обычно содержатся в одной базе данных и даже не существуют на «уровне сервера»; больше информации можно найти здесь . Если вы просто хотите создать пользователя в базе данных Azure Sql Server, тогда все, что вам нужно сделать, это написать заявление в виде create user [YourUserName] with password = 'YourSecret';. Обратите внимание, что предполагает, что вы уже подключены к базе данных, в которой вы собираетесь создать пользователя. Если вы находитесь в контексте, таком как [master], и у вас нет возможности изменить строку подключения, тогда вам сначала нужно будет использовать ChangeDatabase .

0 голосов
/ 19 марта 2019

Я нашел кое-что, что может быть полезным. если я хочу подключиться к серверу SQL с помощью студии управления, я должен использовать «свойства соединения» и установить базу данных по умолчанию.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...