SQL Server управления версиями код DDL

Я хотел бы иметь весь код DDL DB под CVS.

Мы используем Подверсию для нашего кода.NET, но весь код базы данных остается все еще неимеющим версию.

Все, что мы знаем, - то, как важная логика DB может быть. Я погуглил, но я нашел только немногих (дорогие инструменты). Я верю, там существует другое (более дешевое) решение (решения).

Какому подходу Вы советуете для следования? Какие инструменты являются самыми соответствующими?

SQL Server 2005, VS 2008 TS, TSVN

ОБНОВЛЕНИЕ, которое Наш сценарий кодирования - то, что разработчики не могут получить доступ для ПОДТАЛКИВАНИЯ DB непосредственно. Это изменяется только сценариями (таким образом, это не проблема),

Я главным образом интересуюсь средой DEV, где у всех разработчиков есть полный доступ.
Таким образом, это происходит что перезапись разработчика USP, ранее измененный другим.
Я хотел бы иметь возможность восстановить потерянную версию / сравнивают изменения USPS и т.д.

ОБНОВЛЕНИЕ 2
Для создания сценария развертывания, мы используем Красный Логический элемент, который Сравнивает SQL.
Работы отлично - так сценарии развертывания не являются случаем.

6
задан Tarik 11 June 2014 в 11:42
поделиться

8 ответов

Введите этот код там, где необходимо использовать конфигурацию на основе режима (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

-121--3978061-

Можно использовать крюк мыши низкого уровня. См. в этом примере и проверьте наличие сообщения 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

Вы можете запустить его из коробки.
Для окончательного решения я бы склонялся к ГДР.

1
ответ дан 9 December 2019 в 22:35
поделиться

Если вы используете Visual Studio Team Suite или Visual Studio Developer Edition, вы имеете право на копию Visual Studio Database Professional. Она предназначена для того, чтобы делать именно то, что вы описываете, и многое другое. Мы используем его для управления схемой (кодом) нашей базы данных.

Рэнди

1
ответ дан 9 December 2019 в 22:35
поделиться

Мы используем Subversion для всех наших кодов базы данных. Поскольку ничто не разрешено идти в подраздел, если только он не будет в сценарии, кажется, нет никакой потери с заставить людей поставить все сценарии в Subversion. Мы склонны писать сценарии ALTER TALL для изменения таблиц с существующими данными, а затем воссоздать всю структуру таблицы в случае, если нам нужно создать новую базу данных с нуля (мы часто имеем одну и ту же структуру базы данных на нескольких серверах, что и некоторые из наших клиентов очень большие И не хочу, чтобы их данные случайно были доступны на конкурс, и поэтому платите за отдельные серверы и, следовательно, могут понадобиться вновь создать всю базу данных без данных.) Для объектов, которые не используют данные, мы сбросившимися с ординалом и воссоздать его Создать заявление. У каждого проекта есть собственный домашний репозиторий, и каждая база данных также делает, поэтому скрипт может быть в более чем одном месте для облегчения развертывания.

Но реальный ключ заключается в том, что никто не может загрузить, чтобы подписаться без скрипта. Мы не даем нашим Devs Direct Project Prod, поэтому у них нет проблем с выполнением вещей в сценариях в отличие от использования SSMS.

1
ответ дан 9 December 2019 в 22:35
поделиться

Если вы еще не читали его, то статья Мартина Фаулера Evolutionary Database Design - отличное место для начала.

Статью трудно обобщить, но в ней описывается, как его команда работала с версиями баз данных в быстро меняющемся процессе разработки. Они создали свои собственные инструменты для облегчения работы: скрипты для доведения пользователей до текущего мастера, для копирования любой версии схемы, чтобы пользователи могли отлаживать рабочие копии друг друга, и т.д...

Для надежного низкотехнологичного решения я нашел полезным держать под контролем исходных текстов два вида DDL-скриптов:

  • Мастер-версию, которая может создавать объекты БД с нуля.
  • 'Скрипты обновления версии' для каждой итерации разработки.

Они в некоторой степени избыточны, но чрезвычайно полезны (особенно, когда речь идет о развертывании).

3
ответ дан 9 December 2019 в 22:35
поделиться

Я писал SmOScript , который генерирует сценарий создания для каждого объекта в базе данных.

Используйте этот инструмент для генерации в каталог, покрытый CVS, и обновите свой репозиторий.

1
ответ дан 9 December 2019 в 22:35
поделиться

Посмотрите, подходит ли вам Wizardby .

0
ответ дан 9 December 2019 в 22:35
поделиться

Если вы еще не смотрели на Visual Studio Database Edition GDR (AKA «Dude Dude»), вы должны определенно загрузить его и попробовать:

http://www.microsoft.com/downloads/ Детали .aspx? FamilyID = BB3AD767-5F69-4DB9-B1C9-8F55759846ED & DisplayLang = En

Помимо прочего, ГДР будет способствовать разработке команды, что позволяет каждому разработчику сохранить свою местную копию базы данных, версию сценариев, Создание сценариев развертывания для перемещения схемы базы данных в новую версию и даже поддержку отката базы данных.

Это бесплатно, если вы используете Team System Developer Edition. Проверьте это.

2
ответ дан 9 December 2019 в 22:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: