MSSQLSpatial-Microsoft SQL Server空间数据库

司机简称

MSSQLSpatial

生成依赖项

ODBC库

此驱动程序实现了对Microsoft SQL Server 2008+中空间表的访问支持,其中包含表示几何列的几何和地理数据类型。

驱动程序功能

Supports Create()

This driver supports the GDALDriver::Create() operation

Supports Georeferencing

This driver supports georeferencing

连接到数据库

要连接到MSSQL数据源,请使用指定数据库名称的连接字符串,并根据需要使用其他参数。连接字符串必须以' MSSQL: '.
MSSQL:server=.\MSSQLSERVER2008;database=dbname;trusted_connection=yes

除了 ODBC driver connection string 格式化以下自定义参数也可以在以下语法中使用:

  • Tables=schema1.table1(geometry column1),schema2.table2(geometry column2) :通过使用此参数,可以指定要由驱动程序使用的层的子集。如果未设置此参数,则将从几何列元数据表中检索图层。可以省略指定语法的模式和几何列部分。

  • GeometryFormat=native|wkb|wkt|wkbzm :从服务器检索几何图形所需的格式。默认值为“native”,在本例中使用的是native SqlGeometry和SqlGeography序列化格式。使用“wkb”或“wkt”设置时,几何图形表示将在服务器上转换为“已知二进制”和“已知文本”。这种转换在服务器上需要很大的开销,并且使功能访问比使用本机格式慢。wkbzm格式只能与SQL Server 2012一起使用。

连接字符串中的参数名不区分大小写。

指定 数据库 驱动程序需要参数才能选择正确的数据库。

连接可能包含可选的 驱动程序 参数是否应加载自定义SQL server驱动程序(如FreeTDS)。默认值是 {{SQL Server}

如果用户定义了环境变量 MSSQLSPATIAL_LIST_ALL_TABLES=YES (并且没有在连接字符串中指定Tables=),所有常规用户表都将被视为层。如果希望表中没有空间数据,则此选项非常有用

默认情况下,MSSQL驱动程序将只查找在 geometry_columns 元数据表。如果用户定义了环境变量 MSSQLSPATIAL_USE_GEOMETRY_COLUMNS=NO 然后驱动程序将查找在系统目录中找到的所有用户空间表

SQL语句

默认情况下,MS SQL空间驱动程序将SQL语句直接传递给MS SQL,而不是在对OGRDataSource使用ExecuteSQL()调用或对ogr2ogr使用-SQL命令选项时在内部对其求值。属性查询表达式也直接传递给MSSQL。也可以请求OGR MSSQL驱动程序使用 OGR SQL 发动机,通过 “OGRSQL” ExecuteSQL()方法的字符串,作为SQL方言的名称。

OGR中的MSSQL驱动程序支持普通SQL意义上的OGRLayer::StartTransaction()、OGRLayer::CommitTransaction()和OGRLayer::RollbackTransaction()调用。

创建问题

此驱动程序不支持创建新数据库,您可能希望使用 Microsoft SQL Server客户端工具 但它确实允许在现有数据库中创建新层。

图层创建选项

  • GEOM_TYPE :GEOM_TYPE layer creation选项可以设置为“geometry”或“geography”之一。如果未指定此选项,则默认值为“geometry”。要创建“geography”类型的几何列,此参数应设置为“geography”。在这种情况下,图层必须具有在 sys.spatial_reference_systems SQL Server元数据表。在这种情况下不支持投影坐标系。

  • OVERWRITE :这可能是“是”,以强制在创建请求的层之前销毁所需名称的现有层。

  • LAUNDER :这可能是“是”,以强制在此层上创建的新字段将其字段名“清洗”为与MSSQL更兼容的形式。这将转换为小写,并将一些特殊字符,如“-”和“#”转换为“#”。如果“否”,则保留准确的名称。默认值为“是”。如果启用,表(层)名称也将被清除。

  • PRECISION :如果可以使用数字(宽度、精度)或字符(宽度)类型,则此选项可能为“是”,以强制在此层上创建的新字段尝试表示宽度和精度信息。如果“否”,则将使用float、int和varchar类型。默认为“是”。

  • DIM={{2,3}} :控制层的尺寸。默认为3。

  • GEOMETRY_NAME :在新表中设置几何列的名称。如果省略,则默认为 ogr_geometry .

  • SCHEMA :设置新表的架构名称。如果不支持此参数,则默认架构“ dbo" 使用。

  • SRID :显式设置新表的空间引用id。相应的条目应已添加到spatial ref U sys元数据表中。如果未设置此参数,则SRID派生自源层SRS的权限代码。

  • SPATIAL_INDEX :布尔标志(YES/NO),用于启用/禁用在新创建的图层上自动创建空间索引(默认情况下启用)。

  • UPLOAD_GEOM_FORMAT :创建或修改要素时指定几何图形格式(wkb或wkt)。默认值为wkb。

  • FID :要创建的FID列的名称。默认为ogru fid。

  • 菲德64 :指定是否创建bigint类型的FID列以处理64位宽的ID。默认值=否

  • GEOMETRY_NULLABLE :指定几何图形列的值是否可以为空。默认值=是

  • EXTRACT_SCHEMA_FROM_LAYER_NAME :(来自GDAL 2.3.0)可以设置为NO,以避免将点字符视为模式和表名之间的分隔符。默认为“是”。

配置选项

The following configuration options are available:

  • MSSQLSPATIAL_USE_BCP: (From GDAL 2.1.0) Enable bulk insert when adding features. This option requires to to compile GDAL against a bulk copy enabled ODBC driver like SQL Server Native Client 11.0. To specify a BCP supported driver in the connection string, use the driver parameter, like DRIVER={SQL Server Native Client 11.0}. If GDAL is compiled against SQL Server Native Client 10.0 or 11.0 the driver is selected automatically not requiring to specify that in the connection string. If GDAL is compiled against SQL Server Native Client 10.0 or 11.0 the default setting of this parameter is TRUE, otherwise the parameter is ignored by the driver.

  • MSSQLSPATIAL_BCP_SIZE: (From GDAL 2.1.0) Specifies the bulk insert batch size. The larger value makes the insert faster, but consumes more memory. Default = 1000.

  • MSSQLSPATIAL_OGR_FID: Override FID column name. Default = ogr_fid.

  • MSSQLSPATIAL_ALWAYS_OUTPUT_FID: Always retrieve the FID value of the recently created feature (even if it is not a true IDENTITY column). Default = "NO".

  • MSSQLSPATIAL_SHOW_FID_COLUMN: Force to display the FID columns as a feature attribute. Default = "NO".

  • MSSQLSPATIAL_USE_GEOMETRY_COLUMNS: Use/create geometry_columns metadata table in the database. Default = "YES".

  • MSSQLSPATIAL_LIST_ALL_TABLES: Use mssql catalog to list available layers. Default = "NO".

  • MSSQLSPATIAL_USE_GEOMETRY_VALIDATION: (From GDAL 3.0) Let the driver detect the geometries which would trigger run time errors at MSSQL server. The driver tries to correct these geometries before submitting that to the server. Default = "YES".

交易支持

驱动程序在数据集级别实现事务,根据 RFC 54:数据集事务

实例

从OGR数据源创建层

ogr2ogr -overwrite -f MSSQLSpatial "MSSQL:server=.\MSSQLSERVER2008;database=geodb;trusted_connection=yes" "rivers.tab"

ogr2ogr -overwrite -f MSSQLSpatial "MSSQL:server=127.0.0.1;database=TestDB;UID=SA;PWD=DummyPassw0rd" "rivers.gpkg"

连接到层并转储内容

ogrinfo -al "MSSQL:server=.\MSSQLSERVER2008;database=geodb;tables=rivers;trusted_connection=yes"

ogrinfo -al "MSSQL:server=127.0.0.1;database=TestDB;driver=ODBC Driver 17 for SQL Server;UID=SA;PWD=DummyPassw0rd"

使用用户名/密码连接

ogrinfo -al   MSSQL:server=.\MSSQLSERVER2008;database=geodb;trusted_connection=no;UID=user;PWD=pwd