SqlException (0x80131904): Ligne 28: syntaxe incorrecte près de '('.]
Il vous plaît quelqu'un m'aider!
J'ai une application en cours d'exécution sur windows 2003 avec sql server 2005. Lorsque j'essaie de déployer ce une application dans d'autres serveur sous windows 2003 avec sql server 2000, certaines pages de l'application affiche le message ci-dessous:
Server Error in '/' Application.
Line 1: Incorrect syntax near '('.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.SqlClient.SqlException: Line 1: Incorrect syntax near '('.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[SqlException (0x80131904): Line 1: Incorrect syntax near '('.]
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +1948826
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +4844747
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +194
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2392
System.Data.SqlClient.SqlDataReader.ConsumeMetaData() +33
System.Data.SqlClient.SqlDataReader.get_MetaData() +83
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +297
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +954
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +162
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +32
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +141
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) +12
System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior) +10
System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior) +383
[EntityCommandExecutionException: An error occurred while executing the command definition. See the inner exception for details.]
System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior) +422
System.Data.Objects.Internal.ObjectQueryExecutionPlan.Execute(ObjectContext context, ObjectParameterCollection parameterValues) +745
System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption) +162
System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() +45
System.Linq.Enumerable.FirstOrDefault(IEnumerable`1 source) +203
System.Data.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__1(IEnumerable`1 sequence) +40
System.Data.Objects.ELinq.ObjectQueryProvider.ExecuteSingle(IEnumerable`1 query, Expression queryRoot) +60
System.Data.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute(Expression expression) +109
System.Linq.Queryable.FirstOrDefault(IQueryable`1 source) +269
SebraeFE.Models.Repositories.InterestsRepository.DeleteInterests(Interests interestsToDelete) +418
SebraeFE.Models.Managers.InterestsManager.DeleteInterests(Interests interestsToDelete) +41
SebraeFE.Models.Facades.InterestsFacade.DeleteInterests(Interests interestsToDelete) +41
SebraeFE.Controllers.OportunidadeController.ApagarInteresse(Int32 Id) +265
lambda_method(ExecutionScope , ControllerBase , Object[] ) +78
System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +17
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +178
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +24
System.Web.Mvc.<>c__DisplayClassa.<InvokeActionMethodWithFilters>b__7() +53
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +258
System.Web.Mvc.<>c__DisplayClassc.<InvokeActionMethodWithFilters>b__9() +20
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +258
System.Web.Mvc.<>c__DisplayClassc.<InvokeActionMethodWithFilters>b__9() +20
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +193
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +382
System.Web.Mvc.Controller.ExecuteCore() +123
System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +23
System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +7
System.Web.Mvc.MvcHandler.ProcessRequest(HttpContextBase httpContext) +144
System.Web.Mvc.MvcHandler.ProcessRequest(HttpContext httpContext) +54
System.Web.Mvc.MvcHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext httpContext) +7
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +406
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +76
Version Information: Microsoft .NET Framework Version:2.0.50727.3053; ASP.NET Version:2.0.50727.3053
un unsing les technologies ci-dessous:
- asp.net mvc 1
- ADO.net et LINQ
s'il vous plaît aider moi!
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
ouvrez votre modèle .edmx avec l'éditeur xml, et de modifier cette
à
il pourrait être le linq .first() qui génère le script sql "de Haut (1)" qui travaille dans sql2005, mais doit être top 1' avec '('et ')' en sql 2000
il fonctionne dans ma solution.
Dans le .fichier edmx vous avez besoin de changer la ProviderManifestToken à 2000, dans le Schéma de la balise à ProviderManifestToken="2000" (il sera ProviderManifestToken="2005")
ref: Entity Framework sur Sql 2000 par rapport à Sql 2005 et ProviderManifestToken
Certains SQL Server 2005, les requêtes qui contiennent 2005 extensions spécifiques comme la fonction ROW_NUMBER(), les expressions de table communes [par exemple, AVEC x COMME (...) SELECT ... from x], etc. ne sont pas rétro-compatible avec SQL Server 2000.
Vous devez vous assurer que votre application s'exécute uniquement sur SQL Server 2005 ou vous devez retravailler vos requêtes spécifiques à SQL Server 2005 vers SQL Server 2000, 2005, et probablement en 2008 aussi, pour faire bonne mesure. Il y a beaucoup de documentation disponible à ce que les différences sont en T-SQL syntaxe et sémantique entre les différentes versions de SQL Server.
Je crains que vous n'allez pas obtenir beaucoup plus de l'aide de quelqu'un sans en révéler le texte de la requête réelle. Ce serait comme me demander de vous corriger mon erreur d'orthographe sur la ligne 12 de ma 3ème année d'anglais à terme papier. Non, vous ne pouvez pas l'avoir, mais pouvez-vous le corriger pour moi?
Il est assez difficile w/o avoir une idée de ce que votre requête ressemble. Cette exception a moi avant avec la sélection des TOP expressions. Dans SQL 2005+ un simple SELECT TOP pourrait ressembler à ceci:
Toutefois, vous recevrez la syntaxe exacte de l'erreur d'exception vous parlons dans SQL server 2000, SQL 2000 ne permet pas de parenthèse dans le SÉLECTIONNER en HAUT de l'expression. En d'autres termes, il doit ressembler à ceci:
Une autre astuce pour essayer d'obtenir au fond de ce est pour obtenir exactement l'instruction SQL générée, puis allez dans SQL server 2000 Enterprise Manager et de l'exécuter. Quand il vous donne la même erreur, dans certains cas, EM vous permettra d'un peu plus près de l'endroit où la syntaxe problème existe (essayez de diviser votre requête sur plusieurs lignes)
Cette erreur m'est juste arrivé à l'aide de Entity Framework, SQL Server 2008 dans un service Windows en cours d'exécution sur .NET framework 4.
C'était simple, vraiment, vérifiez que votre requête est de type sécurisé dans linq. C'est à dire ne pas faire une clause where comme
fld > 0
si lefld
est unvarchar
vous devriez le faire oùfld isnot nothing
. Le problème je pense, c'est quand .net tente de faire correspondre le linq types de la db types de champ et SQL Server n'aime pas courir le SQL généré.Donc, fondamentalement, cette erreur est un pique-nique pas un logiciel glitch.
Ma requête qui est allé splat a été
La requête qui a résolu le problème était
Espère que cette aide
Il semble tout à fait possible que vous essayez d'utiliser quelque chose que SQL 2005 et SQL 2000 ne l'est pas. Les expressions de table communes?
Il pourrait être LINQ. Il n'est pas 100% compatible avec Sql 2000.
Je n'ai pas trouver la vraie raison. Mais il semble être quelque chose sur le linq et sql2000, exactement comme Charles Conway dit.
Le code ci-dessous fonctionne pour moi:
remplacer:
:
Je ne l'aime pas, mais fonctionne...