Database project в VS 2010
От: Быдлокодер  
Дата: 12.10.10 10:48
Оценка:
С удивлением обнаружил, что в VS 2010 изменилась структура проектов баз данных.
В VS 2008 можно было создать скрипты на DDL и запустить их прямо из Solution Explorer. В VS 2010 аналогичного пункта меню не обнаружил.
В интернете нашел информацию о новой команде Deploy. Но вот как с новым подходом писать скрипты CREATE DATABASE непонятно

Может ли кто объяснить эту новую концепцию проектов баз данных?
Re: Database project в VS 2010
От: Быдлокодер  
Дата: 12.10.10 11:24
Оценка:
По ссылке есть некоторые пояснения.
http://social.msdn.microsoft.com/Forums/en/vstsdb/thread/2e872712-3abd-4ab5-8d9c-21800f3d15a5

Но все же непонятно, как задать расположение и размер файла mdf?
Re: Database project в VS 2010
От: Sinix  
Дата: 13.10.10 05:16
Оценка: 3 (1)
Здравствуйте, Быдлокодер, Вы писали:

Б>В VS 2008 можно было создать скрипты на DDL и запустить их прямо из Solution Explorer. В VS 2010 аналогичного пункта меню не обнаружил.


Может, вы имеете в виду легаси-проекты? (Other project types > Database > Database project)

Если же вы работаете с VSDB (aka DataDude) — можно поискать в руководстве (http://vsdatabaseguide.codeplex.com/)
Re[2]: Database project в VS 2010
От: Быдлокодер  
Дата: 13.10.10 06:48
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Здравствуйте, Быдлокодер, Вы писали:


Б>>В VS 2008 можно было создать скрипты на DDL и запустить их прямо из Solution Explorer. В VS 2010 аналогичного пункта меню не обнаружил.


S>Может, вы имеете в виду легаси-проекты? (Other project types > Database > Database project)


S>Если же вы работаете с VSDB (aka DataDude) — можно поискать в руководстве (http://vsdatabaseguide.codeplex.com/)


Да, именно такой тип проекта создавал в предыдущих версиях студии (Other project types > Database > Database project). В VS 2010 его не обнаружил.


Хотя VSDB действительно много удобней. Не нужно в ручную писать скрипты Install/Uninstall.

Как я понял из приведенной вами документации, можно создать PreDeployEvent и там создавать БД.

Sinix, спасибо!
Re[3]: Database project в VS 2010
От: Sinix  
Дата: 13.10.10 07:13
Оценка: 3 (1)
Здравствуйте, Быдлокодер, Вы писали:

Б>Да, именно такой тип проекта создавал в предыдущих версиях студии (Other project types > Database > Database project). В VS 2010 его не обнаружил.

Уппс, не проверил — такого типа проектов действительно нет

Б>Хотя VSDB действительно много удобней. Не нужно в ручную писать скрипты Install/Uninstall.

Нененене, стоять-бояться

Если вам нужен REPL (набрали-запустили-набрали...), то SSMS в этом плане удобней студии (к сожалению).
Но и со студией можно кое-чего добиться:
http://msdn.microsoft.com/en-us/library/ms165051.aspx
http://social.msdn.microsoft.com/Forums/en/vsdebug/thread/afdae1b5-95d0-4a91-884c-bb4e0461d914

Если же вы собираетесь перевести ваш проект на VS Database objects — спрашивайте, отвечу.
Для начала — Организация работы над MS SQL 2008 DB Project
Автор: Poul_Ko
Дата: 06.09.10


Б>Но все же непонятно, как задать расположение и размер файла mdf?

Для каждого файла БД создаётся скрипт filename.sqlfile.sql в папке "Schema Objects\Database Level Objects\Storage\Files\"

В нём — обычный
ALTER DATABASE [$(DatabaseName)] ADD FILE
(
  NAME = filename,
  FILENAME = N'$(DeploymentPath)filename.mdf',
  SIZE = 4096 KB, MAXSIZE = UNLIMITED, FILEGROWTH = 1024 KB
) TO FILEGROUP [PRIMARY];


Также см файлики в папке properties — .sqldeployment (настройки развёртывания) и .sqlsettings (параметры базы данных)

Концепция DB Projects — вы декларативно описываете базу данных по нашим правилам, а мы вам её развернём/синхронизируем с реальным сервером. Если вам не подходит — лучше не связываться.
Re[4]: Database project в VS 2010
От: Быдлокодер  
Дата: 13.10.10 07:26
Оценка:
Здравствуйте, Sinix, Вы писали:


S>Если вам нужен REPL (набрали-запустили-набрали...), то SSMS в этом плане удобней студии (к сожалению).


Первоначально пробовал в ней работать. Но там в аналоге Solution Explorer нельзя раскидывать скрипты по своим подпапкам и они не сортируются по имени. На тот момент это было важно.

S>Если же вы собираетесь перевести ваш проект на VS Database objects — спрашивайте, отвечу.

S>Для начала — Организация работы над MS SQL 2008 DB Project
Автор: Poul_Ko
Дата: 06.09.10

Нет, проект новый. Поэтому хотелось бы разобраться как его сразу грамотно писать.

S>Концепция DB Projects — вы декларативно описываете базу данных по нашим правилам, а мы вам её развернём/синхронизируем с реальным сервером. Если вам не подходит — лучше не связываться.

Звучит заманчиво, и по описанию это то, что нужно.

У вас в примере именя файла заканчивается на .slqfile.sql
Это рекомендуемое соглашение об именование скриптов?
Re[5]: Database project в VS 2010
От: Быдлокодер  
Дата: 13.10.10 07:30
Оценка:
Б>У вас в примере именя файла заканчивается на .slqfile.sql
Б>Это рекомендуемое соглашение об именование скриптов?

Понял.

2. Активно использовать схемы, именовать файлы в стиле "TableName.table.sql" (без имени схемы). Здорово облегчает работу с большими базами и последующий рефакторинг.

Re: Database project в VS 2010
От: Быдлокодер  
Дата: 13.10.10 08:05
Оценка: 16 (1)
Интересно получается.

Добавляю простой скрипт. Создаю в нем таблицу. Вызываю Deploy. В базе ничего не создается.
Добавлю скрипт с помощью AddTable. Создаю в нем таблицу. Вызываю Deploy. В базе создается таблица!

Оказалось, что в файл проекта простые скрипты добавляются таким образом:

<NotInBuild Include="Schema Objects\Schemas\dbo\Tables\Tasks.table.sql">
<SubType>NotInBuild</SubType>
</NotInBuild>

А заготовки с табличками (раньше просто не пользовался ими) таким:

<Build Include="Schema Objects\Schemas\dbo\Tables\ChatComments.table.sql">
<SubType>Code</SubType>
</Build>

Re[5]: Database project в VS 2010
От: Sinix  
Дата: 13.10.10 08:25
Оценка: 3 (1)
Здравствуйте, Быдлокодер, Вы писали:

Б>У вас в примере именя файла заканчивается на .slqfile.sql

Б>Это рекомендуемое соглашение об именование скриптов?
Не совсем. Это соглашение, навязываемое вам студией. Чтоб последняя не гадала, что у вас за скрипт, а "Ахааа! Тут мы создаём табличчку!".

Идея конечно хорошая, но приводит к тому, что управлять структурой проекта ручками практически невозможно, безопаснее всего все операции выполнять ч/з schema view.

Лучший способ разобраться —
1) создать простую базу (схемы, таблицы (ограничения и индексы — обзательно), sp, view, функции, пользователи, роли)
2) создать пустой проект (указав при создании группировку по схемам)
3) с помощью SchemaCompare импортировать схему в проект. Дальше — лазим по папкам и разбираемся со структурой.

Вместо 2) и 3) можно запустить project wizard — он всё сделает сам.

Для реализма можно инкрементально добавлять фичи в базу, а затем импортировать в проект. Я иногда так и делаю: удобно вчерновую сделать изменения на тестовом серваке через SSMS, а затем импортировать в проект и причесать.

P.S. Про _обязательный_ source control я не просто так сказал
Re[6]: Database project в VS 2010
От: Быдлокодер  
Дата: 13.10.10 08:31
Оценка: +1
Здравствуйте, Sinix, Вы писали:

S>P.S. Про _обязательный_ source control я не просто так сказал


Использую SVN. Этого хватит на ваш взгляд?
Re[7]: Database project в VS 2010
От: Sinix  
Дата: 13.10.10 08:36
Оценка:
Здравствуйте, Быдлокодер, Вы писали:

Б>Использую SVN. Этого хватит на ваш взгляд?

Да, мы тоже (сервер — VisualSVN Server, на клиенте — тортойз + AnkhSvn; самое достойное из бесплатных).
Re[2]: Database project в VS 2010
От: Sinix  
Дата: 13.10.10 08:42
Оценка:
Здравствуйте, Быдлокодер, Вы писали:

Б>Интересно получается.


Поздравляю — с такой "фичей" я cходил к саппорту

Проще смириться и использовать только schema view.
Re: Database project в VS 2010
От: Быдлокодер  
Дата: 13.10.10 09:01
Оценка:
Sinix, тогда можете посоветовать какой-нибудь документ с соглашениями о кодирование на T-SQL (наподобие RSDN C# Code Style http://www.rsdn.ru/article/mag/200401/codestyle.XML ) ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.