Quelle est la chaîne de connexion pour localdb pour la version 11?

j'essaie de faire la première visite du code du cadre de l'entité ( http://blogs.msdn.com/b/adonet/archive/2011/09/28/ef-4-2-code-first-walkthrough.aspx ).

j'ai le dernier SQL Server Express et quand je vérifie mes versions disponibles via la ligne de commande ( sqllocaldb info ): je vois localdbApp1 et v11.0. Quand j'essaie d'exécuter la visite avec quelques modifications mineures, j'obtiens une erreur can't connect.

mon application.config ressemble à ceci:

<parameter value="Server=(LocalDB)v11.0; Integrated Security=True; MultipleActiveResultSets=True" />

j'ai écrit un test de connexion simple comme ci - dessous et le code renvoie la même erreur de connexion SQL ((provider: Named Pipes Provider, error: 40-Could not open a connection to SQL Server)).

new System.Data.SqlClient.SqlConnection("Data Source=(LocalDB)v11.0; Integrated Security=True; MultipleActiveResultSets=True").Open();

j'ai essayé de remplacer "Data Source=..." par "Server=..." mais en vain.

une idée de ce que la chaîne de connexion devrait être?

58
demandé sur nawfal 2012-05-10 22:51:12

8 réponses

1) Nécessite .net framework 4 mis à jour à au moins 4.0.2. Si vous avez 4.0.2, alors vous devriez avoir

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs\.NETFramework,Version=v4.0.2

si vous avez installé la dernière VS 2012 chances sont que vous avez déjà 4.0.2. Suffit de vérifier en premier.

2) Ensuite, vous devez avoir une instance de LocalDb . Par défaut, vous avez une instance dont le nom est un seul caractère v suivi du numéro de version de la version de LocalDB format xx.x. Par exemple, v11.0 représente SQL Server 2012. les instances automatiques sont publiques par défaut. Vous pouvez aussi avoir des instances nommées qui sont privées . Les instances nommées isolent les autres instances et peuvent améliorer le rendement en réduisant les conflits de ressources avec d'autres utilisateurs de la base de données. vous pouvez vérifier l'état des instances en utilisant l'utilitaire SqlLocalDb.exe (exécutez-le depuis la ligne de commande).

3) suivant votre chaîne de connexion devrait ressembler à:

"Server=(localdb)\v11.0;Integrated Security=true;"

ou

"Data Source=(localdb)\test;Integrated Security=true;"

de votre code . ils sont tous les deux pareils. notez les deux \ requis parce que \v et \t signifie des caractères spéciaux. Notez également que ce qui apparaît après (localdb)\ est le nom de votre instance LocalDb. v11.0 est l'instance publique par défaut, test est quelque chose J'ai créé manuellement ce qui est privé.

  1. si vous avez une base de données (.mdf file) déjà:

    "Server=(localdb)\Test;Integrated Security=true;AttachDbFileName= myDbFile;"
    
  2. si vous n'avez pas de base de données Sql Server:

    "Server=(localdb)\v11.0;Integrated Security=true;"
    

et vous pouvez créer votre propre base de données programmatique:

a) pour l'enregistrer dans l'emplacement par défaut avec le réglage par défaut:

var query = "CREATE DATABASE myDbName;";

b) pour le sauvegarder dans un emplacement spécifique avec vos propres paramètres personnalisés:

// your db name
string dbName = "myDbName";

// path to your db files:
// ensure that the directory exists and you have read write permission.
string[] files = { Path.Combine(Application.StartupPath, dbName + ".mdf"), 
                   Path.Combine(Application.StartupPath, dbName + ".ldf") };

// db creation query:
// note that the data file and log file have different logical names
var query = "CREATE DATABASE " + dbName +
    " ON PRIMARY" +
    " (NAME = " + dbName + "_data," +
    " FILENAME = '" + files[0] + "'," +
    " SIZE = 3MB," +
    " MAXSIZE = 10MB," +
    " FILEGROWTH = 10%)" +

    " LOG ON" +
    " (NAME = " + dbName + "_log," +
    " FILENAME = '" + files[1] + "'," +
    " SIZE = 1MB," +
    " MAXSIZE = 5MB," +
    " FILEGROWTH = 10%)" +
    ";";

et exécutez!

un exemple de table peut être chargé dans la base de données avec quelque chose comme:

 @"CREATE TABLE supportContacts 
    (
        id int identity primary key, 
        type varchar(20), 
        details varchar(30)
    );
   INSERT INTO supportContacts
   (type, details)
   VALUES
   ('Email', 'admin@sqlfiddle.com'),
   ('Twitter', '@sqlfiddle');";

notez que SqlLocalDb.exe utilitaire ne vous donne pas accès aux bases de données, vous avez besoin séparément sqlcmd utilitaire qui est triste..

modifier: déplacement de la position du point-virgule sinon une erreur se produirait si le code était copié /collé

94
répondu nawfal 2017-05-23 10:31:37

j'ai installé la mise à jour mentionnée .Net 4.0.2 mais j'ai reçu le même message d'erreur disant:

une erreur liée au réseau ou à l'instance s'est produite lors de l'établissement d'une connexion au serveur SQL

j'ai vérifié le SqlLocalDb via console comme suit:

C:\>sqllocaldb create "Test"
LocalDB instance "Test" created with version 11.0.

C:\>sqllocaldb start "Test"
LocalDB instance "Test" started.

C:\>sqllocaldb info "Test"
Name:               Test
Version:            11.0.2100.60
Shared name:
Owner:              PC\TESTUSER
Auto-create:        No
State:              Running
Last start time:    05.09.2012 21:14:14
Instance pipe name: np:\.\pipe\LOCALDB#B8A5271F\tsql\query

cela signifie que SqlLocalDb est installé et fonctionne correctement. Alors quelle était la raison pour laquelle je ne pouvais pas me connecter à SqlLocalDB via le code .Net avec cette chaîne de connexion: Server=(LocalDB)\v11.0;Integrated Security=true; ?

puis j'ai réalisé que mon application a été compilée pour DotNet framework 3.5 mais SqlLocalDb ne fonctionne que pour DotNet 4.0.

après correction, le problème a été résolu.

17
répondu Eduardo Fernandes 2012-09-14 10:07:40

j'ai eu le même problème pendant un moment. J'ai remarqué que j'avais:

Data Source= (localdb)\v11.0"

simplement en ajoutant un slash arrière il a résolu le problème pour moi:

Data Source= (localdb)\v11.0"
9
répondu SpiritBH 2014-12-05 15:47:43

c'est un fil assez ancien, mais puisque je réinstallais ma communauté Visual Studio 2015 aujourd'hui, j'ai pensé que je pourrais ajouter quelques informations sur ce qu'il faut utiliser sur VS2015, ou ce qui pourrait fonctionner en général.

pour voir quelles instances ont été installées par défaut, tapez sqllocaldb info dans une invite de commande. Sur ma machine, j'ai deux instances, la première nommée MSSQLLocalDB .

C:\>sqllocaldb info
MSSQLLocalDB
ProjectsV13

vous pouvez aussi créer une nouvelle instance si vous souhaitez, en utilisant sqllocaldb create "some_instance_name" , mais la valeur par défaut fonctionne très bien:

// if not using a verbatim string literal, don't forget to escape backslashes
@"Server=(localdb)\MSSQLLocalDB;Integrated Security=true;"
8
répondu Groo 2016-09-14 10:07:15

dans les fichiers de base de données Sql Server 2008 R2 vous pouvez vous connecter avec

Server=np:\.\pipe\YourInstance\tsql\query;InitialCatalog=yourDataBase;Trusted_Connection=True;

seulement, mais dans sql Server 2012 vous pouvez utiliser ceci:

Server=(localdb)\v11.0; Integrated Security=true;Database=DB1;

et cela dépendait de votre version .mdf .ldf .

pour trouver programmiquement j'utilise cette méthode qui a expliqué dans ce post

3
répondu yeye 2017-05-23 11:55:00

vous devez installer Point Net 4.0.2 ou plus haut comme mentionné ici .

Les bits 4.0 ne comprennent pas la syntaxe requise par LocalDB

voir cette question ici

vous pouvez télécharger la mise à jour ici

1
répondu Steve 2017-05-23 12:10:48

C'est pour les autres qui auraient lutté comme moi pour que ça marche....J'ai perdu plus d'une demi-journée sur un apparemment trivial...

si vous voulez utiliser SQL Express 2012 LocalDB de VS2010, vous devez avoir ce patch installé http://www.microsoft.com/en-us/download/details.aspx?id=27756

comme mentionné dans les commentaires ci-dessus, J'ai aussi eu Microsoft. NET Framework Version 4.0.30319 SP1Rel et depuis son mentionné partout que vous avez besoin de" cadre 4.0.2 ou plus haut " j'ai pensé que je suis bon pour aller...

cependant, quand j'ai explicitement téléchargé ce correctif 4.0.2 et l'ai installé, je l'ai fait fonctionner....

1
répondu Arif Eqbal 2012-06-19 06:36:54

j'ai de la chaîne de connexion Server=(localdb)\v11.0;Integrated Security=true;Database=DB1;

et même un programme .NET 3.5 connecte et exécute SQL avec succès.

mais beaucoup de gens disent que .NET 4.0.2 ou 4.5 est nécessaire.

0
répondu linquize 2013-02-24 10:56:43