Я хотел опробовать функцию пользователей автономной базы данных в базе данных SQL Azure V12, но у меня возникла проблема с аутентификацией, которая кажется мне странной.
Я создал базу данных под названием Classifier
. Я добавил свой IP в правила брандмауэра, чтобы подключиться к серверу базы данных Azure из SSMS на своей рабочей станции. После того, как я смог подключиться через SSMS для администрирования, я попытался добавить пользователя с паролем в базу данных, например:
CREATE USER classifier WITH PASSWORD='thepassword'
Я также добавил этого пользователя в роли автора данных и читателя:
exec sp_addrolemember 'db_datawriter', 'classifier'
exec sp_addrolemember 'db_datareader', 'classifier'
После этого я могу подключиться к базе данных с этими учетными данными из SSMS:
Но здесь все идет не так, как надо: я пробовал несколько разных заклинаний строки подключения и, похоже, не могу подключиться в веб-приложении, над которым я работаю. В среде Azure это не сработало, поэтому я работаю на локальном хосте со строкой подключения к базе данных Azure и просто не могу подключиться. Вот строка подключения, которую я использую в данный момент:
<add name="Classifier" connectionString="Data Source=xxxxxxx.database.secure.windows.net;Initial Catalog=Classifier;User ID=classifier;Password=xxxxxxxxxxxxx;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" providerName="System.Data.SqlClient"/>
Я попытался сбросить пароль (через SSMS) для пользователя и затем обновить строку подключения; Я также дважды проверил пароль, скопировав его прямо из этой строки подключения и в диалог подключения в SSMS, чтобы убедиться, что у меня там нет какой-либо опечатки.
Я включил аудит на сервере базы данных Azure в надежде получить некоторые сведения о том, почему он не работает, но все, что я получаю, это:
И вот где я застрял. Большинство из того, что я смог найти с помощью документации или блогов, показывает, что нужно взглянуть на журналы SQL Server, чтобы увидеть реальное состояние ошибки, которое более точно указывает на характер сбоя, но поскольку Я имею дело с Azure, нет способа сделать это (насколько я знаю).
Что может привести к сбою приложения в случае успеха SSMS (а также LinqPad и Visual Studio Server Explorer)?
источник
Cannot find the user 'myuser', because it does not exist or you do not have permission.
хотя имя пользователя существует в разделе «Безопасность»> «Логины», но не «MyDatabse»> «Безопасность»> «Пользователи». Я пытался,CREATE USER [myuser] FOR LOGIN [myuser] WITH DEFAULT_SCHEMA=[mydb] GO
но получил ошибкуThe login already has an account under a different user name.
При переключении нашего API для подключения к базе данных Azure через нового автономного пользователя нам пришлось изменить строку подключения, включив в нее:
Хотя я не понимаю, почему это изменение было необходимо, я хотел бы опубликовать здесь на случай, если это поможет кому-то еще в будущем.
Мы изначально пришли, чтобы попробовать это из этого вопроса .
источник
Моя проблема была другой, но связанной: я пытался подключиться к базе данных SQL Azure с помощью SQL Server Management Studio (SSMS) с отдельным пользователем . Я получаю сообщение «Ошибка входа пользователя» в SSMS.
Решение: в параметрах подключения SSMS для окна запроса я установил «Соединение с базой данных» с именем базы данных, к которой я пытался подключиться.
Объяснение: задним числом причина была очевидна: содержащиеся пользователи могут подключаться только к той базе данных, в которой они были созданы.
источник
Это может произойти, если запустить команду Powershell, содержащую строку подключения, когда ваш пароль содержит
$
. Вы можете обойти это, заключив строку подключения в одинарные кавычки или не сохраняя свой пароль в строке подключения в первую очередь ;-)Например. Я столкнулся с этим с
Scaffold-DbContext
командойhttps://github.com/aspnet/EntityFrameworkCore/issues/6624
источник