Сценарий развертывания SQL Server - PullRequest
0 голосов
/ 19 мая 2011

Я использую SQL Server 2005 для проекта asp.net.Я хочу запустить файл SQL, который содержит все изменения БД с последнего выпуска, чтобы легко привести БД к последней версии.

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

Также, если вы знаете лучший способ управления развертыванием БД, дайте мне знать!

Ответы [ 4 ]

0 голосов
/ 19 мая 2011

Я делаю что-то похожее со скриптом Powershell с использованием SMO.

Псевдокод будет:

$SDB = SourceDBObject
$TDB = TargetDBObject

ForEach $table in $SDB.Tables
{
   Add an entry to a hash table with the name 
   and some attributes (rowcount, columns, datasize)
}

# Same thing for $TDB

# Compare the two arrays, and make a list of all the ones that exist in the source but not in the target, or that are different

# Same thing for Procs and Views

# Pass this list to a SMO.Scripter as an UrnCollection object, and it will script them out in dependency order (it's an option), with drops

# Wrap the script in a transaction and execute it on target server

# Use SQLBulkCopy class to  transfer data server-to-server
0 голосов
/ 19 мая 2011
BEGIN TRANSACTION @TranName;
USE AdventureWorks2008R2;
DELETE FROM AdventureWorks2008R2.HumanResources.JobCandidate
    WHERE JobCandidateID = 13;

COMMIT TRANSACTION @TranName;

Вы должны выполнить все в рамках транзакции

0 голосов
/ 19 мая 2011

Обратите внимание, что некоторые операторы DDL должны быть первыми в пакете (пакеты отделены от транзакций). (GO является разделителем пакетов по умолчанию в SSMS и SQLCMD).

0 голосов
/ 19 мая 2011

Какую версию Visual Studio вы используете? В Visual Studio 2010 и насколько я помню Visual Studio 2008 - в меню «Данные» есть два параметра - «Сравнение схем» и «Сравнение данных». Это должно двигать вас в правильном направлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...