EF 4.1 CF: В базе данных «master» отказано в разрешении CREATE DATABASE - PullRequest
9 голосов
/ 07 апреля 2011

Entity Framework 4.1 Code First отлично работает с SQLEXPRESS на localhost.Тем не менее, я теперь готов подключиться к обычному SQL 2008 server.

  1. Я создал новую базу данных "NewEfDatabase".

  2. Затем изменил мой "ApplicationServices" connectionString в Web.config, чтобы указатьв мою новую базу данных с интегрированной безопасностью.

Но тогда я получаю эту ошибку:

"CREATE DATABASE permission denied in database 'master'."

Итак ...

a) Какие разрешениянужно ли EF 4.1 CF на указанном SQL-сервере для своей работы?

b) Могу ли я установить пустую базу данных на SQL 2008 для EF 4.1 CF или я должен позволить ей выполнять всю эту работу за меня?(Я не уверен, что мой администратор БД был бы признателен за то, чтобы у моего приложения EF были права делать что-либо за пределами конкретной базы данных)

Ответы [ 3 ]

13 голосов
/ 07 апреля 2011

Убедитесь, что в вашем коде инициализатор базы данных установлен на null:

Database.SetInitializer<MyDbContext>(null);

Все встроенные реализации, если инициализатор может попытаться удалить или создать новую базу данных. Полученная ошибка означает, что EF пытался удалить / создать базу данных, но не имеет права делать это в вашем экземпляре SQL Server. Вышеуказанная строка является единственным вариантом, позволяющим избежать этого в целом, и подходит (я думаю, что даже абсолютно необходим) для живых сред в любом случае, где вы не хотите случайного удаления (из-за изменений модели или чего-то в этом роде).

3 голосов
/ 31 марта 2012

Установите логин для вашего приложения на сервере SQL.Дайте этому пользователю разрешение dbcreator (щелкнув правой кнопкой по имени входа, перейдите к ролям сервера и установите флажок «dbcreator»)

0 голосов
/ 06 сентября 2013

Старайтесь не использовать встроенную в Windows авторизацию, как я ответил в этом посте: EF Code First - {"CREATE DATABASE отказано в доступе к базе данных" master "."} .У меня это сработало.

...