Я изучаю и пробую некоторые вещи в отношении автоматического сохранения переменных сеанса в SQL Server. Я нашел эту ссылку, где обсуждают состояние сеанса SQL Server (назовите его" Вариант 1 ") и эту ссылку, посвященную Постоянное состояние сеанса SQL Server (назовите его« Вариант 2 »).
Основное различие, по-видимому, заключается в том, что с вариантом 1, если компьютер, на котором запущен SQL Server, выключен, данные сеанса теряются, в отличие от варианта 2, который сохраняет их. В Варианте 1 кажется, что процесс использует tempdb, тогда как Вариант 2, кажется, сохраняет данные сеанса за счет использования базы данных ASPState.
У меня есть несколько вопросов, на которые я не могу найти ответов:
- В первом варианте в статье обсуждается конфигурация, требуемая в веб-конфигурации в отношении тега ‹sessionState>. Это не добавляется к постоянному случаю (вариант 2). Должно ли ‹sessionState> быть одинаковым в обоих случаях?
Я попробовал второй вариант, так как он больше соответствует моему сценарию. Я начал с загрузки PersistSQLState.exe, который просто самостоятельно извлекает сценарии InstallPersistSqlState.sql и UninstallPersistSqlState.sql. Я запустил InstallPersistSQLState.sql, который успешно завершился, и создал базу данных ASPState в SQL Server. Я установил тег ‹sessionState>, используя формат, указанный в Варианте 2, как описано в пункте 1) выше.
При запуске приложения я получил следующую ошибку:
«Невозможно использовать SQL Server, потому что либо состояние сеанса ASP.NET версии 2.0 не установлено на сервере SQL, либо ASP.NET не имеет разрешения на запуск хранимой процедуры dbo.TempGetVersion. Если в схеме состояния сеанса ASP.NET нет был установлен, установите состояние сеанса ASP.NET SQL Server версии 2.0 или выше. Если схема была установлена, предоставьте разрешение на выполнение хранимой процедуры dbo.TempGetVersion либо удостоверению пула приложений ASP.NET, либо пользователю Sql Server. указанный в атрибуте sqlConnectionString. "
Здесь выделяются две вещи: состояние сеанса Asp.Net версии 2.0, которое потенциально еще не установлено, и процесс, неспособный запустить хранимую процедуру dbo.TempGetVersion (по разным причинам).
Хранимая процедура dbo.TempGetVersion не существует в базе данных ASPState, созданной сценарием InstallPersistSqlState.sql. Действительно ли эта хранимая процедура связана с tempdb (непостоянной) и, следовательно, почему схема ASPState не включает ее?
Это состояние сеанса Asp.Net версии 2.0 что нужно установить? Если да, то каков процесс ?! Следует ли его устанавливать в базе данных ASPState после запуска сценария InstallPersistSQLState.sql? Если нет, что именно делать? Ни в Варианте 1, ни в Варианте 2 нет ничего, связанного с этим ".exe"!
Наконец, я также попытался удалить постоянный случай вместо запуска сценариев, относящихся к Варианту 1 (непостоянный). В этом случае скрипты, указанные в первой ссылке выше, не работают; возвращает 2 ошибки с не найденными вакансиями?!. Кто-нибудь знает, почему это могло произойти, и существуют ли правильные скрипты в каком-то онлайн-месте ?!
Любая помощь будет оценена по достоинству, поскольку документация по этому вопросу кажется скудной.