Я хотел бы иметь весь код DDL DB под CVS.
Мы используем Подверсию для нашего кода.NET, но весь код базы данных остается все еще неимеющим версию.
Все, что мы знаем, - то, как важная логика DB может быть. Я погуглил, но я нашел только немногих (дорогие инструменты). Я верю, там существует другое (более дешевое) решение (решения).
Какому подходу Вы советуете для следования? Какие инструменты являются самыми соответствующими?
SQL Server 2005, VS 2008 TS, TSVN
ОБНОВЛЕНИЕ, которое Наш сценарий кодирования - то, что разработчики не могут получить доступ для ПОДТАЛКИВАНИЯ DB непосредственно. Это изменяется только сценариями (таким образом, это не проблема),
Я главным образом интересуюсь средой DEV, где у всех разработчиков есть полный доступ.
Таким образом, это происходит что перезапись разработчика USP, ранее измененный другим.
Я хотел бы иметь возможность восстановить потерянную версию / сравнивают изменения USPS и т.д.
ОБНОВЛЕНИЕ 2
Для создания сценария развертывания, мы используем Красный Логический элемент, который Сравнивает SQL.
Работы отлично - так сценарии развертывания не являются случаем.
Введите этот код там, где необходимо использовать конфигурацию на основе режима (debug/release) = (development/production).
Лучше всего поместить его в файл «StartName» _ Prefix.pch.
#ifndef __OPTIMIZE__ // __OPTIMIZE__ is not enabled, it means that the active config is Debug, so here you have to put your code for development mode
// For example
#define SERVER_URL @"http://my.test.server/something"
#else //__OPTIMIZE__ is defined, so put here your production code
// For example
#define SERVER_URL @"http://my.production.server/something"
#endif // __OPTIMIZE__
Ура,
VFN
Можно использовать крюк мыши низкого уровня. См. в этом примере и проверьте наличие сообщения WM_MOUSEMOVE в BallingCallback.
Вы также можете использовать класс IMessageFilter, чтобы поймать события мыши и вызвать событие, чтобы получить позицию (примечание: это получит только позицию над окном, а не за его пределами):
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace GlobalMouseEvents
{
public partial class Form1 : Form
{
public Form1()
{
GlobalMouseHandler gmh = new GlobalMouseHandler();
gmh.TheMouseMoved += new MouseMovedEvent(gmh_TheMouseMoved);
Application.AddMessageFilter(gmh);
InitializeComponent();
}
void gmh_TheMouseMoved()
{
Point cur_pos = System.Windows.Forms.Cursor.Position;
System.Console.WriteLine(cur_pos);
}
}
public delegate void MouseMovedEvent();
public class GlobalMouseHandler : IMessageFilter
{
private const int WM_MOUSEMOVE = 0x0200;
public event MouseMovedEvent TheMouseMoved;
#region IMessageFilter Members
public bool PreFilterMessage(ref Message m)
{
if (m.Msg == WM_MOUSEMOVE)
{
if (TheMouseMoved != null)
{
TheMouseMoved();
}
}
// Always allow message to continue to the next filter control
return false;
}
#endregion
}
}
-121--2387567- Наконец, я нашел этот инструмент и подход чрезвычайно полезным и очень простым для внедрения
(по крайней мере в начале - где нет решения по управлению версиями на месте):
http://www.codeproject.com/KB/database/SQLScripter.aspx
Вы можете запустить его из коробки.
Для окончательного решения я бы склонялся к ГДР.
Если вы используете Visual Studio Team Suite или Visual Studio Developer Edition, вы имеете право на копию Visual Studio Database Professional. Она предназначена для того, чтобы делать именно то, что вы описываете, и многое другое. Мы используем его для управления схемой (кодом) нашей базы данных.
Рэнди
Мы используем Subversion для всех наших кодов базы данных. Поскольку ничто не разрешено идти в подраздел, если только он не будет в сценарии, кажется, нет никакой потери с заставить людей поставить все сценарии в Subversion. Мы склонны писать сценарии ALTER TALL для изменения таблиц с существующими данными, а затем воссоздать всю структуру таблицы в случае, если нам нужно создать новую базу данных с нуля (мы часто имеем одну и ту же структуру базы данных на нескольких серверах, что и некоторые из наших клиентов очень большие И не хочу, чтобы их данные случайно были доступны на конкурс, и поэтому платите за отдельные серверы и, следовательно, могут понадобиться вновь создать всю базу данных без данных.) Для объектов, которые не используют данные, мы сбросившимися с ординалом и воссоздать его Создать заявление. У каждого проекта есть собственный домашний репозиторий, и каждая база данных также делает, поэтому скрипт может быть в более чем одном месте для облегчения развертывания.
Но реальный ключ заключается в том, что никто не может загрузить, чтобы подписаться без скрипта. Мы не даем нашим Devs Direct Project Prod, поэтому у них нет проблем с выполнением вещей в сценариях в отличие от использования SSMS.
Если вы еще не читали его, то статья Мартина Фаулера Evolutionary Database Design - отличное место для начала.
Статью трудно обобщить, но в ней описывается, как его команда работала с версиями баз данных в быстро меняющемся процессе разработки. Они создали свои собственные инструменты для облегчения работы: скрипты для доведения пользователей до текущего мастера, для копирования любой версии схемы, чтобы пользователи могли отлаживать рабочие копии друг друга, и т.д...
Для надежного низкотехнологичного решения я нашел полезным держать под контролем исходных текстов два вида DDL-скриптов:
Они в некоторой степени избыточны, но чрезвычайно полезны (особенно, когда речь идет о развертывании).
Я писал SmOScript , который генерирует сценарий создания для каждого объекта в базе данных.
Используйте этот инструмент для генерации в каталог, покрытый CVS, и обновите свой репозиторий.
Это тоже звучит интересно:
Freeware:
http://dbsourcetools.codeplex.com/
http://www.codeproject.com/KB/database/ScriptDB4Svn.aspx
http://www.codeproject.com/KB/database/SQLScripter.aspx
http://blog.boxedbits.com/archives/133
Commercial:
http://www.nobhillsoft.com/Randolph.aspx
Если вы еще не смотрели на Visual Studio Database Edition GDR (AKA «Dude Dude»), вы должны определенно загрузить его и попробовать:
Помимо прочего, ГДР будет способствовать разработке команды, что позволяет каждому разработчику сохранить свою местную копию базы данных, версию сценариев, Создание сценариев развертывания для перемещения схемы базы данных в новую версию и даже поддержку отката базы данных.
Это бесплатно, если вы используете Team System Developer Edition. Проверьте это.