В чем разница между локальной базой данных в C # и базой данных, созданной в SQL Server Management Studio? - PullRequest
13 голосов
/ 30 июня 2011

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

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

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

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

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

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

Спасибо!

-Адина

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

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

Ответы [ 3 ]

12 голосов
/ 30 июня 2011

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

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

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

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

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

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

Локальная база данных, Compact Edition

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

SQL Express

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

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

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

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

Некоторые вещи на заметку

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

SQL Server Compact Edition

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

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

Заключение

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

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

0 голосов
/ 30 июня 2011

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

0 голосов
/ 30 июня 2011

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

...