J'ai créé un projet simple avec une base de données SQL Server avec des dizaines de tables et beaucoup d'index mais rien de très compliqué. Aucun déclencheur, aucune procédure stockée, aucune "base de données magique" supplémentaire. Le code est écrit en C#, en utilisant le modèle Entity et le site de données dynamique pour configurer les bases très rapidement, donc certains singes de frappe pourraient être mis au travail et faire quelques entrées de données de base pendant que je modifierais le projet mature.'row_number' n'est pas un nom de fonction reconnu. Syntaxe incorrecte près du mot-clé 'AS'
Testé sur SQL Server 2005 et tout a bien fonctionné. J'ai donc fait une configuration via Visual Studio et l'ai envoyée à l'utilisateur Monkeys et à son administrateur. Tout ce qu'ils avaient à faire était: 1) Créer une nouvelle base de données. 2) Exécutez le script Create pour la base de données. 3) Installez la configuration que je leur ai donnée. 4) Modifiez la chaîne de connexion, qui se trouve être placée dans un fichier de configuration spécial pour leur commodité. 5) Utilisez l'interface Web et signalez-moi si quelque chose ne va pas.
Et quelque chose s'est mal passé. Cette erreur complète: Ligne 1:. Syntaxe incorrecte près « (» « row_number » est pas un nom de fonction reconnue syntaxe incorrecte près du mot-clé « AS »
Je n'utilise « row_number » dans mon code.. Je n'utilise que Linq pour les requêtes, d'ailleurs, à cause du modèle d'entité, je n'ai même pas à m'inquiéter de faire des choses SQL (même si je suis bon.)
Ma première estimation est Ils utilisent peut-être une chaîne de connexion défectueuse Ils peuvent installer cette application sur SQL Server (qui devrait fonctionner) mais ils n'ont pas complètement changé la chaîne de connexion et maintenant mon projet pense qu'il utilise SQL Server 2005. (Ou quoi que ce soit.) Ai-je raison ou est-ce causé par un autre insecte méchant?
erreur complète:
[SqlException (0x80131904): Line 1: Incorrect syntax near '('. 'row_number' is not a recognized function name. Incorrect syntax near the keyword 'AS'.]
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +1950890 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +4846875 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) +387[EntityCommandExecutionException: An error occurred while executing the command definition. See the inner exception for details.]
System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior) +423
System.Data.Objects.Internal.ObjectQueryExecutionPlan.Execute(ObjectContext context, ObjectParameterCollection parameterValues) +743
System.Data.Objects.ObjectQuery1.GetResults(Nullable
1 forMergeOption) +157
System.Data.Objects.ObjectQuery`1.GetIListSourceListInternal() +13 System.Data.Objects.ObjectQuery.System.ComponentModel.IListSource.GetList() +7 System.Web.UI.WebControls.EntityDataSourceView.ExecuteSelect(DataSourceSelectArguments arguments, Creator qbConstructor) +1168 System.Web.UI.WebControls.EntityDataSourceView.ExecuteSelect(DataSourceSelectArguments arguments) +102
System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) +19 System.Web.UI.WebControls.DataBoundControl.PerformSelect() +142 System.Web.UI.WebControls.BaseDataBoundControl.DataBind() +73 System.Web.UI.WebControls.GridView.DataBind() +4 System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() +82 System.Web.UI.WebControls.CompositeDataBoundControl.CreateChildControls() +72 System.Web.UI.Control.EnsureChildControls() +87 System.Web.UI.Control.PreRenderRecursiveInternal() +44 System.Web.UI.Control.PreRenderRecursiveInternal() +171 System.Web.UI.Control.PreRenderRecursiveInternal() +171 System.Web.UI.Control.PreRenderRecursiveInternal() +171 System.Web.UI.Control.PreRenderRecursiveInternal() +171 System.Web.UI.Control.PreRenderRecursiveInternal() +171 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +842
Cette application a été construit précédemment sur un système SQL Server 2000, puis il a travaillé aussi bien. Cependant, la base de données de test a été mise à jour jusqu'en 2005 alors que la base de données de production utilise encore 2000. Je m'attendrais à ce que cela ne pose aucun problème, mais ai-je raison dans mon hypothèse?
"Ils pourraient installer cette application sur SQL Server ..." Vous ne nous avez pas dit quelle version - est-ce 2000? –
Ils ne m'ont pas dit non plus, mais sur la base de l'erreur, je soupçonne qu'ils ont essayé 2000 ... -sigh- –