web-dev-qa-db-fra.com

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

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?

74
Jonathan Kittell

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.

117
Bret

Courir ceci:

sqllocaldb crée "v12.0"

De cmd Prompt résolu ce problème pour moi ...

36
Alex

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>
31
Matteo

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

  • Vous n'avez pas le services en cours d'exécution
  • Vous n'avez pas le ports firelwallici configuré
  • Votre installation a et issue/corrupt (les étapes ci-dessous aident à vous donner un bon départ propre)
  • Vous n'avez pas renommez le V11 ou 12 en mssqllocaldb renommez la chaîne conn de 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

  1. cmd> Sqllocaldb.exe i
  2. cmd> Sqllocaldb.exe s "whicheverVersionYouWantFromListBefore" si cette étape échoue, vous pouvez supprimer avec l'option d cmd> Sqllocaldb.exe d "someDb"
  3. cmd> Sqllocaldb.exe c "createSomeNewDbIfyouWantDb"
  4. cmd> Sqllocaldb.exe start "createSomeNewDbIfyouWantDb"

SqlLOCALDb_edited.png

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
19
transformer

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.
8
Musab

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

8

J'ai rencontré le même problème. Mon correctif changeait <parameter value="v12.0" /> en <parameter value="mssqllocaldb" /> dans le fichier "app.config".

3
Kos

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

3
130nk3r5

La solution finale à ce problème est la suivante:

  1. Commencez par apporter des modifications au fichier de configuration applicationHost. remplace la chaîne ci-dessous setProfileEnvironment = "false" TO setProfileEnvironment = "true"

  2. Dans la chaîne de connexion à la base de données, ajoutez l'attribut ci-dessous: Sécurité intégrée = SSPI

3
Dalip Choudhary

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.

2
Michael Staples

Je résous le problème ci-dessus Application des étapes ci-dessous

 enter image description here 

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" />
1
Sagar Shinde