SQL Server 2008 R2 на сервере Server 2012 R2, проблема с подключением к веб-сайту

Я без проблем использовал эту строку подключения в ряде баз данных и операционных системах MS. Windows Server 2003, 2008 R2 и 2012 R2 Eval, все версии Express.

Сейчас я пытаюсь развернуть новую установку Windows Server 2012 R2 и получаю некоторые ошибки. У меня есть установка SQL Server 2008 R2 на компьютере с Windows Server 2012 R2.

Моя афера:

connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\myDB.mdf;Integrated Security=True;User Instance=False" ProviderName="System.Data.SqlClient"

Думаю, это как-то связано с последовательностью установки компонентов на новый сервер.

В прошлом я мог просто скопировать myDB.mdf практически на любой веб-сервер и открыть или получить доступ к таблицам БД. Эта БД включает членство в ASP для веб-сайта, к которому она привязана.

Вот ошибка:

Разрешение CREATE DATABASE отклонено в базе данных «master». Не удалось подключить базу данных с автоматическим именем для файла C:\inetpub\techTran\App_Data\myDB.mdf. База данных с таким именем существует, или указанный файл не может быть открыт, или он находится в общей папке UNC.
Описание: При выполнении текущего веб-запроса возникло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.Data.SqlClient.SqlException: разрешение CREATE DATABASE отклонено в базе данных «master».

Я думал, что понял, что это за ошибка. Я проверил разрешения, и они совпадают с другими серверами, на которых развернута эта база данных. Мои установки SQL Server в основном одинаковы. Единственная разница здесь в том, что это Windows Server 2012 R2 на виртуальной машине. Или я не установил SQL Server 2008 R2 так же, как на последних 5 серверах, которые я настроил. (Что я предполагаю, вероятно, так и есть.)

ОБНОВЛЕНИЕ: удалены и переустановлены SQL Server и SSMS.

Я знаю, что на сервере есть только одно имя базы данных с именем myDB.mdf, поэтому я не верю в часть ошибки с тем же именем. Я добавил безопасность к базе данных, чтобы ее можно было открыть, и я даже установил Visual Studio 2012 на сервер, чтобы быть уверенным, что базу данных можно открыть. Я могу запустить полное приложение на локальном хосте (сервер 2012), но не могу получить к нему доступ через веб-соединение.

Я считаю, что конкретное сообщение об ошибке, относящееся к

Разрешение CREATE DATABASE отклонено в базе данных «мастер»

это проблема.

Я никогда не видел эту ошибку раньше.

Обычно я назначаю NETWORK SERVICE учетную запись базе данных, чтобы разрешить доступ, и так же настроена и эта. Я также подумал, что это может быть проблема со строкой подключения. Но эта же строка работала на 4 разных серверах без изменений. Server 2003, 2008 R2 и 2012 (демонстрационная платформа) (все версии Express), сейчас в производстве это не работает.

Загружается домашняя страница, а затем при входе выдается вышеуказанная ошибка.


person htm11h    schedule 08.04.2015    source источник
comment
Подождите, а откуда взялся Server 2003? Ранее вы сказали, что все они устанавливались на Windows Server 2008 R2. ? Как я уже говорил, имел место значительный изменить способ работы учетных записей служб после Windows Server 2008 R2. Server 2003 также существенно отличается.   -  person Bacon Bits    schedule 08.04.2015
comment
Ваше приложение пытается создать базу данных, если не может получить к ней доступ? Вы действительно скопировали базу данных из старой системы в новую систему? Убедились ли вы, что логины сервера и пользователи базы данных по-прежнему корректно сопоставлены?   -  person Bacon Bits    schedule 08.04.2015
comment
Итак, у меня есть SQLSERVER 2008 R2, работающий на сервере 2003, 2008 и теперь 2012. Эта база данных находится в папке app_Data веб-сайта. У меня есть разные версии IIS, работающие на каждом сервере. Мне удалось скопировать базу данных в любую папку app_data и получить доступ к БД через экран входа в систему веб-сайта. Server 2003 — это текущая среда prod и dev 2. Протестировал миграцию в 2008 году и решил, наконец, перейти на 2012 год. На сервере dev 2012 все работает отлично.   -  person htm11h    schedule 08.04.2015
comment
Я не создаю основную базу данных с каким-либо кодом. Или другую базу данных в этом отношении. Я просто скопировал myDB.mdf в каждую папку app_data.   -  person htm11h    schedule 08.04.2015
comment
Все учетные записи пользователей отображаются правильно.   -  person htm11h    schedule 08.04.2015


Ответы (2)


Ваша строка подключения говорит AttachDbFilename=|DataDirectory|\myDB.mdf. Что ж, ваш путь должен был измениться в одном месте (SQL Server), а не в другом (конфигурация приложения). AttachDbFilename попытается создать новую БД, если не сможет найти этот файл . Это, наверное, ваша ошибка.

Кроме того, Windows Server 2003, Windows Server 2003 R2, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012 и Windows Server 2012 R2 имеют различия, особенно в отношении безопасности и, в частности, поведения SQL Server, но вы сохраняете используя их взаимозаменяемо. Это делает очень запутанным, чтобы сказать, что происходит. Кроме того, в вашей строке подключения указано Data Source=.\SQLEXPRESS. Это SQL Server Express? Потому что это также имеет важные отличия от большинства других выпусков SQL Server. Более поздние издания очень похожи на стандартное издание, но чем старше издание, тем больше у него особенностей. Обычно их считают разными зверями.

person Bacon Bits    schedule 08.04.2015

РЕШЕНО: Я не уверен, как это произошло или, возможно, почему этого не произошло. Но по какой-то причине установка SQL не добавила учетную запись NETWORK SERVICE в роль сервера sysadmin. Я сопоставил это с установкой SERVER 2003, где также работает SQL 2008 R2, и обнаружил, что роль системного администратора SQL Server включала СЕТЕВУЮ СЛУЖБУ в мою правильно функционирующую среду. Итак, как только я добавил учетную запись пользователя в эту роль, все стало нормально.

Я считаю, что это могло быть проблемой во время установки SQL 2008 R2. Я указал СЕТЕВУЮ СЛУЖБУ, но по какой-то причине роль не была указана.

person htm11h    schedule 08.04.2015