ODBC

Ermöglicht den Zugriff auf auf Datenbanken, für die ein ODBC Treiber verfügbar ist.

Derzeit steht hierbei Microsoft SQL Server im Vordergrund. Für andere Datenbanken sind entsprechende native Treiber implementiert (z.B. für PostgreSQL, Oracle)

Argumente

Typname: OdbcLayer

  • connectionString: ODBC Verbindungszeichenfolge.
Driver={ODBC Driver 17 for SQL Server}; Server=XXX; Database=YYY; 

Username und Passwort sind in den entsprechenden Parametern zu notieren.

Für SQL Server empfehlen wird die Verwendung des Treibers "ODBC Driver 17 for SQL Server"

Link zum Microsoft ODBC Driver 17.8.1 for SQL Server (x64)

Alternativ kann "SQL Server Native Client 11.0" verwendet werden.

Ein Anleitung für Download finden Sie hier, oder hier direkt der Link zum x64 Installer, bzw. Link zum x86 Installer.

Update 29.08.2020: Erhalten Sie den Fehler

[08001] [Microsoft][SQL Server Native Client 11.0]TCP Provider: Eine vorhandene Verbindung wurde vom Remotehost geschlossen. (10054)
[08001] [Microsoft][SQL Server Native Client 11.0]Client unable to establish connection (10054)

... dann aktualisieren Sie bitte den SqlServer Client auf dem Server gemäß oben stehender Downloads.

Maskierung: Wenn Werte mit Leerzeichen beginnen oder enden oder ein Semikolon enthalten, muss der Wert in eingeschlossen werden.

Hier ein Bsp. zu einem Kennwort: hdx{3KS;.2uIt}"jou4!Utv=9qk

Muss im Connection-string geschrieben werden als:

pwd={hdx{3KS;.2uIt}}"jou4!Utv=9qk}

Hinweis: Das Kennwort hier nur als Bsp., dieses sollte generell besser im dafür vorgesehenem Parameter angegeben werden.

  • source: Name der Tabelle oder einer Abfrage in der für die Datenbank gültigen Syntax.

  • geomColumnName (null): Name der Spalte, die die primäre Geometrie darstellt, wenn nicht angegeben, dann wird die 1. Geometriespalte der Quelle genommen. Ist keine vorhanden, dann wird die Ebene ohne Geometrie verwendet.

  • idColumnName (null): Name einer Spalte die eindeutige Werte in dieser Datenquellen kennzeichnet.

  • lastModColumnName (null): Name einer Spalte, die das Änderungsdatum der Datenzeile als DateTime enthält. Diese Information wird in der Beschreibung der Datenquelle ausgegeben (mit dem Wert, der zum Zeitpunkt des Ladens der Ebene vorhanden war).

    Beachte: Wenn angegeben, dann wird diese Information auch bei quickLoad:true ermittelt, d.h. es erfolgt dann immer ein Abfrage der Art select count(*), max(modCol) from ....

  • epsgCode (-1): Epsg-Code der Daten, wenn nicht definiert, dann wird eine automatische Ermittlung aus der Bounding-Box versucht. Bei quickLoad false wird dieser aus den Daten ermittelt.

  • srid (-1): SRID der Daten, wobei nur 0 sind macht, sonst identisch mit dem EpsgCode. Bei quickLoad false wird diese aus den Daten ermittelt.

  • userName (null): Überschreibt, wenn angegeben, den Nutzernamen im ConnectionString, kann verschlüsselt angegeben werden.

  • passWord (null): Überschreibt, wenn angegeben, das Kennwort im ConnectionString, kann verschlüsselt angegeben werden.

  • quickLoad (false): Legt fest, ob Count, BBox etc. beim ersten Zugriff ermittelt werden sollen.

  • style|cssFile: hier immer vom Typ Vector CSS, macht nur Sinn, wenn auch eine Geometriespalte in der Quelle vorhanden ist.

Ladevorgang

Wenn beim Laden quickLoad nicht mit false angegeben wurde, dann wird ...

  • keine Geometrie:

      SELECT COUNT(*) as CNT FROM {source}
    
  • mit Geometrie: ... je nach Datenbank (hier als MsSql Abfrage dargestellt) Ermittlung der BBox ....

      	WITH
      	ENVELOPE as
      	(
      		SELECT {geom}.STEnvelope() as envelope  FROM {source} WHERE NOT {geom} IS NULL
      	),
      	CORNERS as
      	(
      		SELECT envelope.STPointN(1) as point from ENVELOPE
      		UNION ALL select envelope.STPointN(3) from ENVELOPE
      	)
      	SELECT
      		count(*) as cnt,
      		case when min(point.STSrid) = max (point.STSrid) then min(point.STSrid)  else null end as srid,
      		MIN(point.STX) as MinX,
      		MIN(point.STY) as MinY,
      		MAX(point.STX) as MaxX,
      		MAX(point.STY) as MaxY
      	FROM
      		CORNERS
      	)
    

... ausgeführt.

Beispiel

{
"MsSQL": {
    "type": "OdbcLayer",
	"epsgCode": 25833,
	"connectionString": "dsn=test;uid=sa;pwd=geheim",
	"Source": "[DB].[dbo].[FOO_SHAPE_TABLE]",
	"geomColumnName":"geom",
	"idColumnName":"id",
	"cssfile": "D:\\Temp\\CSS\\VectorLayer.css"
    }
}

Implementierungsdetails / Features und Einschränkungen

Geometrien sind derzeit nur für Microsoft SQL Server implementiert (wie in der Einleitung geschrieben stehen für andere Datenbanken native Implementierungen zur Verfügung).

Der Abfruf der Geometrien erfolgt ohne jegliche Konvertierung direkt. Die für Microsoft SQL Server implementierten Geometrieformate finden Sie hier beschrieben.

Wir unterstützen derzeit nur den Datentyp Geometry, nicht Geography.

SQL Datentypen

Folgende Datentypen werden unterstützt:

  • SQL_CHAR
  • SQL_VARCHAR
  • SQL_LONGVARCHAR
  • SQL_WCHAR
  • SQL_WVARCHAR
  • SQL_WLONGVARCHAR
  • SQL_DATETIME
  • SQL_DECIMAL
  • SQL_NUMERIC
  • SQL_SMALLINT
  • SQL_INTEGER
  • SQL_REAL
  • SQL_FLOAT
  • SQL_DOUBLE
  • SQL_BIT
  • SQL_TINYINT
  • SQL_BIGINT
  • SQL_BINARY
  • SQL_VARBINARY
  • SQL_LONGVARBINARY
  • SQL_TYPE_DATE
  • SQL_TYPE_TIME
  • SQL_TYPE_TIMESTAMP
  • SQL_GUID
  • SQL_SS_UDT (nur in Verbindung mit "Geometry")

Zuletzt geändert: 20.09.2024 07:22:06 (erstmals erstellt 25.03.2018)