App_Data / ASPNETDB.MDF для Sql Server 2005 (или 08) - PullRequest
5 голосов
/ 13 апреля 2009

Я разрабатывал приложение ASP.NET WebForms, для которого требовались функции входа в учетную запись (например, регистрация новых пользователей, смена паролей, восстановление паролей, профилей, ролей и т. Д.). Для этого я использовал FormsAuthentication с хранилищем данных по умолчанию, которое, к моему удивлению, является файлом MDF в App_Data. Когда придет время действительно развернуть это приложение. В прямом эфире в Интернете я собираюсь использовать какой-то общий хостинг, такой как GoDaddy или другая дешевая компания.

Для эффективности я бы хотел перейти с этого MDF на настоящий SQL Server 2005 или 2008 (кто в здравом уме использует плоские файлы?). Однако с общим хостингом я не смогу запускать такие программы, как aspnet_regsql.exe. У меня будет только один логин и пароль для базы данных SQL Server и учетная запись FTP в корне домена. Нет удаленного рабочего стола MSTSC, нет доступа к консоли, нет ошибок в IIS и т. Д.

Мне не нужно переносить какие-либо учетные записи пользователей из ASPNETDB.MDF (сайт будет начинаться с нуля пользователей), но как я должен:

1) Легко создавать таблицы, процедуры и т. Д., Которые Visual Studio автоматически создавал в ASPNETDB.MDF, когда я использовал инструмент администрирования веб-сайта для начала работы с FormsAuthentication?

2) Пусть поставщик членства SQL использует строку подключения, которую я ему даю, вместо того, чтобы использовать то, что есть сейчас, для подключения к этому ASPNETDB.MDF. Черт, я даже не вижу никакой строки подключения к этому MDF в web.config; как, черт возьми, мое приложение. даже найти это? Machine.config? Это было бы плохим решением, если это так. Это закулисное дерьмо сводит меня с ума.

Любая помощь от кого-то, кто прошел через эту миграцию, будет очень, очень признательна!

Ответы [ 5 ]

4 голосов
/ 28 октября 2009

Этот файл MDF является базой данных SQL Server. Все версии SQL Server (кроме CE) используют один и тот же формат файлов, поэтому MDF может быть открыт любым другим SQL Server с использованием sp_attach_db или SSMS, см. Как подключить базу данных (управление SQL Server Номер-студио). . После подключения к вашему SQL-серверу SSMS может создавать сценарии для всей базы данных, см. Как: создать сценарий (SQL Server Management Studio) . Также это можно сделать программно, используя объект SMO Scripter . Скрипт SSMS будет содержать всю таблицу, индекс, процедуру и все остальные объекты в базе данных. Существует также Мастер импорта и экспорта в SSMS , и вы можете использовать его для экспорта содержимого ваших таблиц (любых данных) в файл CSV, а затем импортировать этот файл CSV в вашу размещенную базу данных, но этот импорт / экспорт Мастер довольно сложный (использует SSIS).

Другой альтернативой для экспорта данных является использование утилиты bcp, см. Операции массового импорта и массового экспорта .

Технически вы можете выполнить все эти операции, используя экземпляр SQL Server Express в вашей среде VS, используя инструменты командной строки, такие как sqlcmd и bcp, и, возможно, написав свое собственное приложение SMO Scripter для экспорта схемы базы данных. Однако это требует определенного уровня опыта. Намного проще будет получить доступ к полноценной Managent Studio, чтобы подготовить все данные, которые будут импортированы на ваш хостинг-сайт.

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

Обратите внимание, что ваш файл MDF можно будет прикрепить только к SQL Server, по крайней мере, той же версии, что и созданная вами. Ваша среда VS содержит SQL Server, вероятно, с именем SQLEXPRESS, и вы должны точно проверить, какая это версия. Серверы более ранней сборки, чем ваша версия экземпляра VS SQL, откажутся прикреплять ваш файл MDF, поскольку его формат они не распознают. Следуйте инструкциям в KB 321185 , чтобы определить, какая версия SQL Server имеется в вашей среде VS.

Обновление

Я не знал, что у VS есть мастер экспорта. Просто следуйте инструкциям , которые Гари упоминает в ссылке , которую он предоставляет.

4 голосов
/ 13 апреля 2009

.mdf не плоский файл. Это файл базы данных экспресс-сервера SQL.

Иногда лучше не водить Porsche по грунтовой дороге ...;)

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

Для поиска таблиц в SQL Express существует инструмент под названием «Студия управления», который поставляется вместе с SQL Server EE и который позволяет вам получить доступ к таблицам в формате .mdf и т. Д.

Вот пример строки подключения к .mdf в вашем web.config

<connectionStrings>

        <add name="AddressBookConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\AddressBook.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient"/>

</connectionStrings>

Я сочувствую вашему разочарованию. Создание и размещение сложного веб-сайта - непростая задача. Обычно запускать мастера для настройки веб-приложения - плохая идея, если вы планируете что-то серьезное для сайта, если только вы не изучаете веб-приложения. Вам необходимо преодолеть этот уровень абстракции и узнать больше о том, как вручную настроить / переопределить поставщика членства и т. Д., Если вы собираетесь профессионально проводить хостинг.

Надеюсь, это укажет вам правильное направление. Удачи;)

3 голосов
/ 13 апреля 2009

Некоторые детали могут отличаться в зависимости от вашего хостинг-провайдера, но:

  1. Если вы этого еще не сделали, загрузите и установите Microsoft SQL Server Management Studio Express

  2. Ваш хостинг-провайдер должен предоставить вам информацию о подключении администратора для подключения к вашему экземпляру сервера sql. С этой информацией убедитесь, что вы можете подключиться с помощью MSSMSE. Если вы не можете, то все остальное не имеет значения.

  3. Перейдите на этот веб-журнал и выполните шаги для создания необходимых сценариев базы данных, чтобы перевести вашу базу данных в рабочую. Эти сценарии могут быть запущены в окне запроса MSSMSE.

  4. Обычно ваша строка подключения будет храниться в файле Web.Config. Строки подключения. Вы не захотите использовать стиль «AttachDbFilename =», если, как вы говорите в своем вопросе, вы перешли на полный SQL Server. Строка подключения будет выглядеть примерно так:

1 голос
/ 13 апреля 2009

MDF на самом деле не является плоской файловой базой данных, он использует движок SQL Express с пользовательскими экземплярами , поэтому он может подключать базы данных на лету. Этот механизм является ограниченной версией SQL Server, хотя ограничения достаточно высоки, поэтому если у вас нет загруженного сайта, это не будет проблемой. Начиная с здесь , ограничения ...

  • Отсутствие поддержки корпоративных функций
  • Ограничено одним процессором Один ГБ памяти
  • лимит для пула буферов. Базы данных
  • имеют максимальный размер 4 ГБ

Строка подключения должна находиться в вашем файле web.config, выполнить поиск «AttachDbFileName» (без кавычек). Для получения дополнительной информации см здесь .

Если у вас есть полный SQL в вашем хостинг-пакете, обычно хостинговая компания предоставляет вам веб-инструмент для прикрепления файла MDF (указав его путь) к полному экземпляру SQL-сервера. Вы можете просто оставить файл MDF в папке app_data (так как для папки установлены разрешения, запрещающие загрузку файла db анонимными пользователями).

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

См. здесь для инструкций Godaddy.

0 голосов
/ 18 августа 2009

Это очень легко сделать, если вы начинаете с новыми данными

Я запустил "C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ a spnet_regsql -C * Источник данных = localhost; Исходный каталог = MYDB; Постоянная информация о безопасности = True; ID пользователя =; Пароль = ** ;» * -Все ", чтобы включить таблицы членства ASP.NET и sprocs в БД по моему выбору. Если вы сделаете это, убедитесь, что вы переопределили стандартную строку соединения LocalSQLServer, или она не найдет БД, подобную этой, в web.config вашего сайта asp.net

<Прозрачный />

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