2

I find myself clueless about a recent behaviour twist I am witnessing with a deployed application.

I have a C# application, using entity model framework 5, and .net framework 4.5.

The application accesses a remote Mysql Database, and in order to do so we are using MySqlConnector version 6.9.7.

Everything has been working fine for months, until last week, when the machine the application is deployed onto started throwing Exception when trying to update the database.

Here is the Stack Trace of the Exception:


2016-06-08 16:38:51,247 [1] ERROR CactusLogger - Error! Writing to Database failed! - Exception Information 
System.TypeInitializationException: The type initializer for 'ExtentPlaceholderCreator' threw an exception. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.DllNotFoundException: Unable to load DLL 'SqlServerSpatial110.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
at Microsoft.SqlServer.Types.GLNativeMethods.SetClrFeatureSwitchMap(Int32 clrFeatureSwitchMap)
at Microsoft.SqlServer.Types.SqlGeometry.IsValidExpensive()
at Microsoft.SqlServer.Types.SqlGeometry.Construct(GeoData g, Int32 srid)
at Microsoft.SqlServer.Types.SqlGeometry.GeometryFromText(OpenGisType type, SqlChars text, Int32 srid)
at Microsoft.SqlServer.Types.SqlGeometry.STGeomFromText(SqlChars geometryTaggedText, Int32 srid)
at Microsoft.SqlServer.Types.SqlGeometry.Parse(SqlString s)
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Data.SqlClient.SqlSpatialServices.GeometryFromText(String geometryText)
at System.Data.Spatial.DbGeometry.FromText(String wellKnownText)
at System.Data.Mapping.Update.Internal.Propagator.ExtentPlaceholderCreator.InitializeTypeDefaultMap()
at System.Data.Mapping.Update.Internal.Propagator.ExtentPlaceholderCreator..cctor()
--- End of inner exception stack trace ---
at System.Data.Mapping.Update.Internal.Propagator.ExtentPlaceholderCreator.GetPropagatorResultForPrimitiveType(PrimitiveType primitiveType, PropagatorResult& result)
at System.Data.Mapping.Update.Internal.Propagator.ExtentPlaceholderCreator.Visit(EdmMember node)
at System.Data.Mapping.Update.Internal.Propagator.ExtentPlaceholderCreator.CreateEntitySetPlaceholder(EntitySet entitySet)
at System.Data.Mapping.Update.Internal.Propagator.ExtentPlaceholderCreator.CreatePlaceholder(EntitySetBase extent, UpdateTranslator parent)
at System.Data.Mapping.Update.Internal.Propagator.Visit(DbScanExpression node)
at System.Data.Common.CommandTrees.DbScanExpression.Accept[TResultType](DbExpressionVisitor`1 visitor)
at System.Data.Mapping.Update.Internal.UpdateExpressionVisitor`1.Visit(DbExpression expression)
at System.Data.Mapping.Update.Internal.Propagator.Visit(DbProjectExpression node)
at System.Data.Common.CommandTrees.DbProjectExpression.Accept[TResultType](DbExpressionVisitor`1 visitor)
at System.Data.Mapping.Update.Internal.Propagator.Propagate(UpdateTranslator parent, EntitySet table, DbQueryCommandTree umView)
at System.Data.Mapping.Update.Internal.UpdateTranslator.<ProduceDynamicCommands>d__44.MoveNext()
at System.Linq.Enumerable.<ConcatIterator>d__58`1.MoveNext()
at System.Data.Mapping.Update.Internal.UpdateCommandOrderer..ctor(IEnumerable`1 commands, UpdateTranslator translator)
at System.Data.Mapping.Update.Internal.UpdateTranslator.ProduceCommands()
at System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter)
at System.Data.EntityClient.EntityAdapter.Update(IEntityStateManager entityCache)
at System.Data.Objects.ObjectContext.SaveChanges(SaveOptions options)
at System.Data.Entity.Internal.InternalContext.SaveChanges()
at System.Data.Entity.Internal.LazyInternalContext.SaveChanges()
at System.Data.Entity.DbContext.SaveChanges()
at MyApplication.MyForm.AssignBtn_Click(Object sender, EventArgs e)

What is particularly frustrating is that the exception is not being thrown on the development machines.

Looking at the stack traces it is obvious that it is looking for SqlServerSpatial110.dll which is a dll we have never referenced before. Furthermore, it looks strange to me that the stack trace reveals that the stack trace reveals that the application is accessing Microsoft.SqlServer.Types, instead of MySql.Data.Types, given that the underlining DB and Connector is supposed to be MySql.

Needless to mention that I am not aware of using any kind of Spatial Data types...

At the moment my best bet would be that there must have been some side effect of the most recent Windows updates which were run automatically on the deployed machine.

Any hints on the source of the problem, or any possible solution.

Thanks in advance

BaroneAshura
  • 191
  • 1
  • 1
  • 14
  • Your issue is that the machine can't find the `'SqlServerSpatial110.dll'` to load it so I assume all your C# controllers aren't being loaded properly because of this – Jonathan Yaniv Ben Avraham Jun 08 '16 at 15:32
  • Sounds fair and correct. The real point for me would be understanding why, all of a sudden, the 'SqlServerSpatial110.dll' is not found anymore: not to mention that I did not even know the application was looking for it. – BaroneAshura Jun 08 '16 at 15:38
  • Look this. http://stackoverflow.com/questions/16868326/unable-to-load-dll-sqlserverspatial-dll – ssanga Jun 08 '16 at 15:39
  • I would Agree with @ssanga check this [answer](http://stackoverflow.com/a/16874243/5971639) – Jonathan Yaniv Ben Avraham Jun 08 '16 at 15:40
  • Checked these questions and answers already: what puzzles me is that I am not using any kind of 'Spatial' data types, neither in database nor into my application. Only int, varchar, datetime/timestamps, and enum are used in Database columns. Moreover, I am not even using Sql Server as database. – BaroneAshura Jun 08 '16 at 15:48

0 Answers0