ThinkGeo.com    |     Documentation    |     Premium Support

SQL Server timeout when calling GetBoundingBox

Howdy,


I have discovered and issue when using an MSSql2008FeatureLayer. If the layer has only ONE feature and the GetBoundingBox method is called, you will receive a timeout error from the server. I increased the length of the timeout to 10 minutes and the timeout still occurred. If you add one more feature to the layer everything is fine. I have attached a sample project you can use to test the problem.


Thanks!


Steve



SQLServerLayer.zip (17.7 KB)

Hello Steven, 
  
 Thanks for your post, we have done some enhancements to  the method “GetBoundingBox” of MSSql2008FeatureSoruce, could you please get the newest version 5.5.159.0 or later and have another try? 
  
 Regards, 
  
 Gary

Hi Gary, 



I finally got around to having a try using version 5.5.164.0. An exception is raised when the call is made to GetBoundingBox. Here is the stack trace: 


System.Data.SqlClient.SqlException was unhandled 

Class=16 

ErrorCode=-2146232060 

LineNumber=1 

Message=Invalid column name 'geom'. 

Invalid column name 'geom'. 

Invalid column name 'geom'. 

Number=207 

Procedure="" 

Server=STEVEM6500\WILDBIRD 

Source=.Net SqlClient Data Provider 

State=1 

StackTrace: 

at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) 

at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) 

at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() 

at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) 

at System.Data.SqlClient.SqlDataReader.ConsumeMetaData() 

at System.Data.SqlClient.SqlDataReader.get_MetaData() 

at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) 

at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) 

at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) 

at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) 

at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) 

at System.Data.SqlClient.SqlCommand.ExecuteReader() 

at ThinkGeo.MapSuite.Core.MsSql2008FeatureSource.GetBoundingBoxCore() 

at ThinkGeo.MapSuite.Core.FeatureSource.GetBoundingBox() 

at ThinkGeo.MapSuite.Core.FeatureLayer.GetBoundingBoxCore() 

at ThinkGeo.MapSuite.Core.Layer.GetBoundingBox() 

at SerializeWMSLayer.Form1.LoadSQLSpatialLayer() in C:\Users\steller\Documents\Visual Studio 2010\Projects\ThinkGeo\SQLServerLayer\Form1.vb:line 41 

at SerializeWMSLayer.Form1.btnLoad_Click(Object sender, EventArgs e) in C:\Users\steller\Documents\Visual Studio 2010\Projects\ThinkGeo\SQLServerLayer\Form1.vb:line 54 

at System.Windows.Forms.Control.OnClick(EventArgs e) 

at System.Windows.Forms.Button.OnClick(EventArgs e) 

at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) 

at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) 

at System.Windows.Forms.Control.WndProc(Message& m) 

at System.Windows.Forms.ButtonBase.WndProc(Message& m) 

at System.Windows.Forms.Button.WndProc(Message& m) 

at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 

at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 

at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 

at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) 

at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData) 

at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) 

at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) 

at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun() 

at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel() 

at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine) 

at SerializeWMSLayer.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:line 81 

at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 

at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 

at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 

at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 

at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) 

at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 

at System.Threading.ThreadHelper.ThreadStart() 

InnerException:


 

It almost sounds like it's hard-coded to look for a column called 'geom' which does not exist in my data.


Thanks!


Steve


 



Hi Steve, 
  
 We apologize for the mistake, which is fixed now. Please get the latest version 5.5.166.0 or 5.5.0.166 and have a try. 
  
 Thanks, 
 Johnny

Hi guys, 
  
 I tested with Development version 5.5.167.0 and it works fine. The timeout error still occurs in the Production build 5.5.0.167. 
  
 Thanks! 
  
 Steve

Hello Steven, 
  
 I’m glad it’s working, we are preparing the 6.0 release, so it will synchronize the development branch and release branch when the release coming. 
  
 Regards, 
  
 Gary