制限については、通知用クエリの作成で説明されています。geography
CLR システム タイプ ( 、geometry
、 )については言及されていませんhierachyid
。クエリ通知が舞台裏でどのように機能するかについては以前に説明しました。その記事を読めば、クエリ通知の要件がインデックス付きビューの要件と正確に一致することがわかります (記事では、それが偶然ではない理由を説明しています)。したがって、必要に応じてインデックス付きビューを作成できる場合は、クエリ通知が機能するはずです。MSDN の例を使用して、試してみましょう。
CREATE TABLE SpatialTable
( id int IDENTITY (1,1),
GeogCol1 geography,
GeogCol2 AS GeogCol1.STAsText() );
GO
INSERT INTO SpatialTable (GeogCol1)
VALUES (geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656)', 4326));
INSERT INTO SpatialTable (GeogCol1)
VALUES (geography::STGeomFromText('POLYGON((-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))', 4326));
GO
create view vw_test
with schemabinding
as
select id, GeogCol1, GeogCol2
from dbo.SpatialTable
where geography::STGeomFromText('POINT(-122.35 47.656)',4326).STIntersects(GeogCol1) = 1;
go
create unique clustered index cdx_vw on vw_test (id)
go
メッセージ 1982、レベル 16、状態 1、行 1
ビュー 'test.dbo.vw_test' にインデックスを作成できません。ビューが CLR 型 'Microsoft.SqlServer.Types.SqlGeography' の非決定論的または不正確なメンバー関数 'STGeomFromText' を参照しているためです。関数への参照を削除するか、決定論的な方法で動作するように関数を変更することを検討してください。インデックスの破損につながる可能性があるため、非決定論的に動作する CLR 関数を IsDeterministic=true として宣言しないでください。詳細についてはオンライン ブックを参照してください。
答えは次のとおりです。クエリ通知 (および SqlDependency などの他のすべての派生物) は関数ではgeography::STGeomFromText
機能しません。