В чем разница между локальной базой данных на С# и базой данных, созданной в SQL Server Management Studio?

Я создаю приложение с MS Visual C # 2010 Express, для которого требуется база данных.

Я узнал, что существует два способа создания/использования базы данных SQL с этим приложением.

Во-первых, кажется, что внутри С# я могу создать «локальную базу данных», щелкнув правой кнопкой мыши мое приложение в обозревателе решений и выбрав «Добавить» -> «Новый элемент» -> «Локальная база данных». Затем он отображается в проводнике базы данных, и я могу его использовать.

Другой способ заключается в том, что я создаю базу данных с помощью SQL Server Management Studio, а затем из кода C# открываю к ней соединение (SQLConnection... yada yada yada) и использую его.

Мне трудно понять, какие технические причины существуют между выбором того или иного способа сделать это...

Может ли кто-нибудь описать различия и какие критерии будут использоваться для выбора того или иного способа? (или укажите ссылку на сайт...)

Спасибо!

-Адина

Дополнительная информация... В данный момент это хобби-проект, так как я прорабатываю несколько вещей.

  1. Я единственный разработчик и работаю на одной машине
  2. Приложение предназначено для автономной работы, а не в браузере или в Интернете. Я знаю, что вселенная движется не в этом направлении, но, как упоминалось выше, это хобби-проект, который мне нужно завершить, чтобы решить несколько других вопросов.
  3. Я не думаю, что у меня есть необходимость или намерение использовать несколько приложений для работы с этой базой данных.

person adeena    schedule 30.06.2011    source источник
comment
Я считаю, что Add New Item -> Local Database добавит в ваш проект экземпляр базы данных SQL Server Compact Edition (CE) (один файл .sdf). Это встроенная однопользовательская локальная база данных — это НЕ SQL Server Express (и не серверный продукт)!   -  person marc_s    schedule 30.06.2011


Ответы (3)


На самом деле у вас есть три варианта. Вариант, который вы не описали, — это тот, где вы создаете базу данных с помощью SSMS, а затем настраиваете соединение с файлом и выбираете файл MDB, созданный SSMS (вам, вероятно, потребуется сначала отключите базу данных с помощью SSMS, чтобы заставить SQL Express снять блокировки файлов). Когда вы создали это подключение к файлу, вам будет предложено указать, хотите ли вы подключиться к нему там, где он есть, или добавить его в свой проект.

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

Клиент-сервер, SQL Express

Если вы настраиваете базу данных с помощью SSMS и подключаетесь к ней через SQL Express, то у вас нет локальной базы данных, которая является частью вашего проекта, у вас есть база данных, для которой сервер оказывается локальным по отношению к вашей рабочей станции.

Локальная база данных, SQL Express

Если вы настроите базу данных с помощью SSMS, отключите базу данных и добавите файл в свой проект, то у вас будет локальная база данных, использующая частный экземпляр SQL Express.

Локальная база данных, компактная версия

Если вы создаете новую базу данных с помощью меню Visual Studio, у вас есть локальная база данных Compact Edition.

SQL экспресс

Когда Visual Studio запускает отладку, запускается частный именованный экземпляр SQL Server Express, и приложение взаимодействует с ним, используя общую память, а не сетевой протокол.

Однако ничто не мешает вам установить экземпляр SQL Express, работающий как служба. Вы можете смонтировать тот же файл базы данных (или его копию) и сделать его доступным для сети. Вы даже можете смонтировать его на экземпляре SQL Standard или даже SQL Enterprise.

Зачем тогда возиться с локальным экземпляром? Он имеет преимущества для команд, состоящих из нескольких разработчиков, поскольку разработчики могут изменять свою схему, не нарушая работу других. Это позволяет разрабатывать настольное (в отличие от сетевого) программное обеспечение, хотя в наши дни спрос на эту возможность уменьшается.

В зависимости от того, сколько оборудования у вас есть в вашей среде разработки, лично я бы не стал использовать локальную базу данных. SQL Server — это свинья памяти, и я бы предпочел, чтобы он работал на совершенно отдельном компьютере.

Некоторые вещи, чтобы отметить

  • TSQL абсолютно идентичен для всех редакций MSSQL, кроме редакций Compact и Micro.
  • Экологически SQL Express ограничивает размер базы данных до 4G, хотя я полагаю, что для R2 он увеличился до 8G. Это вряд ли будет иметь значение для разработки, но может повлиять на тестировщиков.
  • Некоторые функции SQL Server Reporting Services недоступны в более дешевых выпусках.

Компактный выпуск SQL Server

Информация об этом довольно скудная. Сравнение версий Microsoft не учитывает выпуски Compact или Micro. Некоторые рекламные объявления на веб-странице компактной версии заявляют о полной совместимости с TSQL. SDF — это файл «все в одном»; отдельного лог-файла нет. Путь от SDF к клиент-серверу, безусловно, менее прямой, чем для SQL Express, но, похоже, он поддерживается, поскольку на эту тему есть статьи в msdn.

Для версии Compact доступны инструменты репликации, поэтому ее можно использовать в качестве локального кэша базы данных в системе с периодическим подключением (так называемая модель портфеля). Портфельная модель требует более тщательного проектирования всей системы, но она имеет много преимуществ: все производительность и простота автономной системы для одного пользователя с большинством преимуществ системы клиент-сервер.

Вывод

Для ваших целей я бы выбрал вариант Compact Edition. Накладные расходы и сложность других решений направлены на решение проблем, которых у вас нет и не будет. Они предназначены для решения задач командной разработки в сетевой крупномасштабной среде с формальным циклом выпуска.

Вам повезло, что вы можете сделать все просто. Инструменты в Visual Studio в любом случае лучше.

person Peter Wone    schedule 30.06.2011
comment
Я считаю, что Add New Item -> Local Database добавит в ваш проект экземпляр базы данных SQL Server Compact Edition (CE) (один файл .sdf). Это встроенная однопользовательская локальная база данных — это НЕ SQL Server Express (и не серверный продукт)! - person marc_s; 30.06.2011
comment
@Peter, можем ли мы развернуть позже на локальном сервере CE sql? - person Elad Benda; 02.11.2011
comment
Развернуть куда? Если вы надеетесь, что setupkit сможет развернуть приложение и базу данных CE в папку progfiles\appfolder, то да, вы можете; это основная цель технологии CE. - person Peter Wone; 08.11.2011
comment
@PeterWone с точки зрения контроля версий этого приложения, насколько возможно использовать компактную версию? После развертывания и установки пользователь начнет заполнять данные своей версии. Позже, как мы можем обновить версии? - person bonCodigo; 10.10.2014
comment
CE имеет те же проблемы, что и Enterprise, в отношении контроля версий. Как бы мне не нравился Redgate, я предлагаю вам купить их продукт, это единственный практичный способ контроля версий базы данных. Вы можете использовать его для сравнения обновленной базы данных с тем, что есть у клиента, и для создания сценариев обновления схемы с сохранением данных. - person Peter Wone; 11.10.2014

Чтобы получить более подробное представление о том, что происходит: просмотрите настройки и другие функции CREATE DATABASE. Я точно не знаю, но одно приложение может использовать разные настройки по умолчанию. Подробнее читайте в статье о том, как в этом играет роль база данных «model».

person JeffO    schedule 30.06.2011

Локальная база данных использует уменьшенную версию SQL Server — Express compact edition (CE). Существует ряд технических ограничений, но наиболее важным из них является то, что локальная база данных доступна только для экземпляра, в котором работает приложение. С другой стороны, к серверу базы данных могут обращаться другие приложения или другие экземпляры того же приложения. По сути, совместно используется несколькими пользователями, которые видят одни и те же данные.

person Yuck    schedule 30.06.2011
comment
Вопрос заключается в том, чтобы использовать одно приложение для создания базы данных, а не другое; не разница между локальной установкой SQL Server и более высокой версией на сервере. - person JeffO; 30.06.2011
comment
@Jeff: Спасибо за ваше мнение. Я позволю @adeena взвеситься, прежде чем отредактирую или удалю свой ответ. Мне кажется, что вопрос заключается в том, использовать ли базу данных, созданную VS, или базу данных из SSMS. Разница в основном сводится к доступности, которую я попытался затронуть. - person Yuck; 30.06.2011
comment
Я считаю, что Add New Item -> Local Database добавит в ваш проект экземпляр базы данных SQL Server Compact Edition (CE) (один файл .sdf). Это встроенная однопользовательская локальная база данных — это НЕ SQL Server Express (и не серверный продукт)! - person marc_s; 30.06.2011
comment
Спасибо! Я добавил некоторые подробности о моем предполагаемом использовании в исходный пост выше. По крайней мере, для этого приложения, предназначенного для автономной работы на одной машине, доступность не является проблемой. Но я буду иметь это в виду для будущих приложений, в которых это может быть... - person adeena; 30.06.2011
comment
@marc_s: Да, вы правы на CE, а не на Express. В конце концов, важной частью является то, что это не сервер, как вы упомянули... он работает в процессе с вашим приложением. - person Yuck; 30.06.2011