Comment créer manuellement un fichier mdf pour localdb?

je mets en place des tests unitaires pour tester le travail fait avec une base de données. Je voudrais utiliser localdb v11 mais d'abord je dois créer la base de données. Comment dois-je faire exactement?

se connectant simplement à (localdb)v11 dans sql management studio me connecte à la base de données qui (je suppose) est dans C:UsersGeorge . Comment en spécifier un nouveau?

le code utilise manuel ADO.Net, pas un cadre D'entité pour autant que je sache je ne peux pas compter sur elle pour simplement créer la base de données.

28
demandé sur George Mauer 2013-04-06 20:40:48

4 réponses

il suffit D'utiliser créer l'énoncé de base de données

SqlConnection connection = new SqlConnection(@"server=(localdb)\v11.0");
using (connection)
{
    connection.Open();

    string sql = string.Format(@"
        CREATE DATABASE
            [Test]
        ON PRIMARY (
           NAME=Test_data,
           FILENAME = '{0}\Test_data.mdf'
        )
        LOG ON (
            NAME=Test_log,
            FILENAME = '{0}\Test_log.ldf'
        )",
        @"C:\Users\George"
    );

    SqlCommand command = new SqlCommand(sql, connection);
    command.ExecuteNonQuery();
}
40
répondu Stan 2013-04-06 17:04:24

je sais, vieille question, mais je trouve la façon suivante encore pertinente et rapide. Voici les étapes complètes, mais en fait seulement la dernière partie est vraiment pertinente:

prérequis:

  1. MS Sql LocalDb engine
  2. MS Sql Server Management Studio

Suit:

  1. Ouvrez l'invite de commande
  2. Exécuter SqlLocalDb info à la liste actuellement installé des instances LocalDb. Il devrait y avoir au moins v11.0 pour Sql Server 2012 / Visual Studio 2012 ou MSSQLLocalDB pour Sql Server 2014/Visual Studio 2015""
  3. Ouvrez Sql Server Management Studio ou afficher le dialogue de connexion s'il est déjà en cours d'exécution
  4. utilisez le nom de serveur (localdb)\v11.0 ou (localdb)\MSSQLLocalDB , selon ce qui vous intéresse. Sélectionnez Authentification Windows
  5. créer une nouvelle requête
  6. collez le modèle suivant, en adaptant votre chemin et vos noms au besoin:

    CREATE DATABASE __YourDbName__ ON (
      NAME='__YourDbName__', 
      FILENAME='YourDrive:\Your\path\to\data\files\__YourDbName__.mdf')
    
  7. Exécuter la requête

  8. "1519130920 d'Actualisation" de l'Explorateur d'Objets liste de Bases de données

dans L'Explorateur D'objets vous devriez maintenant Voir le DB nouvellement créé, tandis que dans L'Explorateur de Windows vous devriez maintenant voir les dossiers nouvellement créés .mdf et .ldf au chemin spécifié.

HTH

18
répondu superjos 2016-05-05 11:30:37

Je ne suis pas sûr de ce que vous voulez dire par "manuellement". Je vais ajouter une option en utilisant Visual Studio 2013 et LocalDb:

Open Server Explorer, Clic droit sur les connexions de données, sélectionnez Créer une nouvelle base de données SQL Server. Pour le "Nom du Serveur" utilisation "(LocalDB)\v11.0".

il y a une autre option, comme décrit ici mais elle nécessite l'installation D'outils de données SQL Server. Une version des instructions pour Visual Studio 2012 est aussi disponible .

puisque vous mentionnez aussi SQL Server Management Studio, vous pouvez tout simplement vous connecter à L'instance LocalDb et cliquer avec le bouton droit de la souris sur les bases de données, puis créer, de manière standard. Il s'agit plus ou moins d'une instance SQL Server régulière et toutes les opérations standard fonctionneront comme d'habitude.

la création de la base de données peut aussi, évidemment, se faire à partir du code de l'application, mais cela nécessite la mise en place des permissions appropriées de la base de données. Dépendre sur votre environnement qui peut ou peut ne pas être une bonne idée.

8
répondu Alen Siljak 2015-12-23 13:22:04

si vous êtes à la recherche (comme moi) d'un moyen de faire cela en dehors de votre code, vous pouvez envisager d'utiliser un .bat script pour faire ça. Je le garde dans la solution .fichier txt que je peux utiliser quand j'ai besoin de configurer à nouveau l'environnement de développement.

LocalDB et SQLCmd

ce script suppose que LocalDB est installé. Je n'ai pas encore pu trouver d'informations claires à ce sujet, mais il semble qu'il peut être installé avec visual studio 2012 et 2015 Si vous êtes l'utilisation d'entity framework. Si ce n'est pas le cas, vous pouvez l'installer à partir d'un installateur autonome ou de la page de téléchargement SQL Server express ( vous pouvez choisir le téléchargement que vous voulez). Plus de détails ici: Comment installer localdb séparément?

SQLCmd peut être téléchargé de la même manière depuis le paquet de fonctionnalités SQLServer, recherchez SQLCmdlnUtility.msi. Voici le lien" 1519100920 pour la version 2012.

vous pouvez besoin de changer le chemin LocalDbDir et SQLCmdDir si vous n'avez pas la même version que moi.

script

:: Script to Create Local DB Instance and a database

::echo setting variables - Default Server is v11 but it may be useful to evolve in a server instance of your own...
SET localdDbDir=C:\Program Files\Microsoft SQL Server0\Tools\Binn
SET sqlCmdDir=C:\Program Files\Microsoft SQL Server0\Tools\Binn
SET SRV_NAME=your-dev-srv
SET DB_NAME=your-dev-db
SET DB_PATH=C:\CurDev\Temp

echo Creates the localDB server instance
pushd "%localdDbDir%"
:: uncomment those lines if you want to delete existing content
::SqlLocalDb stop %SRV_NAME%
::SqlLocalDb delete %SRV_NAME%
SqlLocalDb create %SRV_NAME%
SqlLocalDb start %SRV_NAME%
popd

echo Create the database intance
pushd "%sqlCmdDir%"
sqlcmd -S "(localdb)\%SRV_NAME%" -Q "CREATE DATABASE [%DB_NAME%] ON PRIMARY ( NAME=[%DB_NAME%_data], FILENAME = '%DB_PATH%\%DB_NAME%_data.mdf') LOG ON (NAME=[%DB_NAME%_log], FILENAME = '%DB_PATH%\%DB_NAME%_log.ldf');"
popd
echo completed

Espérons que cette aide!

5
répondu codea 2017-05-23 12:10:33