Ich baue eine ASP.NET, Code-First Web App. Ich benutze eine firmeneigene Datenbank und habe Crud-Berechtigungen für Tabellen innerhalb einer Datenbank auf diesem Server. Ich glaube nicht, dass ich "Create Database" -Berechtigungen habe. Ich stoße auf Probleme, meine Web-App zu veröffentlichen. Ich kann alles lokal laufen, aber wenn ich den Code auf dem Server, den ich wie bekommen Fehler Unternehmen veröffentlichen:Warum muss ich Datenbankberechtigungen für die asp.net Web App erstellen?
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
Dieser Fehler macht ich glaube, ich habe ein Problem mit meiner Verbindungszeichenfolge. Wenn Unit Testing verwenden, erhalte ich die Fehlermeldung:
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'.
ich meinen Kontext Konstruktor vor kurzem von geändert:
public Context() : base("[server_Name].[database_name]")
{}
zu:
public Context() : base("[server_Name].[full_company_server_file_path]")
{}
Und wenn ich die Lösung lokal lief, auch habe den Fehler "CREATE DATABASE permission denied in database 'master'
" bekommen.
Für die Aufzeichnung meine Verbindungszeichenfolge ist:
<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>
Meine Frage ist:
Warum benötige ich Datenbankberechtigungen, um das alles zu arbeiten, erstellen? Und wenn das nicht der Fall ist, warum bekomme ich diesen Fehler? (Nein, wo in meinem Code sage ich create DB, noch sollte/kann ich).
Zweitens, irgendwelche Vorschläge zur Behebung meiner Verbindungszeichenfolge? Ich habe diesen connectionString aus der Datenbank -> Eigenschaften -> Connection String (so dass ich das Gefühl habe, dass es korrekt ist).
Danke für alle Hilfe/Tipps/Erklärungen.
Verwendung:
- ASP.NET/Entity Framework/C#
- Visual Studio 2015
- SQL Server Management Studio 2014
Können Sie die Datenbank manuell auf diesem Server erstellen? Ich meine, indem ich mich mit dem angegebenen Berechtigungsnachweis direkt an den SQL Server im SQL Management Studio anmelde. – Amir
Ich bin mir nicht sicher, ob ich das kann, aber ich denke nicht. Es ist ein sehr großes Unternehmen, und ich denke nicht, dass man sich mit solchen Dingen herumschlagen muss. – swallis1
Es wäre besser, wenn Sie eine Testdatenbank erstellen und später löschen könnten und herausfinden würden, ob Sie die Berechtigung haben oder nicht. – Amir