Veröffentlichen ASP.NET Projekt mit .mdf-Datenbank
Habe ich eine ASP.NET Projekt und verwendet einen lokalen .mdf-Datenbank gespeichert ist, in das App_Data-Ordner. Ich normalerweise veröffentlichen die website lokal auf meinem Desktop nehmen Sie dann alle Dateien und laden Sie Sie auf asp.net server.
nachdem das hochladen erfolgreich , für jemanden Gründen, den Zugriff auf die Datenbank ist nicht möglich.
Ich habe in meinem web.config mit der Verbindungszeichenfolge für die Datenbank
<connectionStrings>
<clear />
<add name="LocalSqlServer" connectionString="Data Source=(LocalDB)\v11.0;AttachDBFilename=|DataDirectory|database.mdf;database=database;Integrated Security=True;User Instance=False;Context Connection=False;" providerName="System.Data.SqlClient"/>
</connectionStrings>
nicht, dass ich gesehen habe paar online-Lösung, die Angaben ändern LocalDB)\v11.0 .\SQLEXPRESS; in der Verbindungszeichenfolge aber das wird nicht funktionieren.
Bitte raten, wie richtig das hochladen der Datenbank mit dem Projekt, und legen Sie den richtigen Zugriff auf es.
wenn ich versuche zu öffnen, die Datenbank-Verbindung, bekomme ich die folgende Fehlermeldung
System.Sicherheit.SecurityException: Fehler bei der Anfrage. System.Sicherheit.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet) bei System.Sicherheit.CodeAccessSecurityEngine.Check(PermissionSet permSet, StackCrawlMark& stackMark) bei System.Sicherheit.PermissionSet.Demand() bei
System.Daten.LocalDBAPI.DemandLocalDBPermissions() bei System.Daten.LocalDBAPI.CreateLocalDBInstance(String-Instanz) bei System.Daten.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean verschlüsseln, Boolean trustServerCert, Boolean integratedSecurity, Boolean withFailover) bei System.Daten.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover) bei System.Daten.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential Berechtigung, TimeoutTimer timeout) bei System.Daten.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential Berechtigung, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance) bei System.Daten.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity Identität, SqlConnectionString connectionOptions, SqlCredential Berechtigung, Objekt providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions) bei System.Daten.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions Optionen, DbConnectionPoolKey poolKey, Objekt poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) bei System.Daten.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnectionOptions Optionen, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) bei System.Daten.ProviderBase.DbConnectionPool.CreateObject(DbConnectionOptions userOptions) bei System.Daten.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnectionOptions userOptions) bei System.Daten.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) bei System.Daten.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource
1 wiederholen, DbConnectionOptions userOptions, DbConnectionInternal& connection) bei System.Daten.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource
1 retry) bei System.Daten.SqlClient.SqlConnection.Open() auf der Datenbank.establishConnection() die Aktion, Die gescheitert ist: Demand Der Typ der ersten Berechtigung, der Fehler war: System.Sicherheit.PermissionSet Die Zone der assembly, die gescheitert ist: MyComputer
- Was meinst du mit "Zugriff auf die Datenbank ist nicht möglich"? Gibt es eine Fehlermeldung?
- die Fehlermeldung ist oben.
- Ich weiß, mit SQL Server benötigen Sie für den Zugriff auf das ASPNET-Benutzerkonto. Können Sie das tun, simarly mit Access? Ich bin nicht so vertraut mit access, aber sobald der Bereitstellung Ihrer Windows-Konto nicht mehr verwendet wird, mit der Integrierten Sicherheit. Es muss das ASPNET-Benutzerkonto.
- hi Matt, nicht verstehen, was Sie sagte !
- Sie haben
Integrated Security=True
in der Verbindungszeichenfolge festgelegt, was bedeutet, dass Ihre web-Anwendung benötigt werden, werden unter demselben Konto ausgeführt wird, die Zugriff auf die Datenbank. Wenn dies ist ein shared host, das ist wahrscheinlich nicht der Fall, da der web-server würde nicht laufen mit Ihren Anmeldedaten an. Sie brauchen, um zu untersuchen, welche Optionen für Datenbanken Ihr host bietet, und nutzen Sie eines Ihrer Angebote. - Prüfen, welche Benutzer der web-Anwendung. (IIS - Eigenschaften des application-pool) Danach stellen Sie sicher, dass dieser Benutzer Schreibrechte für den Ordner/die Datenbank-Datei.
- Ich denke, dass gleiche passiert hier... stackoverflow.com/a/4763950/3156647
Du musst angemeldet sein, um einen Kommentar abzugeben.
warum nicht veröffentlichen Ihrer Datenbank als Skript Statt .mdf ist es Stabiler als mit .mdf !
mithilfe von SQL management studio Bild
SQLExpress ist eine Limited Edition von SQL Server (ist eine Speicherkapazität von 10 GB nach 2008R2, vor R2 ist es 2-4 gb version)
Und da ist es-Server für die Anforderungen an die Sicherheit müssen Sie das Passwort, Benutzer -, Rollen-etc. Neben diesen Anforderungen, für ASP.NET oder generell auf WWW-Lösungen, so viele host-Provider nicht unterstützt auto-befestigen Sie Ihr db-Lösung für Ihre DB-Servern.
Also, wenn Sie wählen, um SQLExpress in Ihrem Web-Projekt,
entweder Sie kopieren können Skripte Erstellen ( create database, Tabellen, Sicherheit, Gespeicherte Prozeduren, Ansichten und viel mehr als Ihr Projekt benötigt ) auf server-Seite und führen Sie diese Skripten auf server-Seite -so etwas wie thealghabban vorgeschlagen-
oder erstellen Sie alle Anforderungen mit der hand von server-Seite (Provider hat die Einstellungen für Seiten, die für diese Implementierungen )
oder bitten Sie Ihren provider, die Sie zulassen, Anfügen oder nicht, zu entscheiden, deinen Weg
wenn Sie noch verwenden möchten SQLExpress hier sind Sie ein Beispiel von WWW-Verbindungszeichenfolge :
Wenn wir vermuten, dass unser Hosting-Provider ist Stackoverflow dann unsere connection-string könnte so sein:
//es wird nachgewiesen, dass stackoverflow.com Anbieter bieten DB-Servern unter publicservers subdomain und unter dieser subdomain MSSQL2008R2 Verzeichnis
Lokalen V11 ist fast eine neue Lösung (wenn ich mich nicht falsch, seit 4. Quartal 2011), die eingebettet ist wie SQLCE (.sdf extensioned Datenbank-Dateien) oder als älterer fashion access db oder andere embedded-Lösungen, aber mit eine große Verbesserung auf seine Speicherkapazität (Zugriff max 2 gb .sdf db-Dateien sind max 1 gb) : Es ist als SQL Server Express => 10 GB.
Arbeiten mit Lokalen DB, Wenn Ihre VS-edition ist nicht +2012 kopieren Sie benötigte Dlls die man unter Ihrem Programme-Verzeichnis oder in dem Sie installiert LocalDB in Ihrem OS. in VS2012 und 2013 Lokal DB installiert mit VS. Aber trotzdem check Ihres Projekts bin-Datei für den lokalen kopiert dlls von Lokalen Express.
Und für die Lokale DB sein eine Laufzeit Voraussetzung, dass Ihre Ziel-framework sollte mindestens v 4.0.2.. prüfen, ob diese auch..
Gefunden ähnliche Frage http://www.codeproject.com/Questions/677651/How-to-publish-mdf-database-file-into-a-asp-net-we
es hat nur eine Lösung,hoffe es hilft.
können Sie versuchen, diese.
oder versuchen, diese
ich hoffe auf Hilfe!!
Ihre aktuelle Datenquelle (LocalDB)\v11.0 ist eine spezielle, isolierte Instanz von SQL Server 2012 mit dem Namen V11.0 seltsamerweise. Die (localDb) ist nicht der gleichen Instanz wie die der Instanz von SqlExpresss, oder jede andere SQL-Server, auf Ihrem Computer. Jedoch können Sie sowohl auf dem gleichen system ohne Konflikte, auch mit unterschiedlichen Versionsnummern des SQL Server.
Bei der Installation von SQLExpress oder normaler SS oder ändern Sie keine Funktionen, Sie haben die Möglichkeit der Aktivierung von LocalDb. Sie können auch laden Sie es als separates Paket von MS.
Ein problem, das auftreten kann, ist ein Versionskonflikt. Ich habe gesehen, Empfehlungen zu verwenden (LocalDb)\MSSQLLocalDB als universal-name anstelle der Nummer der version.
Mit Bezug auf SqlExpress der name-string könnte sein, wie JPLWIN7\SQLEXPRESS, wo JPLWIN7 ist meine eigene windows-Maschine oder
192.168.1.13\sqlexpress " auf einem Rechner in Ihrem lokalen LAN, etc.