IIS ログ テーブルに対して次のことを実行しようとしています。
ALTER TABLE [W3CLog]
ADD [LogTime] AS [date] + ([time] - '1900-01-01') PERSISTED
ただし、SQL Server 2008 では次のように表示されます。
テーブル 'W3CLog' の計算列 'LogTime' は、列が非決定論的であるため、永続化できません。
テーブルには次の定義があります。
CREATE TABLE [dbo].[W3CLog](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
...
[date] [datetime] NULL,
[time] [datetime] NULL,
...
)
なぜそれは非決定論的なのですか?
私は本当にそのフィールドにインデックスを付ける必要があります。現在、テーブルには 1598170 行あり、フルタイムでインデックス シークを実行できない場合、クエリを実行するのは困難です。これは他のいくつかのログ形式と UNION されているため、2 つの列を別々に使用することは非常に簡単ではありません。