J'essaie de créer une application Web ASP.NET MVC 5 contenant un fichier MyDatabase.mdf
dans le dossier App_Data
. SQL Server 2014 Express est installé avec une instance LocalDb
. Je peux modifier les tables de la base de données à l'aide de l'Explorateur de serveurs. Cependant, lorsque je débogue l'application et que je vais sur une page où la base de données est nécessaire, l'erreur suivante s'affiche.
Une erreur liée au réseau ou à une instance spécifique s'est produite lors de l'établissement d'une connexion à SQL Server. Le serveur est introuvable ou inaccessible. Vérifiez que le nom de l'instance est correct et que SQL Server est configuré pour autoriser les connexions à distance. (fournisseur: interfaces réseau SQL, erreur: 50 - Une erreur d'exécution de la base de données locale s'est produite. Impossible de créer une instance automatique. Consultez le journal des événements de l'application Windows pour plus de détails sur l'erreur.
J'ai donc regardé dans l'observateur d'événements sous Application
et n'ai vu qu'un avertissement encore et encore.
Le répertoire spécifié pour la mise en cache du contenu compressé C:\Utilisateurs\Utilisateur1\AppData\Local\Temp\iisexpress\Fichiers compressés temporaires IIS\Clr4IntegratedAppPool n'est pas valide. La compression statique est en cours de désactivation.
Alors j'ai essayé de redémarrer le serveur, toujours pas. Même erreur 50 que précédemment.
J'ai créé une classe sous Models
où j'ai une classe appelée Post
.
namespace MyApplication.Models
{
public class Post
{
public int Id { get; set; }
public string Title { get; set; }
public string Content { get; set; }
}
public class MyDatabase : DbContext
{
public DbSet<Post> Posts { get; set; }
}
}
J'ai également une configuration Controller
pour répertorier les publications de MyDatabase
.
namespace MyApplication.Controllers
{
public class PostsController : Controller
{
private MyDatabase db = new MyDatabase();
// GET: Posts
public ActionResult Index()
{
return View(db.Posts.ToList());
}
}
Dans mon fichier web.config
, la chaîne de connexion ressemble à ceci ...
<connectionStrings>
<add name="DefaultConnection"
connectionString="Data Source=(LocalDB)\v12.0;AttachDbFilename=|DataDirectory|\MyDatabase.mdf;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
J'ai essayé la suggestion postée ici mais cela n'a pas fonctionné. Aussi essayé this .
Je remarque également que l'instance MyDatabase est déconnectée après le démarrage de l'application. Si j'actualise la base de données à l'aide de l'Explorateur de serveurs dans Visual Studio, je peux afficher les tables.
Comment puis-je me connecter à la base de données et l'éditer dans Visual Studio 2013, mais lorsque je débogue l'application, elle ne peut pas se connecter à la base de données?
Dernières modifications apportées à LocalDB: s'applique à SQL 2014 ; jetez un coup d'œil sur cet article et essayez d'utiliser (localdb)\mssqllocaldb
comme nom de serveur pour vous connecter à l'instance automatique LocalDB, par exemple:
<connectionStrings>
<add name="ProductsContext" connectionString="Data Source=(localdb)\mssqllocaldb;
...
L'article mentionne également l'utilisation de SSMS 2012 pour se connecter à LocalDB 2014. Ce qui m'amène à penser que plusieurs versions de SQL peuvent être installées - ce qui m'amène à préciser this SO answer qui suggère de changer le nom par défaut de votre "instance" LocalDB en éviter d'autres problèmes de non-concordance de version qui pourraient survenir à l'avenir; mentionné non pas comme source de problème, mais pour sensibiliser le public aux conflits potentiels que plusieurs versions de SQL installées sur une seule machine de développement pourraient conduire à ... et à quelque chose dont il faut prendre l'habitude pour en éviter certaines.
Une autre chose à noter - si votre instance est dans un état inutilisable à cause du bricolage pour tenter de résoudre ce problème, il peut être intéressant de recommencer - désinstaller, réinstaller - puis essayer d'utiliser la valeur mssqllocaldb
au lieu de v12.0
et voyez si cela corrige votre problème.
Courir ceci:
sqllocaldb crée "v12.0"
De cmd Prompt résolu ce problème pour moi ...
J'ai l'habitude de corriger cette erreur après cet article de blog msdn tilisation de LocalDB avec Full IIS
Cela nécessite la modification du fichier applicationHost.config, qui se trouve généralement dans C:\Windows\System32\inetsrv\config. En suivant les instructions de la base de connaissances 2547655, nous devons activer les deux indicateurs pour le pool d’applications ASP.NET v4.0, comme suit:
<add name="ASP.NET v4.0" autoStart="true" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated">
<processModel identityType="ApplicationPoolIdentity" loadUserProfile="true" setProfileEnvironment="true" />
</add>
Pour commencer - 4 problèmes peuvent être à l'origine des erreurs de connectivité communes LocalDb SqlExpress Sql Server SQL Network Interfaces, error: 50 - Local Database Runtime error occurred
, avant de commencer vous devez renommer la v11 ou la v12 en (localdb)\mssqllocaldb
v12.0
en MSSQLLocalDB
de la même manière-> <connectionStrings> <add name="ProductsContext" connectionString="Data Source=(localdb)\mssqllocaldb; ...
J'ai trouvé que le plus simple est de faire ce qui suit - j'ai joint les photos et les étapes à suivre pour obtenir de l'aide.
Tout d’abord, vérifiez quelle instance vous avez installée. Pour ce faire, vous devez vérifier le registre et en exécutant cmd
cmd> Sqllocaldb.exe i
cmd> Sqllocaldb.exe s "whicheverVersionYouWantFromListBefore"
si cette étape échoue, vous pouvez supprimer avec l'option d
cmd> Sqllocaldb.exe d "someDb"cmd> Sqllocaldb.exe c "createSomeNewDbIfyouWantDb"
cmd> Sqllocaldb.exe start "createSomeNewDbIfyouWantDb"
Edit 1: Chemin d'accès au registre pour toutes les versions Format générique permettant de suivre le registre
// SQL SERVER RECENT VERSIONS
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\(instance-name)
// OLD SQL SERVER
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQLServer
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer
// SQL SERVER 6.0 and above.
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MSDTC
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLExecutive
// SQL SERVER 7.0 and above
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLServerAgent
HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server 7
HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServ65
Une instance peut être corrompue ou ne pas être mise à jour correctement
Essayez ces commandes =>
C:\>sqllocaldb stop MSSQLLocalDB<br>
LocalDB instance "MSSQLLocalDB" stopped.
C:\>sqllocaldb delete MSSQLLocalDB<br>
LocalDB instance "MSSQLLocalDB" deleted.
C:\>sqllocaldb create MSSQLLocalDB<br>
LocalDB instance "MSSQLLocalDB" created with version 13.0.1601.5.
C:\>sqllocaldb start MSSQLLocalDB<br>
LocalDB instance "MSSQLLocalDB" started.
peut-être cette erreur est-elle due à cette version
de Sql Server _is not installed
_
_connectionString="Data Source=(LocalDB)\v12.0;....
_
et vous n'avez pas à l'installer
le correctif le plus rapide consiste à le changer pour toute version installée installée
dans mon cas, je le change de v12.0
à MSSQLLocalDB
J'ai rencontré le même problème. Mon correctif changeait <parameter value="v12.0" />
en <parameter value="mssqllocaldb" />
dans le fichier "app.config".
Veuillez noter ce que Tyler a dit
Notez que si vous souhaitez modifier ce fichier, veillez à utiliser un éditeur de texte 64 bits tel que le bloc-notes. Si vous utilisez une version 32 bits telle que Notepad ++, elle modifiera automatiquement une copie différente du fichier dans SysWOW64. Des heures de ma vie je ne reviendrai pas
La solution finale à ce problème est la suivante:
Commencez par apporter des modifications au fichier de configuration applicationHost. remplace la chaîne ci-dessous setProfileEnvironment = "false" TO setProfileEnvironment = "true"
Dans la chaîne de connexion à la base de données, ajoutez l'attribut ci-dessous: Sécurité intégrée = SSPI
Dans mon cas, nous avions plusieurs projets dans une solution et avions sélectionné un projet de démarrage différent de celui de la console du gestionnaire de packages lors de l'exécution de la commande "Update-Database" avec Migration Code-First. Assurez-vous de sélectionner le bon projet de démarrage.
Je résous le problème ci-dessus Application des étapes ci-dessous
Et après avoir apporté ces modifications, effectuez les modifications suivantes dans votre web.config
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v12.0;AttachDbFilename=|DataDirectory|\aspnet-Real-Time-Commenting-20170927122714.mdf;Initial Catalog=aspnet-Real-Time-Commenting-20170927122714;Integrated Security=true" providerName="System.Data.SqlClient" />