「ASP.NET MVC5 実践プログラミング」ではRedisを使う紹介があったのですが、SQLServerでもできるようなので調べてみたらめんどうだったのでメモ。
まず、sessionStateの設定。
[code lang=text]
…
[/code]
このまま実行したら勝手に良きに計らってくれるのだろう。
と思ったらエラー。
ASP.NET Version 2.0 Session State が SQL Server 上にインストールされていないか、dbo.TempGetVersion ストアド プロシージャを実行するためのアクセス許可が ASP.NET にないため、SQL Server を使用できません。ASP.NET Session State スキーマがインストールされていない場合は、ASP.NET Session State SQL Server Version 2.0 以降をインストールしてください。スキーマがインストールされている場合は、dbo.TempGetVersion ストアド プロシージャを実行するためのアクセス許可を、アプリケーション プール ID、または sqlConnectionString 属性で指定されている SQL Server ユーザーに付与してください。
「ASP.NET Version 2.0 Session State が SQL Server 上にインストールされていない」らしい。なにそれ。
探してみると aspnet_regsql.exeを使ってセッションを管理する色々を追加すると良いらしい。
普通のSQLサーバーの場合(試してない)
[code lang=text]
> C:WindowsMicrosoft.NETFrameworkv4.0.30319aspnet_regsql.exe -S server -E -ssadd -sstype p
[/code]
ASP.NET開発で使うローカルDBの場合
[code lang=text]
> C:WindowsMicrosoft.NETFrameworkv4.0.30319aspnet_regsql.exe -S “(localdb)v11.0” -E -ssadd -sstype c -d DatabaseName
[/code]
コレを実行するとデータベース内に必要なテーブルとストアドが登録されて、晴れてセッションをSqlServerで管理できるようになりました。
migrationさせるにはどうしたらいいのかなぁ。ちまちま定義を作るしかないのかな。ストアドって作れたっけ。SQL流せばいいのかな。
(AzureではRedisを使おうと思っているので一生調べない気もする。)