2017-01-23 4 views
0

저는 ASP.NET, 코드 우선 웹 응용 프로그램을 구축하고 있습니다. 회사 소유의 데이터베이스를 사용하고 있으며이 서버의 한 데이터베이스 내에있는 테이블에 대한 무단 사용 권한을 가지고 있습니다. "데이터베이스 생성"권한이 없다고 생각합니다. 내 웹 앱을 게시하는 데 문제가 있습니다. 내가 로컬 모든 것을 실행할 수 있지만 내가 회사의 서버에 코드를 게시 할 때 나는 같은 오류를 얻을 :이 오류는 나를 내 연결 문자열에 문제를 생각하게왜 asp.net 웹 응용 프로그램에 대한 데이터베이스 만들기 권한이 필요합니까?

Format of the initialization string does not conform to specification starting at index 0. 
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.ArgumentException: Format of the initialization string does not conform to specification starting at index 0. 

Source Error: 
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. 

Stack Trace: 
[ArgumentException: Format of the initialization string does not conform to specification starting at index 0.] 
    System.Data.Common.DbConnectionOptions.GetKeyValuePair(String connectionString, Int32 currentPosition, StringBuilder buffer, Boolean useOdbcRules, String& keyname, String& keyvalue) +1742 
    System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable parsetable, String connectionString, Boolean buildChain, Hashtable synonyms, Boolean firstKey) +191 
    System.Data.Common.DbConnectionOptions..ctor(String connectionString, Hashtable synonyms, Boolean useOdbcRules) +136 
    System.Data.SqlClient.SqlConnectionString..ctor(String connectionString) +75 
    System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions(String connectionString, DbConnectionOptions previous) +35 
    System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup(DbConnectionPoolKey key, DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions& userConnectionOptions) +241 
    System.Data.SqlClient.SqlConnection.ConnectionString_Set(DbConnectionPoolKey key) +78 
    System.Data.SqlClient.SqlConnection.set_ConnectionString(String value) +116 
    System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch(TTarget target, Action`2 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed) +104 
    System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.SetConnectionString(DbConnection connection, DbConnectionPropertyInterceptionContext`1 interceptionContext) +434 
    System.Data.Entity.Internal.LazyInternalConnection.TryInitializeFromAppConfig(String name, AppConfig config) +39 
    System.Data.Entity.Internal.LazyInternalConnection.Initialize() +160 
    System.Data.Entity.Internal.LazyInternalConnection.get_Connection() +16 
    [Project].DBContext.Context..ctor() in C:\Users\[UserName]\Documents\[FilePath]\[Project]\DBContext\Context.cs:20 
    [Project].Data_Manager.DataManager..ctor() in C:\Users\[UserName]\Documents\[FilePath]\[Project]\Data_Manager\DataManager.cs:15 
    [Project].Controllers.HeaderController..ctor() in C:\Users\[UserName]\Documents\[FilePath]\[Project]\Controllers\HeaderController.cs:12 

합니다. 또한,

public Context() : base("[server_Name].[full_company_server_file_path]") 
{} 

내가 솔루션을 실행할 때 로컬 :

public Context() : base("[server_Name].[database_name]") 
{} 

에 :

An exception of type 'System.Data.SqlClient.SqlException' occurred in EntityFramework.dll but was not handled in user code 

Additional information: CREATE DATABASE permission denied in database 'master'. 

내가 최근에서 내 컨텍스트 생성자를 변경 : 단위 테스트를 사용하는 경우, 나는 오류 'CREATE DATABASE permission denied in database 'master''오류가 발생했습니다. 기록을 위해

, 내 연결 문자열은 다음과 같습니다

<connectionStrings> 
     <clear /> 
    <add name="[server_Name].[database_name]" providerName="System.Data.SqlClient" connectionString="Data Source=[server_Name].[full_company_server_file_path];Initial Catalog=[database_name];Persist Security Info=True;User ID=userid;Password=password;MultipleActiveResultSets=True;Application Name=EntityFramework" /> 
< /connectionStrings> 

내 질문은 :

가 왜이 모든 일을하기 위해 데이터베이스 만들기 권한이 필요합니까? 그런 경우가 아니라면 왜이 오류가 계속 발생합니까? (아니 어디에 내 코드에서 DB를 만들거나해야합니까 /해야합니까).

둘째, 내 연결 문자열을 수정하는 것과 관련된 제안 사항은 무엇입니까? 이 connectionString 데이터베이스에서 가져 -> 속성 -> 연결 문자열 (그래서 내가 옳은 느낌).

모든 도움말/설명/설명 주셔서 감사합니다.

사용 :

  • ASP.NET/엔티티 프레임 워크/C#
  • Visual Studio를 많이 얻고 제외하고 여기서 할 수있는 일은이 없습니다 2015
  • SQL Server Management Studio를 2014
+0

해당 서버에 데이터베이스를 수동으로 만들 수 있습니까? SQL Management Studio의 SQL Server에 직접 제공된 자격 증명으로 로그인하면됩니다. – Amir

+0

내가 할 수있을 지 확신 할 수는 없지만 가정하지는 않습니다. 그것은 아주 큰 회사이고 나는 그런 것들을 망쳐 놓는 것이 아닙니다. – swallis1

+0

테스트 데이터베이스를 만들고 나중에 삭제하고 권한이 있는지 여부를 확인하는 것이 좋습니다. – Amir

답변

0

출판의 과정에서 호기심 사람에 대해서는 해결

(기본 비주얼 스튜디오 조치) 연결 문자열에 왜곡되고 있었다 :

connectionString="$(ReplacableToken_[server_name].[database_name]-Web.config Connection String_0)" 

나는 내 진짜에 게시 된 연결 문자열을 편집 연결 문자열 및 문제가 해결되었습니다.

0

큰 조직에서 일어날 가능성이 매우 적은 db 서버에서 이러한 작업을 수행하는 응용 프로그램에 대한 권한.

가장 좋은 해결책은 웹 응용 프로그램 게시 프로세스의 일부로 데이터베이스 만들기 작업을 포함하지 않는 것입니다.

확실히 조직의 정책에 따라 응용 프로그램을 master db 권한으로 실행할 수 없습니다.

DB 서버와 데이터베이스를 관리하는 DBA에게 데이터베이스 생성 작업을 맡겨 놓으십시오. 이러한 작업을 수행하는 데 필요한 액세스 권한이 필요합니다. 이들은 데이터베이스를 작성하고 스크립트를 실행하여 데이터베이스를 응용 프로그램에서 사용할 준비가되게합니다.

테이블, 뷰, 저장된 procs, 함수, 키, 인덱스 등을 포함하는 전체 데이터베이스 구조를 생성하고 티켓이나 RFC를 올리거나 대상에서 적절한 구조로 생성 된 데이터베이스를 얻는 데 필요한 프로세스를 따르는 스크립트를 만듭니다. 섬기는 사람.데이터베이스 생성 및 업데이트에 대한 걱정없이 응용 프로그램이 데이터를 처리하도록하십시오.

이것이 프로덕션 환경의 응용 프로그램이 작동하는 방식이며 프로세스가 구현되고 따르는 방법은 매우 드문 경우입니다.

+0

코드에 데이터베이스를 만들려고하지 않습니다. 나는 서버에서 할 수있는 테이블을 만든다. 테이블을 만들고, 저장 프로 시저를 만들고, 테이블을 업데이트하고, 테이블을 삭제할 수 있습니다. SQL Server Management Studio 및 코드 내에서이를 성공적으로 수행했습니다. 게시 된 dev 환경에서 db에 액세스하려고하면 문제가 발생합니다. select 문만 실행해도 코드가 손상됩니다. – swallis1

+0

로컬 db 서버와 엔터프라이즈 db 서버가 동일하지 않습니다. 오류는 "데이터베이스 생성 권한이 거부되었습니다."라고 표시합니다. 이것은 EF가 dev 서버에 존재하지 않기 때문에 먼저 데이터베이스를 생성하려고한다는 것을 의미합니다. 따라서 먼저 DBA가 데이터베이스를 생성하고 연결 문자열의 일부인 사용자에 대한 스키마 소유자 권한을 요청해야합니다. –

+0

그러나 배치는 dev 환경에서만 작동합니다. 스테이징 및 프로덕션 환경에서 DB 소유자 역할은 전혀 허용되지 않습니다. 귀하의 응용 프로그램은 데이터 선택, 업데이트, 삭제, 저장 프로 시저 실행 또는 응용 프로그램을 제대로 수행하는 데 필요한 다른 작업 만 수행 할 수 있습니다. 스테이지 및 프로드 환경에서는 스키마 변경 관리 응용 프로그램이 전혀 허용되지 않습니다. –

관련 문제