SQL Server 2008 Spatial не допускает связанных таблиц - PullRequest
1 голос
/ 07 декабря 2011

У меня есть две таблицы с точно такой же схемой в 64-разрядной версии SQL Server 2008 Standard, с одним исключением: одна - ваша «базовая» таблица, другая включена для хранения географических данных в пространственном формате SQL Server. Я включил SQL для генерации таблиц.

У нас есть требование к клиентам, чтобы они имели доступ к этим таблицам (в идеале, к одной таблице, с опцией M $ Spatial) через интерфейс M $ Access через связанные таблицы. Эта база данных содержит несколько других таблиц, которые отлично работали в Access через связанные таблицы, и dbo.non_spatial также отлично работает. Однако dbo.spatial при попытке создать связанную таблицу при доступе к dbo.spatial возвращает ошибку в Access «-7477», и таблица не связывается. Я пробовал каждую возможную перестановку опций в DSN, файле, пользователе, системе, включение трассировки, и никакой подсказки об ошибке не обнаруживается. Пересоздав dbo.spatial в dbo.non_spatial, связанная таблица работает, что позволяет мне полагать, что пространственная схема Microsoft недоступна для Access в виде связанной таблицы. Я не могу найти никаких документов, подтверждающих это. Я пробовал представление без столбца Shape [geometry], и Access может видеть таблицу для ссылки на него, но для заполнения представления в Access требуется 20-30 минут, и я не очень заинтересован в использовании представлений в качестве обходного пути, так как это приведет к необходимости поддерживать представления для многих других пространственных таблиц. Итак .... как я могу ссылаться на пространственные таблицы SQL в Access?

/****** create a non-spatial table******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[non_spatial]
    [OBJECTID] [int] NOT NULL,
    [FCategory] [nvarchar](16) NOT NULL,
    [MapMethod] [nvarchar](4) NOT NULL,
    [HError] [nvarchar](50) NOT NULL,
    [MapSource] [nvarchar](255) NULL,
    [SourceDate] [datetime2](7) NULL,
    [EditDate] [datetime2](7) NOT NULL,
    [Notes] [nvarchar](255) NULL,
    [Species_Community] [nvarchar](50) NOT NULL,
    [Location_ID] [uniqueidentifier] NOT NULL,
    [Site_ID] [uniqueidentifier] NULL,
    [GIS_Location_ID] [nvarchar](50) NULL,
    [Meta_MID] [nvarchar](50) NULL,
    [X_Coord] [numeric](38, 8) NULL,
    [Y_Coord] [numeric](38, 8) NULL,
    [Coord_Units] [nvarchar](50) NULL,
    [Coord_System] [nvarchar](50) NULL,
    [UTM_Zone] [nvarchar](50) NULL,
    [Accuracy_Notes] [nvarchar](255) NULL,
    [Unit_Code] [nvarchar](12) NULL,
    [Loc_Name] [nvarchar](100) NULL,
    [Loc_Type] [nvarchar](25) NULL,
    [Updated_Date] [nvarchar](50) NULL,
    [Loc_Notes] [nvarchar](255) NULL,
    [Datum] [nvarchar](5) NULL,
    [Watershed] [nvarchar](50) NULL,
    [StreamName] [nvarchar](50) NULL,
    [NHDReachCode] [nvarchar](14) NULL,
    [TOPO_NAME] [nvarchar](50) NULL,
    [Trail] [nvarchar](100) NULL,
    [Road] [nvarchar](50) NULL,
    [Elevation] [numeric](38, 8) NULL,
    [LAT] [numeric](38, 8) NULL,
    [LON] [numeric](38, 8) NULL,
    [Population_ID] [uniqueidentifier] NULL,
    [Year_] [nvarchar](4) NULL,
    [WGS_DAT] [nvarchar](5) NULL,
    [WGS_CS] [nvarchar](5) NULL,
    [County] [nvarchar](20) NULL,
    [State] [nvarchar](15) NULL,
    [IsExtant] [nvarchar](3) NULL,
    [IsSenstive] [nvarchar](3) NULL,
    [SpeciesName] [nvarchar](125) NULL,
    [SpeciesID] [nvarchar](50) NULL,
    [Species_ID] [int] NULL,
    [Shape] [int] NULL
) ON [PRIMARY]

GO

********************************************************************
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[spatial](
    [OBJECTID] [int] NOT NULL,
    [FCategory] [nvarchar](16) NOT NULL,
    [MapMethod] [nvarchar](4) NOT NULL,
    [HError] [nvarchar](50) NOT NULL,
    [MapSource] [nvarchar](255) NULL,
    [SourceDate] [datetime2](7) NULL,
    [EditDate] [datetime2](7) NOT NULL,
    [Notes] [nvarchar](255) NULL,
    [Species_Community] [nvarchar](50) NOT NULL,
    [Location_ID] [uniqueidentifier] NOT NULL,
    [Site_ID] [uniqueidentifier] NULL,
    [GIS_Location_ID] [nvarchar](50) NULL,
    [Meta_MID] [nvarchar](50) NULL,
    [X_Coord] [numeric](38, 8) NULL,
    [Y_Coord] [numeric](38, 8) NULL,
    [Coord_Units] [nvarchar](50) NULL,
    [Coord_System] [nvarchar](50) NULL,
    [UTM_Zone] [nvarchar](50) NULL,
    [Accuracy_Notes] [nvarchar](255) NULL,
    [Unit_Code] [nvarchar](12) NULL,
    [Loc_Name] [nvarchar](100) NULL,
    [Loc_Type] [nvarchar](25) NULL,
    [Updated_Date] [nvarchar](50) NULL,
    [Loc_Notes] [nvarchar](255) NULL,
    [Datum] [nvarchar](5) NULL,
    [Watershed] [nvarchar](50) NULL,
    [StreamName] [nvarchar](50) NULL,
    [NHDReachCode] [nvarchar](14) NULL,
    [TOPO_NAME] [nvarchar](50) NULL,
    [Trail] [nvarchar](100) NULL,
    [Road] [nvarchar](50) NULL,
    [Elevation] [numeric](38, 8) NULL,
    [LAT] [numeric](38, 8) NULL,
    [LON] [numeric](38, 8) NULL,
    [Population_ID] [uniqueidentifier] NULL,
    [Year_] [nvarchar](4) NULL,
    [WGS_DAT] [nvarchar](5) NULL,
    [WGS_CS] [nvarchar](5) NULL,
    [County] [nvarchar](20) NULL,
    [State] [nvarchar](15) NULL,
    [IsExtant] [nvarchar](3) NULL,
    [IsSenstive] [nvarchar](3) NULL,
    [SpeciesName] [nvarchar](125) NULL,
    [SpeciesID] [nvarchar](50) NULL,
    [Species_ID] [int] NULL,
    [Shape] [geometry] NULL,
 CONSTRAINT [R26_pk] PRIMARY KEY CLUSTERED 
(
    [OBJECTID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 75) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[spatial]  WITH CHECK ADD  CONSTRAINT [g6_ck] CHECK  (([SHAPE].[STSrid]=(26917)))
GO

ALTER TABLE [dbo].[spatial] CHECK CONSTRAINT [g6_ck]
GO

В Access вы можете ссылаться на non_spatial, но не можете ссылаться на пространственный!

1 Ответ

1 голос
/ 11 февраля 2012

Как оказалось, это документированная "фича"! Обходной путь - создать представление без столбца геометрии и связать его с представлением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...