12

「コード」を使用して新しい .mdf/.sdf データベースを作成するにはどうすればよいですか?

私はこれを試しました: http://support.microsoft.com/kb/307283

ConnectionString で失敗するだけです。ファイルを作成する前に存在するファイルへの接続がないため、mdf/sdf データベースを作成するためだけに SQL Express Server に接続するにはどうすればよいですか?

サーバーに接続してファイルを作成できるようにしたいのですが、そこからテーブルなどを作成する方が簡単でしょう。

助言がありますか?

4

7 に答える 7

20
public static void CreateSqlDatabase(string filename)
{
    string databaseName = System.IO.Path.GetFileNameWithoutExtension(filename);
    using (var connection = new System.Data.SqlClient.SqlConnection(
        "Data Source=.\\sqlexpress;Initial Catalog=tempdb; Integrated Security=true;User Instance=True;"))
    {
        connection.Open();
        using (var command = connection.CreateCommand())
        {
            command.CommandText =
                String.Format("CREATE DATABASE {0} ON PRIMARY (NAME={0}, FILENAME='{1}')", databaseName, filename);
            command.ExecuteNonQuery();

            command.CommandText =
                String.Format("EXEC sp_detach_db '{0}', 'true'", databaseName);
            command.ExecuteNonQuery();
        }
    }
}

に変更Catalog=tempdbCatalog=masterその良い仕事

使用例:

var filename = System.IO.Path.Combine("D:\\", "testdb.mdf");
if (!System.IO.File.Exists(filename))
{
    CreateSqlDatabase(filename);
}
于 2012-05-07T14:31:58.793 に答える
2

.sdf ファイル (SQL Server CE) に関しては、この MSDN 記事SqlCeEngineで説明されているように、クラスを使用して新しいデータベースを作成できます。

于 2012-05-07T12:19:40.787 に答える
1

.sdf データベースの作成

using System.Data.SqlServerCe;
using System.IO;
  string folderPath="D:\\Compact_DB"
  string connectionString;
  string fileName =folderPath+"\\School.sdf";
  string password = "12345";

  if (File.Exists(fileName))
  {
    File.Delete(fileName);
  }

  connectionString = string.Format("DataSource=\"{0}\"; Password='{1}'",    fileName, password);
  SqlCeEngine obj_ceEngine = new SqlCeEngine(connectionString);
  obj_ceEngine.CreateDatabase();
于 2016-04-25T09:59:26.913 に答える
0

でconnectionStringを使用しInitialCatalog = masterます。マスターだけがデータベースを作成するためのデフォルトのアクセス権を持っているので。

于 2012-05-07T12:24:16.470 に答える
0

プログラムでゼロからデータベースを作成する必要がある場合は、通常、SQL Server Management Studio に移動し、最初のステップで GUI を使用して作成します。しかし、右下の [OK] ボタンをクリックする代わりに、上部のツールバーにある [スクリプト] ボタンをクリックします。これにより、必要なデータベースを作成するための完全な SQL スクリプトが得られます。次に、スクリプトを変更して、必要な部分を動的に変更できます。

于 2012-05-07T12:21:13.263 に答える
0

問題ConnectionString にあると思います。マスターデータベースの有効なインスタンスを指す必要があります(参照する記事のように)。それが正しいことを確認してください。動作するはずです。

于 2012-05-07T12:21:30.333 に答える
0

有効な接続文字列があることを確認してください。

必要なデータベース/カタログは有効なデータベースに設定する必要があります。通常、これは常に利用可能な「マスター」であり、マスターを使用してデータベースを作成するためです。

于 2012-05-07T12:18:55.870 に答える