Подтвердить что ты не робот

Разрешить CREATE DATABASE в базе данных "master" (сначала код EF)

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

Разрешить CREATE DATABASE в базе данных "master".

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

<add name="DefaultConnection" 
     connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=aspnet-test-2012615153521;Integrated Security=False" 
     providerName="System.Data.SqlClient;User ID=test;Password=test"/>
4b9b3361

Ответ 1

Отказано в правах - это безопасность, поэтому вам нужно добавить разрешение "Пользователь".

  • Щелкните правой кнопкой мыши вашу базу данных (это файл .mdf), а затем свойства
  • Перейдите на вкладку безопасности
  • Нажмите кнопку "Продолжить"
  • Нажмите кнопку "Добавить"
  • Нажмите кнопку "Предварительный просмотр"
  • Покажет другое окно, затем вы нажмете кнопку "Найти сейчас" справа.
  • В нижеприведенных полях пройдите в самое нижнее и нажмите "Пользователи". Нажмите "ОК".
  • Выберите разрешение "Пользователи", которое вы создали, затем установите флажок "Полный контроль".

Там вы идете. Теперь у вас есть разрешение на доступ к базе данных.

Ответ 2

У меня была та же проблема. Это то, что сработало для меня:

  • Перейдите в SQL Server Management Studio и запустите его как Администратор.
  • Выберите Безопасность → Затем Логины
  • Выберите имена пользователей или других пользователей, которые будут обращаться к вашей базе данных под логинами и дважды щелкните по ней.
  • Дайте им роли сервера, которые предоставят им учетные данные для создания базы данных. В моем случае публикация уже была проверена, поэтому я проверил dbcreator и sysadmin.
  • Запустите базу данных обновлений снова в консоли диспетчера пакетов. Теперь база данных должна быть успешно создана.

Вот изображение, чтобы вы могли получить большую картинку, я размыл свои учетные данные, конечно: введите описание изображения здесь

Ответ 3

Убедитесь, что у вас есть разрешение на создание db. (как упоминалось в нем user2012810.)

или

Кажется, что ваш код сначала использует другую (или стандартную) строку соединения. Установили ли имя подключения в своем классе контекста?

public class YourContext : DbContext
    {
        public YourContext() : base("name=DefaultConnection")
        {

        }

        public DbSet<aaaa> Aaaas { get; set; }
    }

Ответ 4

У меня такая же проблема при попытке создать базу данных с помощью Code First (без подхода к базе данных). Проблема в том, что у EF недостаточно прав для создания базы данных для вас.

Итак, я работал с использованием кода First (используя существующий подход к базе данных).

Шаги:

  • Создайте базу данных в студии управления сервером Sql (желательно без таблиц).
  • Теперь вернемся на визуальную студию, добавьте соединение недавно созданной базы данных в проводник сервера.
  • Теперь используйте строку подключения базы данных и добавьте ее в app.config с именем типа "Соединение по умолчанию".
  • Теперь в классе Context создайте для него конструктор и расширьте его из базового класса и передайте имя строки подключения в качестве параметра. Точно так же,

    public class DummyContext : DbContext
    {
      public DummyContext() : base("name=DefaultConnection")
      {
      }  
    }
    

5. И теперь запустите свой код и посмотрите, как таблицы добавляются в предоставленную базу данных.

Ответ 5

Запустите Visual Studio в качестве администратора, он работал у меня

Ответ 6

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

<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 из master в MFC (в вашем случае aspnet-test-2012615153521).

Ответ 7

Эта ошибка также может возникать, если в решении есть несколько проектов, а неправильный - в качестве запуска.

Это связано с тем, что строка соединения, используемая Update-Database, происходит из проекта запуска, а не из проекта по умолчанию, выбранного в консоли диспетчера пакетов.

(кредиты masoud)

Ответ 8

Как следует из этой ошибки, для входа в систему SQL не существует разрешения на создание базы данных. Разрешения предоставляются, когда логин имеет требуемые роли. Роль, имеющая разрешение на создание, изменение и удаление базы данных, dbCreator. Поэтому его необходимо добавить в логин, чтобы решить проблему. Это можно сделать в SQL Management Studio, щелкнув правой кнопкой мыши пользователя, затем перейдите в "Свойства" > "Роли сервера". Я столкнулся с той же ошибкой и разрешил ее, выполнив именно это.

Ответ 9

Я собираюсь добавить то, что я должен был сделать, поскольку это объединение вышеизложенного. Я использую 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) В консоли Package Manager запустите '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();
        }

Ответ 10

Убедитесь, что строка подключения находится в вашем Web.Config. Я удалил этот node и поместил его в свой Web.Debug.config, и это ошибка, которую я получил. Переместил его обратно в Web.config и отлично работал.

Ответ 11

Запустите Visual Studio в качестве администратора и поместите свой логин аутентификации SQL SERVER (который имеет разрешение на создание базы данных) и пароль в строке подключения, он работал у меня

Ответ 12

Дважды проверьте строку подключения. Когда он указывает на несуществующую базу данных, EF пытается создать таблицы в master базе данных, и эта ошибка может возникнуть.
В моем случае произошла опечатка в имени базы данных.

Ответ 13

У меня нет доказательств для моего решения, просто предположения.

В моем случае это вызвано доменным именем в строке подключения. У меня есть предположение, что если DNS-сервер недоступен, он не может подключиться к базе данных, и поэтому Entity Framework пытается создать эту базу данных. Но разрешение отклонено, что является правильным.

Ответ 14

Если вы запускаете сайт под IIS, вам может потребоваться установить идентификатор пула приложений для администратора.

Ответ 15

Решение этой проблемы так же просто, как есть кусок торта. Эта проблема обычно возникает, когда ваши учетные данные пользователя меняются, а SQL-сервер не может идентифицировать вас. Не нужно удалять существующий экземпляр SQL-сервера. Вы можете просто установите новый экземпляр с новым именем экземпляра. Допустим, если ваше последнее имя экземпляра было "Sqlexpress", поэтому на этот раз во время установки назовите ваш экземпляр как "Sqlexpress1". Также не забудьте выбрать режим микширования (например, аутентификацию сервера Sql и проверку подлинности Windows) во время установки и предоставить пароль системного администратора, который будет полезен, если такая проблема возникнет в будущем. Это решение решит проблему. Спасибо..

Ответ 16

Решение, которое работало для меня, состояло в том, чтобы использовать строку подключения Entity Framework, которая создается при первом запуске мастера базы данных при создании файла edmx. Строка подключения нуждается в ссылках на файл метаданных, таких как "metadata = res:///PSEDM.csdl | res:///PSEDM.ssdl | res://*/PSEDM.msl". Кроме того, строка подключения должна быть в конфигурации вызывающего приложения.

HT к этому посту за указание мне в этом направлении: сначала модель с DbContext, не в состоянии инициализировать новую базу данных

Ответ 17

Для меня я просто закрываю всю текущую сессию, включая SQL Server Management Studio, а затем снова открываю выполнение приведенного ниже сценария, работает нормально

IF EXISTS (SELECT NAME FROM master.sys.sysdatabases WHERE NAME = 'MyDb')
DROP DATABASE mydb RESTORE DATABASE SMCOMDB FROM DISK = 'D:/mydb.bak' 

Ответ 18

У меня была такая же проблема, и я попробовал все доступное в интернете. Но SSMS RUN AS ADMINISTRATOR работают для меня. Если вы все еще сталкиваетесь с какой-либо проблемой, убедитесь, что вы скачали SQL SERVER.