Различные трудности при создании таблиц сессий ASP.NET через aspnet_regsql.exe - PullRequest
0 голосов
/ 23 сентября 2019

Мы пытаемся переместить состояние сеанса ASP.NET для одного из наших веб-приложений Azure в базу данных, и похоже, что это средство aspnet_regsql.exe.К сожалению, я застрял на несколько вопросов ниже.Это база данных SQL Azure, и я подключаюсь, используя учетную запись администратора сервера.

  • Сначала я хотел добавить таблицы сеансов в нашу существующую базу данных, поэтому я запустил .\aspnet_regsql.exe -U adminusername -P adminpassword -S servername.database.windows.net -d databasename -ssadd -sstype c.В результате возникает исключение «База данных« имя базы данных »уже существует. Выберите другое имя базы данных»
  • Если имя базы данных пропущено и ее повторный запуск, возникает исключение: «Истекло время ожидания выполнения» примерно через 30 секунд, что является значением по умолчанию для SqlCommand.CommandTimeout.Это происходит при выполнении команды «CREATE DATABASE».Я попытался создать базу данных вручную, и по какой-то причине это занимает около 50 секунд.Эта база данных имеет уровень S0 и не загружается
  • Повторное выполнение aspnet_regsql в уже созданной базе данных (поскольку она идемпотентна, верно?) Приводит к ошибке «База данных уже существует», как и предварительное созданиепустая база данных для запуска.
  • Нет флага, позволяющего увеличить время ожидания, и я не могу установить время ожидания команды, используя флаг -C (строка подключения)
  • Добавление -Флаг sqlexportonly для генерации скрипта и просто запуска, который напрямую не работает (да, я знаю, что не должен запускать InstallSqlState.sql напрямую).Он выдает целую кучу сообщений об ошибках, говорящих о таких вещах, как:
    • Reference to database and/or server name in 'msdb.dbo.sp_add_job' is not supported in this version of SQL Server.
    • USE statement is not supported to switch between databases.
    • Что заставляет меня думать, что у этого скрипта могут быть некоторые проблемы с SQL Azureбаза данных ...

У кого-нибудь есть идеи?

Обновление:

Похоже, что все ошибки, связанные с msdb,связанные с удалением и повторным добавлением задания базы данных под названием «Job_DeleteExpiredSessions».Azure SQL не поддерживает задания базы данных, поэтому я вижу только следующие варианты:

  1. Вместо этого запускать SQL на виртуальной машине (значительно дороже, и я предпочел бы придерживаться сервисов платформы, чем необходимости)управлять виртуальными машинами)
  2. Реализовать один из этих "Elastic Job Agents"
  3. Возможно, перенести ту же функциональность в другое место (например, в хранимый процесс)?

1 Ответ

0 голосов
/ 24 сентября 2019

Оказывается, у Microsoft есть статья о том, как делать именно то, что мне нужно, что я как-то пропустил во время вчерашнего поиска.Надеюсь, этот ответ спасет кого-то еще от нескольких часов разочарования.Вся необходимая информация находится на https://azure.microsoft.com/en-au/blog/using-sql-azure-for-session-state/ ранее.

Обратите внимание, что YMMV, начиная с 2010 года, также говорит страшными красными буквами

«Microsoft не поддерживает управление состоянием сеанса SQL с использованием баз данных SQL Azure для приложений ASP.net»

Тем не менее, они предоставляют рабочий скрипт, который, кажется, делает именно то, что мне нужно.

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