Я создал простой проект с базой данных SQL Server с десятками таблиц и множеством индексов, но на самом деле ничего сложного. Нет триггеров, нет хранимых процедур, нет дополнительной "магии базы данных".
Код написан на C # с использованием модели Entity и Dynamic Data Site, чтобы просто очень быстро настроить основы, поэтому некоторые типизирующие обезьяны могут быть задействованы и выполнять некоторые основные операции с вводом данных, пока я изменю проект, чтобы он стал более зрелым. .
Протестировано на SQL Server 2005 и все работало нормально. Поэтому я выполнил настройку через Visual Studio и отправил ее набрав Monkeys и их администратору. Все, что им нужно было сделать, это:
1) Создать новую базу данных.
2) Выполните скрипт Create для базы данных.
3) Установите настройки, которые я дал им.
4) Измените строку подключения, которая для удобства помещается в специальный файл конфигурации.
5) Используйте веб-интерфейс и сообщите мне, если что-то пойдет не так.
И что-то пошло не так. Эта полная ошибка: Строка 1: неправильный синтаксис рядом с '('. 'Row_number' не является распознанным именем функции. Неверный синтаксис рядом с ключевым словом 'AS'.
Я не использую 'row_number' в моем коде. Я просто использую Linq для запросов. Кроме того, из-за модели сущностей мне даже не нужно сильно беспокоиться о работе с SQL. (хотя я в этом хорош.)
Мое первое предположение заключается в том, что они используют неверную строку подключения. Возможно, они устанавливали это приложение на SQL Server (который все еще должен работать), но они не изменили строку подключения полностью, и теперь мой проект думает, что использует SQL Server 2005. (или что-то еще.) Я прав или это вызвано некоторыми другая неприятная ошибка?
Полная ошибка:
[SqlException (0x80131904): строка 1:
Неверный синтаксис рядом с '('.
'row_number' не распознан
имя функции Неверный синтаксис рядом
ключевое слово «AS».]
System.Data.SqlClient.SqlConnection.OnError (SqlException
исключение, Boolean breakConnection)
+1950890 System.Data.SqlClient.SqlInternalConnection.OnError (SqlException
исключение, 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,
Результат DbAsyncResult) + 162
System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior
cmdBehavior, RunBehavior runBehavior,
Boolean returnStream, метод String)
+32 System.Data.SqlClient.SqlCommand.ExecuteReader (CommandBehavior
поведение, строковый метод) + 141
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader (CommandBehavior
поведение) + 12
System.Data.Common.DbCommand.ExecuteReader (CommandBehavior
поведение) + 10
System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands (EntityCommand
entityCommand, CommandBehavior
поведение) + 387
[EntityCommandExecutionException: An
произошла ошибка при выполнении
определение команды. Увидеть внутренний
исключение для деталей.]
System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands (EntityCommand
entityCommand, CommandBehavior
поведение) + 423
System.Data.Objects.Internal.ObjectQueryExecutionPlan.Execute (ObjectContextcontext, ObjectParameterCollection
значение параметра) + 743
System.Data.Objects.ObjectQuery 1.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
аргументы, создатель qbConstructor)
+1168 System.Web.UI.WebControls.EntityDataSourceView.ExecuteSelect (DataSourceSelectArguments
аргументы) + 102
System.Web.UI.DataSourceView.Select (DataSourceSelectArguments
аргументы,
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
Это приложение ранее было построено на системе SQL Server 2000, а затем оно также работало просто отлично. Тем не менее, тестовая база данных была обновлена до 2005 года, в то время как производственная база данных все еще использует 2000. Я ожидаю, что это не должно вызвать проблем, но я прав в своем предположении?