【问题标题】:SQL Server 2008 Spatial does not allow linked tablesSQL Server 2008 Spatial 不允许链接表
【发布时间】:2011-12-07 18:47:21
【问题描述】:

我在 SQL Server 2008 Standard 64 位中有两个具有完全相同架构的表,但有一个例外:一个是您的“基本”表,一个能够以 SQL Server 空间格式存储地理数据。我已经包含了生成表的 SQL。

我们的任务要求客户​​通过链接表通过 M$ Access 前端访问这些表(理想情况下只有一个表,带有 M$ Spatial Option)。该数据库包含其他几个通过链接表在 Access 中运行良好的表,并且 dbo.non_spatial 也运行良好。但是,dbo.spatial 在尝试在访问 dbo.spatial 时创建链接表时,在 Access 中返回错误“-7477”并且该表没有链接。我已经尝试了 DSN、文件、用户、系统中所有可能的选项排列,打开跟踪,并且没有任何线索显示错误本身。通过将 dbo.spatial 重新创建为 dbo.non_spatial,链接表可以工作,这让我相信 Microsoft 空间架构不能作为链接表用于 Access。我找不到任何文件来证实这一点。我尝试了一个没有 Shape[geometry] 列的视图,Access 可以看到要链接到它的表,但是在 Access 中填充视图需要 20-30 分钟,而且我对使用视图作为解决方法并不感兴趣,因为这将导致必须维护更多空间表的视图。那么....如何链接到 Access 中的 SQL 空间表?

/****** 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 但不能链接到空间!

【问题讨论】:

    标签: sql sql-server-2008


    【解决方案1】:

    事实证明,这是一个记录在案的“功能”!解决方法是创建一个没有几何列的视图,并链接到该视图

    【讨论】:

      猜你喜欢
      • 2011-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多