2012-02-05 2 views
3

Я потратил много времени на исследования внешних ресурсов, но различные решения, похоже, были более активными, чем я надеялся.Добавить базу данных в существующий SQL Server 2008

Я пытаюсь добиться следующего:

  • создать простую базу данных на существующем экземпляре SQL на этом локальном компьютере.
  • безопасности должна просто быть простое имя пользователя и пароль
  • другие варианты не нужны (срубы, рост, максимальный размер и т.д.)

Это моя первая попытка интеграции баз данных с моей программой. использование SQLite или SMO ​​казалось немного подавляющим. Я пытался изменить этот пример кода для работы:

private void createDatabase() 
{ 
    String str; 
    SqlConnection myConn = new SqlConnection("Server=" + serverName + ";Integrated security=SSPI;database=master"); 

    str = "CREATE DATABASE " + dbName + " ON PRIMARY " + 
      "(NAME = " + dbName + "_Data, " + 
      "FILENAME = 'C:\\" + dbName + ".mdf', " + 
      "SIZE = 2MB, MAXSIZE = 10MB, FILEGROWTH = 10%) " + 
      "LOG ON (NAME = " + dbName + "_Log, " + 
      "FILENAME = 'C:\\" + dbName + ".ldf', " + 
      "SIZE = 1MB, " + 
      "MAXSIZE = 5MB, " + 
      "FILEGROWTH = 10%)"; 

    SqlCommand myCommand = new SqlCommand(str, myConn); 
    try 
    { 
     myConn.Open(); 
     myCommand.ExecuteNonQuery(); 
     MessageBox.Show("DataBase is Created Successfully", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information); 
    } 
    catch (System.Exception ex) 
    { 
     MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Information); 
    } 
    finally 
    { 
     if (myConn.State == ConnectionState.Open) 
     { 
      myConn.Close(); 
     } 
    } 
} 

Любые идеи о том, как создать простую строку запроса или что-то, чтобы создать базу данных? Если есть лучший способ, это нормально, но имейте в виду, я стараюсь, чтобы это было максимально просто, чтобы начать.

+0

Если взять SQL сгенерированный в 'str' и запустить его в SSMS, что происходит? –

+1

Предложение: Попробуйте 'использовать' внутри блока' try-catch'. Использование закроет соединение, и если 'using' или' .Close() 'выдает какое-либо исключение, вы можете поймать блок' catch'. –

+0

Я получаю сообщение об ошибке «Отказано в доступе». Я также не могу создать файл .mdf в этом месте. Я действительно знаю, что для входа в другую базу данных в экземпляре SQL я не знаю, но не знаю, как применить это при создании базы данных. Я также не знаю, куда помещать файл .mdf или где хранятся другие. – ikathegreat

ответ

7

Использование SMO:

Server server = new Server("servername"); 
    Database db = new Database(server, "MyDatabaseName"); 
    db.Create(); 

Для создания приложения SMO, вы должны ссылаться на SMO сборки. Нажмите кнопку 'Добавить ссылку' и перейдите в папку

C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies 

Добавить ссылки на эти сборки:

  • Microsoft.SqlServer.ConnectionInfo.dll
  • Microsoft.SqlServer.Smo.dll
  • Microsoft .SqlServer.Management.Sdk.Sfc.dll
  • Microsoft.SqlServer.SqlEnum.dll

Добавить это с помощью заявления к файлу, содержащему вышеуказанный код:

using Microsoft.SqlServer.Management.Smo; 

На стороне Примечание:

+0

Я не могу найти эти ссылки! Я использую .NET Framwork 4.0, поэтому в следующем примере: http://www.codeproject.com/Articles/13755/SMO-Manage-your-SQL-Server Я не могу найти правильную ссылку .NET. – ikathegreat

+0

как я могу проверить, у меня есть SQL 2008 R2. сайт microsoft не был точно полезен (неожиданно) – ikathegreat

+0

Я думаю, нет, то: http://msdn.microsoft.com/en-us/library/ms162189.aspx – ikathegreat

Смежные вопросы