System.Data.SqlClient.SqlException: неверное имя объекта 'dbo.Projects' - PullRequest
22 голосов
/ 31 августа 2009

Мое приложение MVC возвращает SqlExceptions при попытке доступа к любой таблице в моей базе данных.

Сведения об исключении: System.Data.SqlClient.SqlException: Неверное имя объекта 'dbo.Projects'.

Мое приложение использует linq для слоя данных.

Если я использую старую dll, она работает нормально (так что, похоже, это не проблема с БД), только это последнее dll приложения, которое я загрузил.

подробности

[SqlException (0x80131904): недопустимое имя объекта 'dbo.Projects'.]
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, логическое returnStream, логическое асинхронный) + 954
System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, логическое returnStream, строка метод, результат DbAsyncResult) + 162
System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, логическое returnStream, строка метод) + 32
System.Data.SqlClient.SqlCommand.ExecuteReader (CommandBehavior поведение, строковый метод) + 141
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader (CommandBehavior поведение) +12 System.Data.Common.DbCommand.ExecuteReader () + 12
System.Data.Linq.SqlClient.SqlProvider.Execute (запрос выражения, QueryInfo queryInfo, IObjectReaderFactory factory, Object [] parentArgs, Object [] userArgs, ICompiledSubQuery [] subQueries, Object lastResult) + 975
System.Data.Linq.SqlClient.SqlProvider.ExecuteAll (запрос выражения, QueryInfo [] queryInfos, фабрика IObjectReaderFactory, Object [] userArguments, ICompiledSubQuery [] subQueries) + 113
System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute (Expression запрос) + 344
System.Data.Linq.DataQuery 1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() +35 System.Linq.Buffer 1..ctor (IEnumerable 1 source) +247 System.Linq.<GetEnumerator>d__0.MoveNext() +108<br> System.Linq.Buffer 1..ctor (IEnumerable 1 source) +259<br> System.Linq.<GetEnumerator>d__0.MoveNext() +108<br> System.Collections.Generic.List 1..ctor (IEnumerable 1 collection) +7665172 System.Linq.Enumerable.ToList(IEnumerable 1 источник) +61 Mezza_crm.Controllers.ProjectsController.GetProjectList ( NameValueCollection form) в C: \ mezza_crm \ mezza_crm \ Controllers \ ProjectsController.cs: 164 Mezza_crm.Controllers.ProjectsController.List () в C: \ mezza_crm \ mezza_crm \ Контроллеры \ ProjectsController.cs: 53
lambda_method (ExecutionScope, ControllerBase, Object []) + 39
System.Web.Mvc.ActionMethodDispatcher.Execute (ControllerBase контроллер, параметры объекта []) + 17
System.Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext controllerContext, IDictionary 2 parameters) +178<br> System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary 2 параметры) + 24
System.Web.Mvc. <> C__DisplayClassa.b__7 () +52 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter (IActionFilter фильтр, ActionExecutingContext preContext, фильтры Func 1 continuation) +254<br> System.Web.Mvc.<>c__DisplayClassc.<InvokeActionMethodWithFilters>b__9() +19 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList 1, ActionDescriptor actionDescriptor, Параметры IDictionary`2) + 192
System.Web.Mvc.ControllerActionInvoker.InvokeAction (ControllerContext controllerContext, String actionName) + 399
System.Web.Mvc.Controller.ExecuteCore () + 126
System.Web.Mvc.ControllerBase.Execute (RequestContext requestContext) +27 System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute (RequestContext requestContext) + 7
System.Web.Mvc.MvcHandler.ProcessRequest (HttpContextBase httpContext) +151 System.Web.Mvc.MvcHandler.ProcessRequest (HttpContext httpContext) + 57
System.Web.Mvc.MvcHandler.System.Web.IHttpHandler.ProcessRequest (HttpContext httpContext) + 7
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () +181 System.Web.HttpApplication.ExecuteStep (шаг IExecutionStep, логическое и завершено синхронно) + 75

Ответы [ 9 ]

49 голосов
/ 31 августа 2009

Проверьте параметр Начальный каталог в строке подключения. Возможно, ваш код ищет неправильную базу данных для объекта Projects.

Например, если у вас настроена синхронизация базы данных таким образом, что передается только подмножество таблиц master-database, вы можете столкнуться с этой ошибкой, если Linq to SQL ожидает, что все таблицы в базе данных будут указаны Строка подключения.

3 голосов
/ 31 августа 2009

У вас есть доступ к SQL Server, который вы запрашиваете? Можете ли вы увидеть таблицу или представление с именем dbo.Projects там? Если нет, то это было бы хорошим местом для поиска.

Linq to SQL создает карту объектов между базой данных и приложением. Если ваша новая DLL, которую вы развертываете, больше не совпадает с базой данных, то вы ожидаете получить такую ​​ошибку.

Возможно, у вас есть разные схемы баз данных между вашей средой разработки и средой развертывания?

2 голосов
/ 07 мая 2018

Это может быть связано с неправильным именем таблицы, из которой вы выбираете данные. Проверьте имя таблицы, которую вы упомянули в файле asmx, и таблицу, созданную в базе данных.

1 голос
/ 10 декабря 2015

Если вы находитесь на той стадии разработки, когда у вас есть метод внутри вашего контекстного класса, который создает тестовые данные для вас, не вызывайте его в конструкторе, он попытается создать эти тестовые записи, пока у вас нет таблиц еще. Просто делюсь своей ошибкой ...

1 голос
/ 12 октября 2012

Причиной этой проблемы может быть настройка свойства базы данных (Sql2008R2 с .NET4).

  • Проблема воспроизводится по желанию при изменении значения COLLATION базы данных.

Для отображения COLLLATION используйте Sql Server Mgmt Studio.

  • Щелкните правой кнопкой мыши базу данных и выберите Свойства -> Общие, затем найдите под Обслуживание для значения COLLATION

Чтобы изменить COLLATION, (по-прежнему) используйте Sql Server Mgmt Studio.

  • Щелкните правой кнопкой мыши базу данных и выберите Свойства -> Параметры. Оттуда вы можете изменить значение COLLATION
0 голосов
/ 03 марта 2018

Проблема была в том, что я создал базу данных в LocalDb.
Если это так, то вы должны написать так, как показано ниже:

    "SELECT * FROM <DatabaseName>.[dbo].[Projects]"

Замените на имя вашей базы данных.
Вы также можете сбросить "[]"

0 голосов
/ 03 ноября 2014

У меня была такая же ошибка. Причиной было то, что я создал таблицу с неверной схемой (это должно быть [dbo]). Я сделал следующие шаги:

  1. Я удалил все таблицы, у которых нет префикса "dbo".

  2. Я создал и запустил этот запрос:

CREATE TABLE dbo.Cars(IDCar int PRIMARY KEY NOT NULL,Name varchar(25) NOT NULL,    
CarDescription text NULL)
GO
0 голосов
/ 26 августа 2013

Удалите таблицу _MigrationHistory в (yourdatabseName> Tables> System Tables), если она уже есть в вашей базе данных, а затем выполните команду ниже в консоли диспетчера пакетов

PM> update-database
0 голосов
/ 30 августа 2010

Если вы используете две базы данных, вы можете добавить еще одну DataClasses.dbml и отобразить в нее вторую базу данных.
Это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...