2013-04-25 3 views
2

내 ASP.NET MVC 4, EF 5.0 게시 할 때 코드-첫 번째 프로젝트는 테스트 또는 프로덕션 환경 다음과 같은 예외가 발생합니다지정된 저장소 공급자는 구성에서 찾을 수 없습니다

(오류 0175 : 지정된 저장소 공급자를 또한 데이터베이스의 테이블을 구성에서 찾을 수없는, 또는 유효하지 않습니다.)

[MetadataException: Das angegebene Schema ist ungültig. Fehler: 
(0,0) : Fehler 0175: Der angegebene Speicheranbieter kann nicht in der Konfiguration gefunden werden oder ist ungültig.] 
    System.Data.Metadata.Edm.Loader.ThrowOnNonWarningErrors() +57 
    System.Data.Metadata.Edm.StoreItemCollection.Init(IEnumerable`1 xmlReaders, IEnumerable`1 filePaths, Boolean throwOnError, DbProviderManifest& providerManifest, DbProviderFactory& providerFactory, String& providerManifestToken, Memoizer`2& cachedCTypeFunction) +206 
    System.Data.Metadata.Edm.StoreItemCollection..ctor(IEnumerable`1 xmlReaders) +368 
    System.Data.Entity.Migrations.Extensions.XDocumentExtensions.GetStoreItemCollection(XDocument model, DbProviderInfo& providerInfo) +361 
    System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.Diff(XDocument sourceModel, XDocument targetModel, String connectionString) +72 
    System.Data.Entity.Migrations.DbMigrator.IsModelOutOfDate(XDocument model, DbMigration lastMigration) +194 
    System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId) +328 
    System.Data.Entity.MigrateDatabaseToLatestVersion`2.InitializeDatabase(TContext context) +150 
    System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action) +66 

SQL 서버의 데이터베이스가 작성되고, 할 수 있습니다.

로컬 개발 환경에서는 모든 것이 잘 작동합니다. 필자는 테스트/프로덕션과 동일한 MS SQL Express 2008 R2 버전을 로컬에 설치했습니다. 그리고 국부적으로 모두는 작동하고있다.

다른 오류 (대부분 MySQL 데이터베이스 사용)에서 읽은 것처럼 바이너리를 포함하면 오류가 수정되었습니다. 그러나 MSSQL을 포함 할 특별한 바이너리는 없습니다 (필자는 생각합니다). 그리고 데이터베이스/테이블이 생성되므로 SQL 서버에 대한 액세스가 잘되어야합니다. 나는이 문제를 "해결"한

<configuration> 
    <configSections> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    </configSections> 
    <connectionStrings> 
    <add name="NameOfContext" connectionString="Server=ServerName\MSSQL;Database=DatabaseName;User Id=Username;Password=Password" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
    <appSettings> 
    <add key="webpages:Version" value="2.0.0.0" /> 
    <add key="webpages:Enabled" value="false" /> 
    <add key="PreserveLoginUrl" value="true" /> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
    </appSettings> 
... 
    <entityFramework> 
    <contexts> 
     <context type="NameOfContext, Application name"> 
     <databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[NameOfContext, Application Name], [Name_App.Migrations.Configuration, Application Name]], EntityFramework, PublicKeyToken=b77a5c561934e089"> 
      <parameters> 
      <parameter value="NameOfContent" /> 
      </parameters> 
     </databaseInitializer> 
     </context> 
    </contexts> 
    </entityFramework> 
+1

프로 시저를 찾을 수 없다는 메시지가 표시되면 필요한 프로 시저가 없거나 사용자에게 볼 수있는 권한이 없습니다. 이와 같은 상황에서 SQL 프로파일을 사용하여 현재 진행중인 작업을 정확하게 볼 수 있습니다. 종종 그 일은 진행되는 것에 대한 많은 정보를 제공하고 올바른 방향으로 이끌 것입니다. – mroach

+0

좋아, SQL 프로필이란 무엇입니까? – IFY

+0

나는 SQL Profiler를 의미했습니다. SQL Server의 관리 도구와 함께 제공되는 유틸리티입니다. 실행중인 명령을 포함하여 서버의 모든 활동을 볼 수 있습니다. – mroach

답변

0

: 여기

생산/테스트에 대한 내 Web.config의 인 나는 새로운 프로젝트를 생성하고 더 이상 새로운 프로젝트 문제에 모든 코드를 복사되지 나타났다. 아마도 자동 마이그레이션에 문제가있는 것일 수 있습니다. 나는 'update-database -targetmigration : 0'을 실행하고 모든 마이그레이션을 다시 작성합니다.

관련 문제