Вопрос по c#, sql-server, database – Создать базу данных .mdf / .sdf динамически

11

Как я могу с & quot; кодом & quot; создать новую базу данных .mdf / .sdf?

Я пробовал это: http://support.microsoft.com/kb/307283

Все, что он делает, это сбой на ConnectionString. Поскольку у меня нет подключения к файлу, который существует до его создания, как я могу подключиться к серверу SQL Express только для создания базы данных mdf / sdf?

Я хочу иметь возможность просто подключиться к серверу и создать файл, оттуда, вероятно, будет проще создавать таблицы и тому подобное.

Какие-либо предложения?

у вас есть возможность использования SQL Server CE? у него есть эта функциональность .. как только на основе строки подключения user359135

Ваш Ответ

7   ответов
0

Убедитесь, что у вас есть правильная строка подключения.

Необходимая база данных / каталог должна быть действительной базой данных, обычно это может быть & quot; master & quot; который всегда доступен, и так как вы будете использовать мастер для создания базы данных.

0

Используйте строку подключения сInitialCatalog = master, Поскольку только мастер имеет доступ по умолчанию для создания базы данных.

0

Create .sdf database

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();
2

Что касается файлов .sdf (SQL Server CE), вы можете использоватьSqlCeEngine класс для создания новой базы данных, как описано вэта статья MSDN.

19
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=tempdb вCatalog=master, его хорошо сработало

Образец использования:

var filename = System.IO.Path.Combine("D:\\", "testdb.mdf");
if (!System.IO.File.Exists(filename))
{
    CreateSqlDatabase(filename);
}
измените Catalog = tempdb на Catalog = master, это хорошо сработало
Я получаю сообщения об ошибках: «System.Data.SqlClient.SqlException:» При установке соединения с SQL Server произошла ошибка, связанная с сетью или экземпляром. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений. & Quot; Не могли бы вы помочь мне?
Прямо сейчас я получаю сообщения о том, что база данных уже существует, но с ней не связано ни одного файла. Не является ли база данных, таблицы и тому подобное содержащиеся в «MDF»? файл? Поскольку нет ни одного, как может быть база данных без файла? Deukalion
эта строка подключения работала для меня: & quot; Источник данных = (LocalDB) \\ v11.0; Начальный каталог = master; Интегрированная безопасность = true; & quot;
Это сработало. Но позже я вообще не могу подключиться к файлу данных. SQL Connection String работает при создании файла, но при последующем подключении к нему возникает много разных ошибок. Если я использую этот метод для создания & quot; mdf & quot; файл в CurrentDirectory, как мне позже использовать его? Deukalion
0

Я полагаю проблемаis в ConnectionString. Он должен указывать на действительный экземплярmaster дБ (как в статье, на которую вы ссылаетесь). Убедитесь, что это правильно, и это должно работать.

Но я хочу, чтобы программа создала его с помощью кода. Deukalion
0

Если вам нужно создать базу данных с нуля программным путем, я обычно захожу в SQL Server Management Studio и создаю ее через графический интерфейс на первом этапе. Но вместо нажатия кнопки «ОК» в правом нижнем углу я нажимаю кнопку «Сценарий» на верхней панели инструментов. Это даст мне полный сценарий sql для создания базы данных, которую я хотел бы иметь. Затем я могу изменить сценарий и изменить части, которые мне нравятся, динамически.

Похожие вопросы