Я хочу использовать службы приложений ASP.NET, но настроить их для использования другой схемы. Я использую инструмент aspnet_regsql.exe, как описано в этом URL-адрес, который по умолчанию создает таблицы и хранит процессы со схемой dbo.
Поэтому я подумал, что могу просто сгенерировать сценарий базы данных из существующих объектов приложения, а затем найти и заменить [dbo] на [пример], а затем удалить исходные объекты служб приложений и выполнить отредактированный сценарий, чтобы получить желаемый результат. Взял бы только мгновение.
Но при чтении этого сообщения в блоге Скотта Гу есть люди в разделе комментариев, которые пробовали именно этот подход и обнаружили, что он упал. Скотт ответил, запросив электронное письмо о проблеме, что, как я полагаю, является подтверждением проблемы, но я не вижу никакого решения.
Итак, я нахожусь на стадии моделирования данных, и мне действительно не нужно много хлопот в будущем. Кто-нибудь знает, было ли это решено или в подходе поиска и замены к проблеме схемы dbo продолжают возникать какие-либо препятствия?
ОБНОВЛЕНИЕ:
Так что я даже не успел «продвинуться очень далеко по трассе», прежде чем вышеперечисленное упало. Очевидно, что достаточно легко настроить базу данных, чтобы все объекты должным образом ссылались друг на друга с использованием новой схемы, но, похоже, весь код поддержки содержит в себе зашитые ссылки "dbo" ... вместо использования схемы по умолчанию для подключающейся учетной записи пользователя .
Просто пытаюсь использовать VS Studio> Проект | Инструмента НАСТРОЙКА ASP.NET достаточно, чтобы его сломать. После изменения веб-конфигурации, указывающей на новую базу данных с настроенными схемами, а затем перехода на вкладку «Безопасность» инструментов конфигурации, я получаю сообщение об ошибке «Не удалось найти хранимую процедуру 'dbo.aspnet_CheckSchemaVersion'». Таким образом, похоже, что 'dbo' был запечен. :(
ОБНОВЛЕНИЕ 2:
Итак, я добавил СИНОНИМЫ, как указано в принятом ответе и он работает, но мне пришлось ввести 4 записи в базу данных, чтобы начать работу. Это заняло целых 30 секунд. ;)
Перед этим я получил следующую ошибку:
'System.Web.Security.SqlMembershipProvider' требует схемы базы данных, совместимой с версией схемы '1'
Поэтому мне пришлось скопировать строку приложения из таблицы aspnet_Applications. А затем 3 строки из таблицы aspnet_SchemaVersions. Я получил их при установке схемы dbo по умолчанию.
Это была запись aspnet_Applications (замаскирована xxxx для уникальности - вам придется создать свой собственный ключ):
/ / xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
Это были записи aspnet_SchemaVersions:
common 1 True
membership 1 True
role manager 1 True
Сейчас все работает. Я обновлю этот пост, если у меня возникнут проблемы в будущем.