Разрешение CREATE DATABASE отклонено в базе данных «master». ошибка в приложении MVC 4

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

Отказано в разрешении CREATE DATABASE в базе данных "master".

Строка подключения:

<add name="Market" providerName="System.Data.SqlClient" connectionString="Data Source=endine.arvixe.com; Initial Catalog=Market; Uid=mylogin; Password=mypass; MultipleActiveResultSets=true; " />

И Дбконтекст:

public class Market: DbContext
    {
        public Market()
        {
            Database.SetInitializer<Market>(new MarketInitializer());
        }
    }


public class MarketInitializer: DropCreateDatabaseIfModelChanges<Market>
    {
        protected override void Seed(Market context)
        {
            base.Seed(context);
        }
    }

Я получил доступ к базе данных с помощью SQL Management Studio с теми же mylogin и mypass, создал базу данных Market с помощью скрипта. Но на сайте нет доступа к базе данных.

Как я могу найти его причину?


person Community    schedule 14.08.2013    source источник


Ответы (2)


проблема в этом фрагменте кода DropCreateDatabaseIfModelChanges<Market>

public class MarketInitializer: DropCreateDatabaseIfModelChanges<Market>
    {
        protected override void Seed(Market context)
        {
            base.Seed(context);
        }
    }

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

person Nathan Fisher    schedule 14.08.2013
comment
Есть ли в базе данных таблицы, на которые указывает строка подключения? - person Nathan Fisher; 14.08.2013
comment
DropCreateDatabaseIfModelChanges создает хэш текущей модели и сравнивает его с хэшем базы данных, если они отличаются, то база данных удаляется и создается заново. Это не то, что вам нужно при развертывании приложения в рабочей среде. - person Nathan Fisher; 14.08.2013
comment
Теперь я удалил таблицы из базы данных. попробую, потом напишу сюда результат.. - person ; 14.08.2013
comment
Я удалил эту строку из кода, Database.SetInitializer‹Market›(new MarketInitializer()); и снова развернут, снова воссоздал базу данных, но все равно получаю эту ошибку.. - person ; 14.08.2013
comment
Есть ли другие строки подключения в файле web.config? - person Nathan Fisher; 14.08.2013
comment
да, у меня есть 2 строки подключения с 1 пользователем. я также удаляю Initializer из этого контекста. Но теперь я получаю 500 - Внутренняя ошибка сервера. - person ; 14.08.2013
comment
другая строка подключения связана с SimpleMembershipProvider? - person Nathan Fisher; 14.08.2013
comment
Я использую свои собственные правила входа/регистрации. У меня есть собственная таблица пользователей, и я сохраняю данные для входа в файл cookie с шифрованием. Таким образом, вторая строка подключения аналогична первой, отличаются только имя контекста базы данных и имена начального каталога. на локальном хосте они работают нормально.. - person ; 14.08.2013
comment
Какие разрешения имеет пользователь входа в систему SQL mylogin на сервере? имеет ли он повышенные разрешения с SQL Server, например, является частью роли dbcreator. Основная проблема заключается в том, что у пользователя mylogin нет разрешения на создание базы данных на сервере SQL Server, на котором размещена база данных. если у вас есть возможность / возможность повысить уровень доступа пользователя mylogin, чтобы разрешить создание базы данных, это должно вывести вас из вашей текущей дыры, но не устраняет причину, по которой ваше приложение пытается создать новую базу данных. - person Nathan Fisher; 14.08.2013
comment
Но на хостинге я создаю свой логин и выбираю обе базы данных для подключения, поэтому я могу получить доступ к базе данных с моим логином в Management Studio, и я могу добавлять таблицы в базу данных. - person ; 14.08.2013
comment
вы размещаете внешний хостинг с третьей стороной? Я очень сомневаюсь, что у вашего пользователя будет разрешение на создание базы данных. попробуйте запустить CREATE DATABASE [тест] - person Nathan Fisher; 14.08.2013
comment
давайте продолжим это обсуждение в чате - person Nathan Fisher; 14.08.2013
comment
Я также создал базу данных с моего хоста и создал их таблицы с помощью студии управления. В этом случае мне не нужно создавать базу данных. Спасибо за вашу помощь, теперь я получаю 500 - Внутренняя ошибка сервера. ошибка, поэтому я думаю, что превзошел разрешение CREATE DATABASE, отказано в базе данных «мастер». ошибка. 500 - это другая беда.. - person ; 14.08.2013

Иногда это происходит из-за того, что у вас нет роли системного администратора в локальном экземпляре SQL Server. Я нашел полезную статью, где вы можете скачать команду скрипта и установить ее. Вам будет предложено ввести имя SQLEXPRESS или имя экземпляра, просто вы можете написать «SQLEXPRESS» и ввести. Вот и все. Это добавит вас к роли системного администратора экземпляра локального сервера.

Загрузить команду с: http://archive.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=addselftosqlsysadmin&DownloadId=9198

Пожалуйста, дайте мне знать, если это не работает для вас.

person Pravin Belurkar    schedule 24.10.2013