Сначала код EF - {"В базе данных" master "отказано в разрешении CREATE DATABASE."} - PullRequest
3 голосов
/ 06 октября 2011

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

Как проще всего обойти эту проблему?

Ответы [ 4 ]

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

Однажды я столкнулся с этой проблемой и решил ее. Ключ использует проверку подлинности SQL вместо Windows. Это самый простой способ указать базу данных по умолчанию.

Попробуйте строку подключения следующим образом:

<add name="MFCConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\MFC.mdf;Initial Catalog=MFC;Integrated Security=false;User ID=sa;Password=123"
  providerName="System.Data.SqlClient" />

не забудьте установить значение db по умолчанию для sa от master до MFC, а Integrated security = false. Кстати, sa обычно отключается, поэтому сначала включите и протестируйте его в студии управления сервером sql.

2 голосов
/ 15 апреля 2015

Это может пригодиться любому, кто наткнулся на этот вопрос, как и я, когда искал ответ на ошибку.Эти шаги должны быть всем, что вам нужно, и я скопировал код, который вы можете вставить, чтобы он работал быстро.

Я использую Code First, попробовал использовать 'create-database', но получил ошибку в заголовке,Закрыто и повторно открыто (как администратор на этот раз) - команда не распознана, но так использовалась команда «update-database».Та же ошибка.

Вот шаги, которые я предпринял для ее решения:

1) Открыл SQL Server Management Studio и создал базу данных «Видео»

2) Открыл обозреватель серверав VS2013 (в разделе «Вид») и подключен к базе данных.

3) Щелкните правой кнопкой мыши по соединению -> свойства и получили строку подключения.

4) В файле web.configЯ добавил строку подключения

   <connectionStrings>
<add name="DefaultConnection"
  connectionString="Data Source=MyMachine;Initial Catalog=Videos;Integrated Security=True" providerName="System.Data.SqlClient"
  />
  </connectionStrings>

5) Когда я настраиваю контекст, мне нужно сослаться на DefaultConnection:

using System.Data.Entity;

namespace Videos.Models
{
public class VideoDb : DbContext
{
    public VideoDb()
        : base("name=DefaultConnection")
    {

    }

    public DbSet<Video> Videos { get; set; }
}
}

6) В консоли диспетчера пакетов запустите «update-database»для создания таблиц.

Помните, что вы можете использовать Seed () для вставки значений при создании, в Configuration.cs:

        protected override void Seed(Videos.Models.VideoDb context)
        {
        context.Videos.AddOrUpdate(v => v.Title,
            new Video() { Title = "MyTitle1", Length = 150 },
            new Video() { Title = "MyTitle2", Length = 270 }
            );

        context.SaveChanges();
        }
2 голосов
/ 06 октября 2011

Запустите ваше приложение под учетной записью, у которой есть разрешение на создание базы данных на вашем сервере разработки SQL. Если вы используете аутентификацию SQL, укажите учетные данные для входа в SQL в строке подключения, которая имеет это разрешение. По умолчанию учетная запись администратора, указанная при установке сервера SQL, имеет это разрешение, но вы можете добавить ее и к другим именам входа.

0 голосов
/ 17 декабря 2015

У меня та же проблема с EF 6.0 и кодом в первую очередь.Если у вас есть несколько проектов с разными строками подключения и запущена update-database из консоли диспетчера пакетов, даже если вы выбрали правильный проект по умолчанию, Visual Studio считывает строку подключения из стартового проекта и, таким образом, если при этом запуске нет подключенияпроект, то ошибка - отказано в разрешении.

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

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