2009-08-31 3 views
19

내 데이터베이스의 테이블에 액세스하려고하면 내 MVC 앱에서 SqlExceptions를 반환합니다.System.Data.SqlClient.SqlException : 잘못된 개체 이름 'dbo.Projects'

예외 정보 : System.Data.SqlClient.SqlException : 잘못된 개체 이름 'dbo.Projects'.

내 응용 프로그램 데이터 레이어의 linq.

이전 dll을 사용하면 제대로 작동하므로 (DB에 문제가있는 것 같지 않음) 업로드 한 최신 앱 DLL 만 있습니다.

상세

[SQLEXCEPTION (0x80131904) 잘못된 개체 이름 'dbo.Projects'.]
System.Data.SqlClient.SqlConnection.OnError (SQLEXCEPTION 예외 부울 breakConnection) 1,950,890
System.Data.SqlClient.SqlInternalConnection.OnError (SQLEXCEPTION 예외 부울 breakConnection) 4,846,875
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObject,536,913,632 10 stateObj) 194 System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior, SqlCommand를 cmdHandler, SqlDataReader의 데이터 스트림, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) 2,392
System.Data.SqlClient.SqlDataReader.ConsumeMetaData() +33
System.Data.SqlClient.SqlDataReader.get_MetaData() 83
System.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader 개체 DS, runBehavior runBehavior, 문자열 resetOptionsString) 297
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, 부울 returnStream, 부울백45경1천5백15조5백36억9천1백36만3천2백10 비동기) 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 공장), [] userArgs, ICompiledSubQuery [] 하위 쿼리 객체, [] parentArgs 객체 LASTRESULT 객체 975
System.Data.Linq.SqlClient.SqlProvider.ExecuteAll 113
System.Data.Linq.SqlClient.SqlProvider (표현 쿼리, QueryInfo [] queryInfos, IObjectReaderFactory 공장, [] userArguments, ICompiledSubQuery [] 하위 쿼리 개체). System.Data.Linq.Provider.IProvider.Execute (식 쿼리) +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
System.Linq.Buffer
1.ctor (IEnumerable 1 source) +259
System.Linq.<GetEnumerator>d__0.MoveNext() +108
System.Collections.Generic.List
1 ..ctor에 (1 소스는 IEnumerable 1 collection) +7665172 System.Linq.Enumerable.ToList(IEnumerable) +61 Mezza_crm.Controllers.ProjectsController.GetProjectList (NameValueCollection은 형태)의 C : \ mezza_crm \ mezza_crm 컨트롤러 ProjectsController.cs를 \ : \ 164 Mezza_crm.Controllers.ProjectsController.List()를 C에 \ mezza_crm \ mezza_crm 컨트롤러 ProjectsController.cs \ \ : 53
lambda_method를 +17
([] 파라미터 객체 ControllerBase 제어기) +39
System.Web.Mvc.ActionMethodDispatcher.Execute을 (ExecutionScope는 ControllerBase는 개체 []) System.Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext 컨트롤러 컨텍스트, IDictionary 매개 변수) +24
System.Web.Mvc. <> c__DisplayClassa.b__7() +52 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter (IActionFilter 필터 ActionExecutingContext preContext, Func을 1 continuation) +254
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, 문자열 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 012 3, 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 (IExecutionStep 단계, 부울 & completedSynchronously) +75

답변

3

쿼리하는 SQL Server에 대한 액세스 권한이 있습니까? dbo.Projects라는 테이블 또는 뷰를 볼 수 있습니까? 그렇지 않다면, 보는 것이 좋습니다.

Linq to SQL은 데이터베이스와 응용 프로그램간에 객체 맵을 생성합니다. 배포하려는 새 DLL이 데이터베이스와 더 이상 일치하지 않으면 얻을 수있는 일종의 오류입니다.

개발 환경과 전개 환경간에 서로 다른 데이터베이스 스키마가 있습니까?

+0

예 dbo.Projects가 존재하며 마지막 릴리스 이후 변경되지 않았습니다. 다른 테이블을 약간 변경하고 두 개의 테이블을 추가했습니다. 하지만 서버의 DB에 변경 사항을 미러링했습니다. 일반적으로 dev에 변경 사항을 적용하고 서버에서 변경 사항을 미러링하는 것을 잊어 버린 경우 이와 같은 메시지가 표시됩니다. System.Data.SqlClient.SqlException : 'Actual'열 이름이 잘못되었습니다. 하지만 일단 테이블을 수정하면 일반적으로 작동합니다. 신속한 답변을 보내 주셔서 감사합니다. –

42

연결 문자열에서 초기 카탈로그 매개 변수를 확인하십시오. 코드가 Projects 개체의 잘못된 데이터베이스를 찾고있을 수 있습니다.

예를 들어 마스터 데이터베이스 테이블의 하위 집합 만 전송되는 방식으로 데이터베이스 동기화 설정을 사용하는 경우 Linq to SQL에서 모든 테이블이 가리키는 데이터베이스에 있다고 가정 할 경우이 오류가 발생할 수 있습니다 연결 문자열에 의해.

+1

연결 문자열이 좋습니다. Web.Config는 지난 릴리스 이후 변경되지 않았으며 마지막 릴리스가 정상적으로 작동했습니다. –

+10

+1 이것이 내 문제였습니다. 오! – fearofawhackplanet

+0

Azure의 지시에 따라 Azure 포털에서 연결 문자열을 복사하는 것은 잘못되었습니다. 내가 옳은 모델인지 아니면 내가 모델 한 모델인지는 https://azure.microsoft.com/ko-kor/documentation/articles/sql-database-dotnet-how-to-use를 참조하십시오. 이것은 올바른 방향으로 나를 가리키는 데 도움이되었습니다. 감사합니다. – Mark

0

두 데이터베이스를 사용하는 경우 DataClasses.dbml을 추가하고 두 번째 데이터베이스를이 데이터베이스에 매핑 할 수 있습니다.
작동합니다.

0

이 문제의 원인은 데이터베이스 (.NET4를 사용하는 Sql2008R2)의 속성 설정 일 수 있습니다.

  • 데이터베이스의 COLLATION 값을 변경할 때 문제가 재현 될 수 있습니다.

COLLLATION을 표시하려면 SQL Server Mgmt Studio를 사용하십시오. 은 SQL Server MGMT Studio를 사용하여 다음 (여전히), 데이터 정렬을 변경하려면 정렬 값

에 대한 에서 유지 관리를 보면,> 일반 -

  • 데이터베이스를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.

    • 데이터베이스를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다 - 당신이 이미있는 경우> 옵션, 거기에서, 당신은 정렬 값
+1

하나로 변경 하시겠습니까? – Ciwan

+0

올바른 콜레 션이란 무엇입니까? – toha

0

(yourdatabseName> 테이블> 시스템 테이블)에 _MigrationHistory 테이블 삭제를 변경할 수 있습니다 귀하의 데이터베이스 및 다음 패키지 관리자 콘솔에서 아래의 명령을 실행하십시오.

PM> update-database 
0

나는 동일한 오류가 발생했습니다. 원인은 틀린 스키마 (나는 [dbo]이어야한다)를 가진 테이블을 만들었다는 것이었다. 다음 단계를 수행했습니다.

  1. 접두사 "dbo"가없는 모든 테이블을 삭제했습니다.

  2. 내가 만들고이 쿼리를 실행합니다

당신을 위해 testdata로를 만들고 당신이 당신의 컨텍스트 클래스 내부에 방법이 개발의 단계에있는 경우
CREATE TABLE dbo.Cars(IDCar int PRIMARY KEY NOT NULL,Name varchar(25) NOT NULL,  
CarDescription text NULL) 
GO 
1

이 그것을 호출하지 않습니다를 생성자에서 아직 테이블이없는 동안 테스트 레코드를 만들려고합니다. 내 실수를 공유하는 것 ...

0

내 LocalDb에 데이터베이스를 만들었 기 때문에 내가 가진 문제가있었습니다.
그건 당신이 작성해야 다음 경우의 경우는 다음과 같습니다

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

은 데이터베이스 이름으로 바꿉니다.
"[]"을 삭제할 수도 있습니다

관련 문제