Стоит ли хранить хранимые процедуры SQL в Source Control? - PullRequest
11 голосов
/ 20 февраля 2009

При разработке приложения с большим количеством хранимых процедур следует ли хранить их в какой-либо системе управления версиями исходного кода (например, source-safe, TFS, SVN)? Если так, то почему? И есть ли удобный способ сделать это с помощью SQL Server Management Studio?

Ответы [ 17 ]

25 голосов
/ 20 февраля 2009

Да. Весь код должен храниться в системе контроля версий.

Проще говоря, код - это код, и случаются ошибки. Приятно иметь возможность вернуться и посмотреть, что изменилось со временем, и иметь возможность вернуться к этим изменениям.

Мы должны добавить его вручную в систему управления версиями, но вы можете создавать дополнения для Sql Server в Системе управления. Я никогда не создавал такой, чтобы автоматически добавлять его в систему контроля версий, но, полагаю, вы могли бы. Кроме того, весь код хранится в таблицах sql, так что теоретически вы можете создать процесс или что-то, чтобы пройти через таблицы, получить весь код и автоматически его зафиксировать.

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

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE 
id = OBJECT_ID(N'[dbo].[SomeStoredProcedure]') AND 
OBJECTPROPERTY(id,N'IsProcedure') = 1)

EXEC sp_executesql N'CREATE PROCEDURE [dbo].[SomeStoredProcedure] AS

SELECT ''SPROC Template'''

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

 ALTER PROCEDURE SomeStoredProcedure

Выполнение удаления и повторного создания приведет к удалению всех пользовательских разрешений, которые вы для него настроили.

23 голосов
/ 20 февраля 2009

АБСОЛЮТНО ПОЗИТИВНО БЕЗ ВОПРОСА НИКАКИХ ИСКЛЮЧЕНИЙ ПО ВСЕЙ ВЗЛОМЕ ВСЕГО ВСЕГО ВСЕГО!

7 голосов
/ 20 февраля 2009

Получите вашу базу данных под контролем версий . Проверьте серию сообщений Скотта Аллена.

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

4 голосов
/ 20 февраля 2009

Хранение хранимых процедур - отличная идея. Это боль, хотя. Просто как вы все эти вещи в подрывной деятельности? Вы можете сделать это вручную, но тогда это утомительно, и в итоге вы вообще этого не делаете.

Я использую инструмент из дозвукового проекта .

sonic.exe version /server servername /db databasename /out outputdirectory 

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

Теперь, когда у вас есть эти два файла, вы можете использовать subversion (cvs, source safe), чтобы переместить его в систему контроля версий.

Дополнительная информация для с использованием инструмента командной строки (SubCommander)

4 голосов
/ 20 февраля 2009

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

Вот хороший способ легко сохранить ваши сохраненные Procs в файлы, которые вы можете добавить в любой источник управления по вашему желанию.

Хранимые процедуры в файлах .sql

4 голосов
/ 20 февраля 2009

Определенно, да. Тогда возникает вопрос, как вы храните их в системе контроля версий. Вы удаляете и воссоздаете хранимую процедуру или просто изменяете, добавляете ли вы разрешения в конце скрипта или в отдельный скрипт. Некоторое время назад была статья о Coding Horror, которая показалась мне интересной. Ваша база данных находится под контролем версий?

2 голосов
/ 20 февраля 2009

SQL - это код. Весь код находится под контролем исходного кода.

Это все.

2 голосов
/ 20 февраля 2009

Конечно, вы должны.

В MS SQL 2008 вы можете сделать это прямо из Management Studio .

1 голос
/ 20 февраля 2009

Определенно.

1 голос
/ 20 февраля 2009

Абсолютно. Положительно.

Набор SP - это интерфейс, который может изменяться чаще, чем структурные изменения. А поскольку SP содержат бизнес-логику, изменения должны храниться в системе контроля версий, чтобы отслеживать изменения и корректировки логики.

Хранение этих данных в системе контроля версий является признаком зрелости организации на уровне кодирования и является лучшей практикой.

...