[mapguide-users] Maestro: can't find the table containing the geometry field with SQLServerSpatial

Brent Robinson brent.robinson at autodesk.com
Thu Oct 16 12:05:29 EDT 2008


Hi Carl,

The root node used by FDO for serializing feature schemas to XML differs depending on the number of schemas. When there is only one schema, the root is set to 'xs:schema', in order to produce a valid XML Schema document. However, when serializing multiple schemas, it wraps all the 'xs:schema' elements in an 'fdo:DataStore' to get everything under a single root element.

Unfortunately, Maestro might need to handle either root element. This can be verified by trying it with a datastore with only one FDO schema. This might need to be tried with a different provider. For an SQL Server 2008 datastore without FDO MetaSchema, you would always get multiple FDO schemas since it generates these from the SQL Server schemas present.

Brent.

-----Original Message-----
From: mapguide-users-bounces at lists.osgeo.org [mailto:mapguide-users-bounces at lists.osgeo.org] On Behalf Of Carl
Sent: Thursday, October 16, 2008 11:38 AM
To: mapguide-users at lists.osgeo.org
Subject: RE: [mapguide-users] Maestro: can't find the table containing the geometry field with SQLServerSpatial


Exactly, the returned XML based on the new version of SQLSpatialProvider
covers all tables.
But now the root node name is changed to 'fdo:DataStore', and Maestro check
that the root node name must be 'xs:schema'.  (as follows)

///////////////////////////////////
public class FeatureSourceDescription
        {
                private FeatureSourceSchema[] m_schemas;

                public FeatureSourceDescription(System.IO.Stream stream)
                {
                        XmlDocument doc = new XmlDocument();
                        doc.Load(stream);

                        if (doc.FirstChild.Name != "xml")
                                throw new Exception("Bad document");

                        if (doc.ChildNodes.Count != 2 || doc.ChildNodes[1].Name != "xs:schema")
                                throw new Exception("Bad document");

                        XmlNamespaceManager mgr = new XmlNamespaceManager(doc.NameTable);
                        mgr.AddNamespace("xs", "http://www.w3.org/2001/XMLSchema");
                        mgr.AddNamespace("gml", "http://www.opengis.net/gml");
                        mgr.AddNamespace("fdo", "http://fdo.osgeo.org/schemas");

            XmlNodeList lst =
doc.SelectNodes("xs:schema/xs:complexType[@abstract='false']", mgr);
                        m_schemas = new FeatureSourceSchema[lst.Count];
                        for(int i = 0;i<lst.Count;i++)
                                m_schemas[i] = new FeatureSourceSchema(lst[i], doc, mgr);
                }
......

///////////////////

Then I changed the Maestro to fit the new version
1. Check the root node name : 'fdo:DataStore'
2. Modify the line
XmlNodeList lst =
doc.SelectNodes("xs:schema/xs:complexType[@abstract='false']", mgr);

as

XmlNodeList lst =
doc.SelectNodes("fdo:DataStore/xs:schema/xs:complexType[@abstract='false']",
mgr);

OK. It works well. all tables are listed, and the table containing a
geometry field is shown as default.


Brent Robinson-5 wrote:
>
> One clarification. The fix is specific to the handling of varchar(max) and
> nvarchar(max). It likely doesn't address the problem mentioned at
> http://www.nabble.com/Maestro%3A-can%27t-find-the-table-containing-the-geometry-field-with-SQLServerSpatial-tp19977173p19994687.html
>
> -----Original Message-----
> From: mapguide-users-bounces at lists.osgeo.org
> [mailto:mapguide-users-bounces at lists.osgeo.org] On Behalf Of Brent
> Robinson
> Sent: Wednesday, October 15, 2008 12:37 PM
> To: MapGuide Users Mail List
> Subject: RE: [mapguide-users] Maestro: can't find the table containing the
> geometry field with SQLServerSpatial
>
> This is a known defect that was fixed in July. The fix provides almost
> full support for the varchar(max) and nvarchar(max) columns. There's one
> limitation: when selecting from these columns, values longer than 16000
> characters are truncated.
>
> The FDO 3.3.2 SQLServerSpatial provider should have the fix. It can be
> obtained from the Windows SDK download at
> http://fdo.osgeo.org/content/fdo-332-downloads. You'd just need to extract
> the following DLL's:
>
>         SQLServerSpatialProvider.dll
>         SQLServerSpatialOverrides.dll
>         OSGeo.FDO.Providers.SQLServerSpatial.Overrides.dll
>
> to MapGuide's FDO bin directories:
>
>         Program Files\Autodesk\MapGuideEnterprise2009\Server\Bin\FDO
>         Program Files\Autodesk\MapGuideStudio2009\FDO  (if present)
>
> I'd recommend saving copies of your current versions of these DLL's before
> extracting, just in case.
>
> I have MG enterprise on my machine so your directories might look a bit
> different.
>
> If you get a chance to try this out, please let me know if it fixes the
> problem.
>
>
> -----Original Message-----
> From: mapguide-users-bounces at lists.osgeo.org
> [mailto:mapguide-users-bounces at lists.osgeo.org] On Behalf Of Carl
> Sent: Wednesday, October 15, 2008 10:28 AM
> To: mapguide-users at lists.osgeo.org
> Subject: RE: [mapguide-users] Maestro: can't find the table containing the
> geometry field with SQLServerSpatial
>
>
> yes
>
>
> Brent Robinson-5 wrote:
>>
>> Hi Carl,
>>
>> Do any of your tables have a varchar(max) column?
>>
>> Brent.
>>
>>
>>
>
> --
> View this message in context:
> http://www.nabble.com/Maestro%3A-can%27t-find-the-table-containing-the-geometry-field-with-SQLServerSpatial-tp19977173p19994687.html
> Sent from the MapGuide Users mailing list archive at Nabble.com.
>
> _______________________________________________
> mapguide-users mailing list
> mapguide-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapguide-users
> _______________________________________________
> mapguide-users mailing list
> mapguide-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapguide-users
> _______________________________________________
> mapguide-users mailing list
> mapguide-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapguide-users
>
>

--
View this message in context: http://www.nabble.com/Maestro%3A-can%27t-find-the-table-containing-the-geometry-field-with-SQLServerSpatial-tp19977173p20015751.html
Sent from the MapGuide Users mailing list archive at Nabble.com.

_______________________________________________
mapguide-users mailing list
mapguide-users at lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapguide-users


More information about the mapguide-users mailing list