Мы пытаемся переместить состояние сеанса 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 не поддерживает задания базы данных, поэтому я вижу только следующие варианты:
- Вместо этого запускать SQL на виртуальной машине (значительно дороже, и я предпочел бы придерживаться сервисов платформы, чем необходимости)управлять виртуальными машинами)
- Реализовать один из этих "Elastic Job Agents"
- Возможно, перенести ту же функциональность в другое место (например, в хранимый процесс)?