Как решить Azure «Вход в Windows не поддерживается в этой версии SQL Server»? - PullRequest
0 голосов
/ 06 июля 2018

сейчас я работаю над проектом с .Net CORE c # и базой данных Entity Framework и получаю ошибку

SqlException: имена входа Windows не поддерживаются в этой версии SQL Сервер.

Я следовал за учебником, и я думаю, что все сделал хорошо ... Разница лишь в том, что моя база данных размещена в Azure, это должно иметь значение?

Вот моя строка подключения

"DefaultConnection": "Server=firstdb123.database.windows.net;Database=TestDB;Trusted_Connection=True;MultipleActiveResultSets=true",

Вот картинка с моей базой данных

enter image description here

У меня есть мой EmployeesController и мой EmployeeContext, созданный visual studio, поэтому он должен быть правильным ... но я не знаю, почему он не работает

Любая помощь будет потрясающей

Ответы [ 3 ]

0 голосов
/ 06 июля 2018

Windows логины SQL Server:

Когда пользователь подключается через учетную запись Windows, SQL Server проверяет имя и пароль учетной записи, используя основной токен Windows в операционной системе. Поскольку ваша база данных SQL размещается в Azure, мы должны убедиться, что ваша база данных SQL и ваше базовое приложение .Net находятся в одном домене, если для входа в SQL Server используются имена входа Windows.

Более подробную информацию о проверке подлинности Windows можно получить: Подключение через проверку подлинности Windows

Чтобы решить вашу проблему, мы можем использовать аутентификацию SQL Server, передавая имя пользователя и пароль.

Мы можем установить имя пользователя и пароль на портале, как показано ниже:

enter image description here

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

enter image description here

Затем мы можем использовать эту строку подключения в Entity Framework или коде ADO.NET.

0 голосов
/ 06 июля 2018

Имеет значение, что база данных размещена в Azure, поскольку Azure не имеет доступа к вашей учетной записи Windows и не может проверить, что вы вошли в систему с учетной записью Windows.

Вы можете использоватьАдминистратор сервера, но это не очень безопасно, когда вы собираетесь запускать вещи в производстве.

Члены фиксированной серверной роли sysadmin могут выполнять любые действия на сервере.https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/server-level-roles?view=sql-server-2017

Чтобы решить эту проблему, вы можете создать пользователя базы данных, используя:

CREATE USER [{username}] WITH PASSWORD=N'{password}'

Выполните это в базе данных, к которой вам необходим доступ.После создания пользователя вы должны дать ему несколько разрешений:

EXEC sp_addrolemember 'db_datareader', [{username}];

'db_datareader' дает пользователю доступ только для чтения в базе данных.Может быть, этого недостаточно для вашего пользователя, тогда вы можете дать ему еще несколько разрешений, выполнив оператор снова с другой ролью базы данных.Подробнее о ролях базы данных: https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/database-level-roles?view=sql-server-2017

Для баз данных SQL Azure это невозможно сделать через SQL Server Management Studio.Подробнее об этом:

Используйте этого пользователя в строке подключения:

"DefaultConnection": "Server=firstdb123.database.windows.net;Database=TestDB;User Id={username};Password={password};MultipleActiveResultSets=true"

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

0 голосов
/ 06 июля 2018

Видите, что Trusted_Connection=True; бит в вашей строке подключения? Это ярлык Windows, позволяющий обойти обычные учетные данные имени пользователя / пароля на сервере.

Вам необходимо создать безопасный вход в Azure, а затем использовать его для указания строки подключения.

На этой странице показано, как создается строка подключения в различных версиях SQL.

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