powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / perenos iz Dev db to Production db
24 сообщений из 24, страница 1 из 1
perenos iz Dev db to Production db
    #32048540
vesna*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pocovetyite pls !

kak lysshe delat" perenos ( update )
stored procedure from Dev server to Producton ?

nado chtobi avtomatichecki rabotalo


spacibo !
...
Рейтинг: 0 / 0
perenos iz Dev db to Production db
    #32048548
vesna*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kak cdelat" chtobi avtomatichecki vce izmenenia v procedurax
i izmenenia v structurax tables
na dev servere perenosilis" na production server ???

pomogite pls s ideiami !!!!
...
Рейтинг: 0 / 0
perenos iz Dev db to Production db
    #32048549
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hands and only hands
...
Рейтинг: 0 / 0
perenos iz Dev db to Production db
    #32048569
vesna*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ia prosila konkretnogo coveta
...
Рейтинг: 0 / 0
perenos iz Dev db to Production db
    #32048573
Фотография Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На самом деле, такого способа, который бы автоматически это делал - нет. ИМХО и не надо. Можно, конечно, написать программульку, которая будет читать процедуры с development сервера и переносить их на production, но процесс upgrade баз данных таким образом может привести к очень непредсказуемым и тяжелым последствиям. Не зря между development and production есть еще и QA environment. На последнем и отрабатываются скрипты по модификации базы, которые потом применяются в production.
Не стоит искать то, что заменит грамотного DBA.

-- Слон
...
Рейтинг: 0 / 0
perenos iz Dev db to Production db
    #32048681
Фотография Lexis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть программа сторонних разработчиков...стоит денег
она синхронизирует все объекты в базах
на форуме где то мелькала ссылка на сайт производителя
...
Рейтинг: 0 / 0
perenos iz Dev db to Production db
    #32048898
vesna*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
na dev servere y menia rabotayt neskolko rabochix versii

mne nado dobitcia ckoree ne sinxronizacii production and dev
a naiti spocob chtobi proshe bilo perenosit" novie ili
izmenennie proceduri ( protestirovannie na staging servere ), izmenenia v table structure etd na prodution server

pocovetyite spocob
...
Рейтинг: 0 / 0
perenos iz Dev db to Production db
    #32048915
Фотография Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Способ ИМХО единственный:

Заставить всех, кто каким-либо образом связан с модификацией схем на development серверах, ВСЕ изменения оформлять в виде скриптов. Таким образом, каждый раз тестирование начинается с абсолютно точной копии production базы, затем к ней приапплаиваются скрипты, а потом происходит уже QA. Когда отлавливается баг, меняются трансформационные скрипты, процесс повторяется снова. Когда багов не остается, те же скрипты прогоняются по live базе данных. Этот метод опробован неоднократно и подтвердил свою жизнеспособность и правильность.

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

-- Слон
...
Рейтинг: 0 / 0
perenos iz Dev db to Production db
    #32049016
Фотография snake
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это видели ? Что скажете?
...
Рейтинг: 0 / 0
perenos iz Dev db to Production db
    #32049017
Фотография snake
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S.
То Слон, естественно...
...
Рейтинг: 0 / 0
perenos iz Dev db to Production db
    #32049026
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 snake. Я это не пробовал, поэтому квалифицированно ответить не могу. Но сильно подозреваю, что подобные продукты имеют определенные ограничения. Даже встроенный в MS SQL Server "скриптоватор" баз данных не может справиться с одной из проблем (я раньше об этом уже упоминал, но готов напомнить).

Как-то я попытался перенести структуру БД1, содержащую данные, в БД2 без этих самых данных. Наиболее подходящим способом показалось снять скрипты "скриптоватором" EM с БД1 и применить их на БД2. И что? Не вышло! Есть один частный случай, с которым он справиться не может, и у меня именно он и случился. А именно...

Есть таблица, к примеру, Tbl1. В этой таблице Есть поле Fld1 с констрейнтом Default. В качестве default-значения используется значение функции UDF1. Значение функции UDF1 вычисляется через содержимое таблицы Tbl1 (то есть, круг замкнулся).
Ну так вот. Приведенный пример реализуем, но ТОЛЬКО следующим способом:
1. Создается таблица (create table...) Tbl1 со всеми полями, НО БЕЗ КОНСТРЕЙНТА Default.
2. Создается функция UDF1.
3. С помощью ALTER TABLE присобачивается Default, ссылающийся на UDF1.
Что же делает "скриптоватор"? Он просто берет последнюю версию таблицы (уже со значением по умолчанию) и выдает для нее скрипт вместе с Default. При этом происходит ошибка - UDF1 еще не существует. Если попытаться создать сначала UDF1, возникнет другая ошибка - таблица Tbl1 еще не существует. Я сильно сомневаюсь, что этот продукт (или какой-либо другой) справляется с этой проблемой. И еще я сомневаюсь, что это единственная проблема, с которой не может справиться "скриптоватор".
РЕЗЮМЕ.
Слон дело говорит.
...
Рейтинг: 0 / 0
perenos iz Dev db to Production db
    #32049056
Фотография KANDed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To vesna*: Слон, как всегда, прав! У него мозгов больше всех приземленных.

То Lexis:
Simple Talk
Tips, tools & thoughts for Microsoft developers

Web site woes
Poor web performance can cost companies millions in wasted marketing money. Find out how to measure it.
www.red-gate.com/frustration_coefficient.htm

Making the ROI case
To you, the benefits of that cool new tool are obvious; to your boss, it seems little short of indulgence. IT veteran Philip Basham tells how to demonstrate real return on investment.
www.red-gate.com/return_on_investment.htm

Inside the Red Gate

• Profile your app - Take part in our beta program and give us feedback on an upcoming code profiler for optimizing performance in .NET applications:
www.red-gate.com/code_profiling.htm

• Load-test web sites and services - Check out and evaluate the latest version of ANTS:
www.red-gate.com/ants.htm

• The verdict is in - Swynk.com says that SQL Compare saved "hours of development time":
www.swynk.com/sql/lesandrini/SQLCompare.asp

• Reader's choice - SQLServerCentral.com selects SQL Compare as "Best Time-Saver":
www.red-gate.com/sql_compare_time_saving_award.htm
...
Рейтинг: 0 / 0
perenos iz Dev db to Production db
    #32049061
nic-ii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Garya: ксожалению ЕМ действительно глючно скриптует :( и это касается не только UDF функций. Создайте например ХП А которая внутри себя вызывает ХП В - этого будет достаточно чтобы запутать ЕМ который сортирует объекты по алфавиту (!!!). Так что после скриптования приходится ручками все подправлять.
А насчет тулсов от сторонних производителей: так я тут скачал trial version программки Embarcadero DBArtisan (которая кстати нашел по ссылке с этого форума :)) те-же грабли, но вид сбоку... Есть правда еще Embarcadero Change manager - он действительно сравнивает разные версии БД и успешно находит отличия, но на этом я и ограничился, т.е. сгенеренных скриптов не применял....

2 vesna*: posmotri zdes'
http://www.embarcadero.com/products/changemanager/index.asp
...
Рейтинг: 0 / 0
perenos iz Dev db to Production db
    #32049063
Фотография snake
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слону - почтение и уважение.
Но...
1.По-моему, с вышеописанным должна справлятся, галка:
Generate scripts for all dependent objects
Generate a Transact-SQL statement to add dependent objects for each object you selected on the General tab. 2.Программа, лично меня, впечатлила и денег за нее просят тоже хороших, для меня...
3.По идее ее бы проверить надо на таких исходных данных - думаю справится.
PS
Может и не прав чего...
...
Рейтинг: 0 / 0
perenos iz Dev db to Production db
    #32049161
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>По-моему, с вышеописанным должна справлятся, галка: Generate scripts for all dependent objects

snake, ты повнимательней прочти, чего я выше написал. Я понимаю, что времени маловато :). Но в двух словах, dependent objects для UDF1 - это таблица Tbl1. А dependent objects для Tbl11 - это функция UDF1. И то, и другое скриптуется, так что проблема не в галке. Проблема в том, что Tbl1 и UDF1 можно создать в целевой БД с точки зрения всех подобных программ только двумя способами:
1. Сначала Tbl1, а потом UDF1
2. Сначала UDF1, а потом Tbl1.
Однако, ни тот, ни другой способ не работает и приводит к ошибке (почему, подробнее написано выше). Обойти эту ошибку можно только создав предварительно "половину скрипта" Tbl1 (то есть, без Default) таким образом, чтобы Tbl1 в момент своего создания не ссылался на UDF1. Когда создается UDF1, Tbl1 (на который ссылается функция) уже существует (без значения по умолчанию). И только тогда, когда в БД уже присутствуют ОБА объекта, с помощью ALTER TABLE можно присобачить к таблице значение по умолчанию, ссылающееся на UDF1. Ну просто интересно узнать, какая прога сама догадается проделать все эти манипуляции.
...
Рейтинг: 0 / 0
perenos iz Dev db to Production db
    #32049185
Фотография snake
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен, не вьехал...
Берусь проверить SQLCompare для такой ситуции.
Результаты интересны?
...
Рейтинг: 0 / 0
perenos iz Dev db to Production db
    #32049200
vesna*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To snake

spacibo !
ceichac bydy testirovat" ...
vi cami etim pol"zovalis" ?
...
Рейтинг: 0 / 0
perenos iz Dev db to Production db
    #32049201
vesna*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
snake ,

resul"tati interesni !
...
Рейтинг: 0 / 0
perenos iz Dev db to Production db
    #32049227
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно, интересны!
...
Рейтинг: 0 / 0
perenos iz Dev db to Production db
    #32049231
Фотография Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Snake,

Я имею в виду такие ситуации:

Предположим, что в оригинальной версии базы данных есть таблица со столбцом Address. В этом столбце занесены данные в виде street addr;city;state;zip. Отдельные элементы адреса разделены точкой с запятой. После того, как в новой таблице было решено иметь столбец на каждый элемент, то есть address, city, state, zip, надо не только создать новые столбцы, но и заполнить их данными, а старый столбец удалить. Подобные ситуации встречаются на каждом шагу. Так вот скрипт выгладит примерно как
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
ALTER TABLE ... ADD AddressTemp......  /* Добавляем временный столбец */ 
GO
UPDATE ... SET AddressTemp = Address  /* Копируем содержание в новый столбец */ 
GO
ALTER TABLE ... ALTER COLUMN Address .....  /* изменяем тип данных */ 
GO
ALTER TABLE ... ADD City, .....  /* Adding the new columns */ 
GO
UPDATE .... SET Address = LEFT(AddressTemp, CHARINDEX(....))  /* тут надо применить алгоритм парсинга полного адреса на составляющие */ 
GO
ALTER TABLE .... DROP COLUMN AddressTemp  /* removing the old column */ 
GO

или
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
CREATE TABLE dbo.tmp_tablename
(
     ....,
     Address ...,
     City ....,
     State .....,
     Zip .....,
     ......,
) ON [.....]
INSERT dbo.tmp_tablename (..., Address, City, State, Zip, ...)
SELECT ..., dbo.fnc_FindAddress(Address), dbo.fnc_FindCity(Address), .......
FROM dbo.tablename
GO
 /* here drop all the constraints referencing the old tablename */ 
GO
DROP TABLE tablename
GO
 /* here rename the tmp_tablename into tablename*/ 
GO
 /* here restore all the old constraints, add new ones for the new columns and remove those previously referencing the old Address column */ 
GO

не думаю, чтобы хоть один тул мог поглядеть на то, что было до и то, что было после, и сказать, как разнести данные из столбца Адрес по разным столбцам.

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

-- Слон
...
Рейтинг: 0 / 0
perenos iz Dev db to Production db
    #32049270
lvv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lvv
Гость
Проблема очень интересная
Конечно DBA никто не заменит, да и не надо :))
Но когда у тебя живая прога которая каждый день подправляется, и вот представьте ситуацию в одной из процедур найдена ошибка, испраить ее дело 5 минут и еще 20 минут чтобы разнести исправления на сервера 10 филиалов. Конечно бывают ситуации когда автоматически не получится, но я думаю таких случаев единицы, а случаев который я описал ... (компьютер призван помогать человеку решать рутинные задачи)
...
Рейтинг: 0 / 0
perenos iz Dev db to Production db
    #32049277
Фотография Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, кстати - совсем забыл сказать насчет разнесения изменений. Делается это так. Когда собран пакет скриптов, делается тривиальный досовский батник - где в строгом порядке вызываются эти самые скрипты, DTS пакеты и прочее. В батнике в качестве параметров передаются имена серверов (если больше одного), имена баз данных, логины и пароли. Если надо разнести скрипты на несколько серверов, то одновременно готовится еще один батник, который будет запускать уже упомянутый батник с заменой имен, паролей и др.

-- Слон
...
Рейтинг: 0 / 0
perenos iz Dev db to Production db
    #32049321
Фотография snake
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вобщем, вот что у меня вышло, парни...
1. На вопрос - kak lysshe delat" perenos ( update ) stored procedure from Dev server to Producton ? и nado chtobi avtomatichecki rabotalo - Ответ: DTS по расписанию с Transfer Object Task.

2. На вопрос - i izmenenia v structurax tables na dev servere perenosilis" na production server ??? и nado chtobi avtomatichecki rabotalo - Ответ tygra абсолютно корректен: "hands and only hands"

3. Как результат пункта 2 - SQLCompare действительно помогает создать (руками, не на автомате) корректные скрипты измения БД, но... за исключением некоторых случаев , когда использутся default - UDF, а так же rules.
Сообщения вида:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Updating dbo.testid
Server: Msg  3716 , Level  16 , State  1 , Line  2 
The rule 'dbo.testid' cannot be dropped because it is bound to one or more column.

( 1  row(s) affected)

Server: Msg  2714 , Level  16 , State  5 , Procedure testid, Line  2 
There is already an object named 'testid' in the database.

( 1  row(s) affected)

Updating dbo.defid
Server: Msg  3716 , Level  16 , State  4 , Line  2 
The default 'dbo.defid' cannot be dropped because it is bound to one or more type.

( 1  row(s) affected)

Server: Msg  2714 , Level  16 , State  5 , Procedure defid, Line  2 
There is already an object named 'defid' in the database.

( 1  row(s) affected)

Updating dbo.Table1
The database update failed

характерны для таких случаев

4. ВСЕ не так плохо. В настройках программы SQLCompare можно указать какие обьекты БД нужно сравнивать. Кроме того, некоторые ситуации она рузруливает сама. Например, я встретил такой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
IF @@TRANCOUNT= 0  BEGIN INSERT INTO #tmpErrors (Error) SELECT  1  BEGIN TRANSACTION END
GO
if exists (select * from syscolumns where id=OBJECT_ID('[dbo].[tmp_sc_Table1]') and name='shortname' and cdefault> 0 ) EXEC ('sp_unbindefault ''[dbo].[tmp_sc_Table1].[shortname]''')

ALTER TABLE [dbo].[tmp_sc_Table1] WITH NOCHECK
ADD
 CONSTRAINT [DF_Table1_shortname] DEFAULT ([dbo].[fn_test1]('name')) FOR [shortname]
GO

при некотором манипулировании все же можно достичь, того, чего хочешь. Главное - ТОЧНО ЗНАТЬ - ЧЁ ТЕ НАДА!!!

5. То Garya - Описанная Вами ситуация: 1. Сначала Tbl1, а потом UDF1 2. Сначала UDF1, а потом Tbl1.
программой корректно не обрабатывается :(Ж

6. То Слон на не думаю, чтобы хоть один тул мог поглядеть на то, что было до и то, что было после, и сказать, как разнести данные из столбца Адрес по разным столбцам. Рассматриваемый нами тул корректно, по образу и подобию Dev server - создаст новые поля в таблицах, добавит функции; останется выполнить
Код: plaintext
1.
2.
INSERT dbo.tablename (..., Address, City, State, Zip, ...)
SELECT ..., dbo.fnc_FindAddress(Address), dbo.fnc_FindCity(Address), .......
FROM dbo.tablename
;
на сделать так, чтобы подобных проблем просто не было. - АБСОЛЮТНО СОГЛАСЕН . Все в головах наших!
P.S.
Слон дело говорит.
P.S.S.
Вопросы по SQLCompare приветствую!
...
Рейтинг: 0 / 0
perenos iz Dev db to Production db
    #32049870
vesna*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to snake

spacibo za podrobnii otvet

nasha kompania pokypaet ego

pol"zovatcia deistvitel'no ochen' ydobno
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / perenos iz Dev db to Production db
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]