42

データベースで行われた作業をテストするための単体テストをいくつか設定しています。localdb v11 を使用したいのですが、まずデータベースを作成する必要があります。これをどのように正確に行うのですか?

SQL管理スタジオに接続するだけ(localdb)v11で、(私が推測する)にあるデータベースに接続されC:\Users\George\ます。新しいものを指定するにはどうすればよいですか?

このコードでは、Entity Framework ではなく手動の ADO.Net を使用しているため、単純にデータベースを作成するために依存することはできません。

4

4 に答える 4

53

CREATE DATABASE ステートメントを使用するだけです

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();
}
于 2013-04-06T17:04:24.863 に答える
32

私は古い質問を知っていますが、次の方法は依然として適切で迅速です。以下に完全な手順を示しますが、実際には最後の部分だけが実際に関連しています。

前提条件:

  1. MS Sql LocalDb エンジン
  2. MS Sql サーバー管理スタジオ

手順:

  1. コマンドプロンプトを開く
  2. 実行SqlLocalDb infoして、現在インストールされている LocalDb インスタンスを一覧表示します。少なくともv11.0Sql Server 2012/Visual Studio 2012 またはMSSQLLocalDBSql Server 2014/Visual Studio 2015 には必要です。
  3. Sql Server Management Studio を開くか、既に実行されている場合は [接続] ダイアログを表示します
  4. サーバー名(localdb)\v11.0または(localdb)\MSSQLLocalDBのうち、興味のある方を使用してください。Windows 認証を選択します
  5. 新しいクエリを作成する
  6. 次のテンプレートを貼り付け、必要に応じてパスと名前を変更します。

    CREATE DATABASE __YourDbName__ ON (
      NAME='__YourDbName__', 
      FILENAME='YourDrive:\Your\path\to\data\files\__YourDbName__.mdf')
    
  7. クエリを実行

  8. データベースのオブジェクト エクスプローラー リストを更新する

オブジェクト エクスプローラーでは、新しく作成された DB が表示され、Windows エクスプローラーでは、指定されたパスに新しく作成されたファイルが表示.mdf.ldfれます。

HTH

于 2016-05-05T11:30:37.870 に答える
8

「手動」の意味がわかりません。Visual Studio 2013 と LocalDb を使用してオプションを追加します。

サーバー エクスプローラーを開き、[データ接続] を右クリックして、[新しい SQL Server データベースの作成] を選択します。「サーバー名」には「(LocalDB)\v11.0」を使用します。

ここで説明されているように、別のオプションがありますが、SQL Server Data Tools のインストールが必要です。Visual Studio 2012 の手順のバージョンも利用できます

SQL Server Management Studio についても言及しているため、LocalDb インスタンスに接続し、[データベース] を右クリックして、標準的な方法で [作成] をクリックするだけです。これは多かれ少なかれ通常の SQL Server インスタンスであり、すべての標準操作は通常どおり機能します。

もちろん、アプリケーション コードからデータベースを作成することもできますが、それには適切なデータベース権限を設定する必要があります。環境によっては、良いアイデアである場合とそうでない場合があります。

于 2013-11-26T21:14:50.887 に答える
6

コードの外でそれを行う方法を (私のように) 探している場合は、.bat スクリプトを使用してそれを行うことを検討することをお勧めします。開発環境を再度セットアップする必要があるときに使用できる .txt ファイルとしてソリューションに保存します。

LocalDB と SQLCmd

このスクリプトは、LocalDB がインストールされていることを前提としています。まだ明確な情報は見つかりませんでしたが、エンティティ フレームワークを使用している場合は、Visual Studio 2012 および 2015 でインストールできるようです。そうでない場合は、スタンドアロン インストーラーまたは SQL Server 高速ダウンロード ページからインストールできます (必要なダウンロードとして選択できます。詳細はこちら: localdb を個別にインストールする方法?

SQLCmd は、SQLServer Feature Pack から同じ方法でダウンロードできます。SQLCmdlnUtility.msi を探してください。2012年版のリンクはこちら。

私と同じバージョンを持っていない場合は、LocalDbDir と SQLCmdDir のパスを変更する必要があるかもしれません。

脚本

:: 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 Server\120\Tools\Binn
SET sqlCmdDir=C:\Program Files\Microsoft SQL Server\120\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

お役に立てれば!

于 2015-11-01T15:13:52.283 に答える