Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Перенос структуры БД + часть данных на другой сервер + дальнейшая синхронизация
|
|||
|---|---|---|---|
|
#18+
Добрый день all! Такая ситуация - есть база на одной машине. Там всякие тестовые данные. Надо - перенести структуру БД + справочники на другую машину (1) + в дальнейшем синхронизировать изменения полей (2) и справочных данных (3) с первой машины на вторую. Для (1) я стал использовать DTS - Task Copy SQL Server Object. На первый взгляд там все просто и ясно, я радостно запустил это дело сначала на создание новой базы и структуры, потом на копирование данных. Тут же возникли проблемы при переносе структуры - вот что она пишет в логе: ::Warning:: Transfer Status: Scripting dependent object drops The object 'dbo.fn_AuthorsOfProject' not being transfered is dependent on the table 'dbo.AuthorWorkStatus' being transfered. и это для всех вьюх, ХП и UDF. Почему так? Я ведь создаю новую БД... Далее, когда она начинает уже создавать на другой машине базу, то у неё возникают проблемы с созданием вьюх. Я смотрю скрипт по их созданию - получается, что одна из вьюх, на которую ссылаются ряд других создается после их => сообщение об ошибке. Как с этим бороться? Что вы посоветуете с (2)? Возможно ли автоматически скриптовать все изменения в структуре БД при работе через ЕМ? И насчет (3) - я совсем не знаю, как это реализовать. Киньте какую-нибудь урлу pls. С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2003, 11:27 |
|
||
|
Перенос структуры БД + часть данных на другой сервер + дальнейшая синхронизация
|
|||
|---|---|---|---|
|
#18+
Как-то странно выглядит - сначала спрашиваешь перенести структуру БД + справочники на другую машину (1) + в дальнейшем синхронизировать изменения полей (2) и справочных данных (3) с первой машины на вторую а потом Возможно ли автоматически скриптовать все изменения в структуре БД при работе через ЕМ - ?????? Перенести всю БД - сначала бэкап, потом на другой машине восстанови. Зачем через DTS ????? Изменения данных - или реплицация MS, или своя собственная ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2003, 11:36 |
|
||
|
Перенос структуры БД + часть данных на другой сервер + дальнейшая синхронизация
|
|||
|---|---|---|---|
|
#18+
Я делал так - сначала скриптом создавал структуру, только нужно поставить флажок Script all depend... object тогда те объекты, от которых зависит текущий будут заскриптованы заранее... предварительно отключал все реляции и триггеры (не забыв проставить SET IDENTITY Таблица ON) а потом DTS - ом переносил, через скрипты, со связанного сервера. (по окончании SET IDENTITY Таблица OFF) Это для каждой таблицы... затем включал все реляции и триггеры ... Более менее все гладко перенеслось, чего и Вам желаю... А синхронизация структур - можно еще и так создаю полный скрипт БД1 и полный скрипт БД2 (по одному файлу на каждый объект) а потом можно сравнивать всякими компарилками (Exam Diff) или в толзой составе VSS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2003, 11:39 |
|
||
|
Перенос структуры БД + часть данных на другой сервер + дальнейшая синхронизация
|
|||
|---|---|---|---|
|
#18+
А ещё, для переноса структуры очень удобно пользоваться механизмом "generating scripts" (см. BOL) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2003, 11:39 |
|
||
|
Перенос структуры БД + часть данных на другой сервер + дальнейшая синхронизация
|
|||
|---|---|---|---|
|
#18+
Вообще-то это репликацией решается, но, если нет возможности ее использовать, посмотри мой вариант: Структуру базы переносил следующим образом: - генерация скрипта в EM - ручная правка в QA с вычищением ненужных процедур и таблиц Данные переносятся хранимой процедурой sp_SyncronizeAll вида insert into TableName(f1, f2, f3) select f1, f2, f3 from remoteserver.db.dbo.tablename ... первый сервер подлинкован ко второму. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2003, 11:46 |
|
||
|
Перенос структуры БД + часть данных на другой сервер + дальнейшая синхронизация
|
|||
|---|---|---|---|
|
#18+
Почему DTS? т.к. процесс переноса будет определенно несколько раз повторяться, то чтобы его более-менее автоматизировать. Т.е. ситуация такая - мы делаем проект у себя в офисе, у заказчика начинается опытная эксплуатация. Мы проект потихонечку доделываем => может менятся база. В базе есть справочники заказчика + всякая наша тестовая фигня. Справочники нужно сохранить, остальное - убрать. Переношу я все на другую машину в нашем офисе, а с неё уже через недельку где-то сделают бэкап и повезут заказчику. И вот с этого времени надо будет как-то отслеживать изменения в структуре нашей БД, чтобы потом взять скриптик и запустить его у заказчика. Вопрос - как отслеживать? 2Sinner Как? "предварительно отключал все реляции и триггеры" 2All как я понял, репликация поможет? или же в свете вышеизложенного нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2003, 12:56 |
|
||
|
Перенос структуры БД + часть данных на другой сервер + дальнейшая синхронизация
|
|||
|---|---|---|---|
|
#18+
Вообще-то конечно лучше отслеживать руками и головой - тогда уж точно без проблем все будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2003, 13:04 |
|
||
|
Перенос структуры БД + часть данных на другой сервер + дальнейшая синхронизация
|
|||
|---|---|---|---|
|
#18+
1. Переносить надо только таблицы, ели возникают подобные предупреждения, возможно в default-ах стоят функции, которые обращаются к таблицам, которые не переносятся. В этом случае таблицы лучше переносить скриптом, убрав оттуда все ненужные ссылки. 2. Возможно ли автоматически скриптовать все изменения в структуре БД при работе через ЕМ? Возможно, для этого в EM есть кнопочка генерации скрипта изменений, правда до обновления структуры таблиц должны быть абсолютно одинаковые, иначе возможна потеря данных. 3. Добавлять данные в справочник однотипно на тест и на сервер заказчика через скрипт insert dictionary values ('a','b','c') , записывать все такие скрипты в специальный файл, который потом прогоняется у заказчика. Вести историю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2003, 14:12 |
|
||
|
Перенос структуры БД + часть данных на другой сервер + дальнейшая синхронизация
|
|||
|---|---|---|---|
|
#18+
Всем привет. Не стал создавать новую тем, так как гуглил и наткнулся на эту. Собственно задача та же. Есть база размером 2Тб+, в ней множество таблиц, триггеров, хранимок, вьюх итд, ну и конечно она в продакшене 24/7. Те отключать триггеры, как предложено выше у меня не получится. Пробовал через студию wizard Generate Scripts, но он отваливается на ошибке: авторMicrosoft.SqlServer.Management.SqlScriptPublish.SqlScriptPublishException: An error occurred while scripting the objects. ---> Microsoft.SqlServer.Management.Sdk.Sfc.EnumeratorException: Failed to retrieve data for this request. ---> Microsoft.SqlServer.Management.Common.ExecutionFailureException: An exception occurred while executing a Transact-SQL statement or batch. ---> System.Data.SqlClient.SqlException: The query processor ran out of internal resources and could not produce a query plan. This is a rare event and only expected for extremely complex queries or queries that reference a very large number of tables or partitions. Please simplify the query. If you believe you have received this message in error, contact Customer Support Services for more information. at Microsoft.SqlServer.Management.Common.ConnectionManager.ExecuteTSql(ExecuteTSqlAction action, Object execObject, DataSet fillDataSet, Boolean catchException) at Microsoft.SqlServer.Management.Common.ServerConnection.GetExecuteReader(SqlCommand command) --- End of inner exception stack trace --- at Microsoft.SqlServer.Management.Common.ServerConnection.GetExecuteReader(SqlCommand command) at Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteReader(String sqlCommand, SqlCommand& command) at Microsoft.SqlServer.Management.Smo.ExecuteSql.GetDataReader(String query, SqlCommand& command) at Microsoft.SqlServer.Management.Smo.DataProvider.SetConnectionAndQuery(ExecuteSql execSql, String query) at Microsoft.SqlServer.Management.Smo.ExecuteSql.GetDataProvider(StringCollection query, Object con, StatementBuilder sb, RetriveMode rm) at Microsoft.SqlServer.Management.Smo.SqlObjectBase.FillData(ResultType resultType, StringCollection sql, Object connectionInfo, StatementBuilder sb) at Microsoft.SqlServer.Management.Smo.SqlObjectBase.FillDataWithUseFailure(SqlEnumResult sqlresult, ResultType resultType) at Microsoft.SqlServer.Management.Smo.SqlObjectBase.BuildResult(EnumResult result) at Microsoft.SqlServer.Management.Smo.SqlObjectBase.GetData(EnumResult erParent) at Microsoft.SqlServer.Management.Sdk.Sfc.Environment.GetData() at Microsoft.SqlServer.Management.Sdk.Sfc.Environment.GetData(Request req, Object ci) at Microsoft.SqlServer.Management.Sdk.Sfc.Enumerator.GetData(Object connectionInfo, Request request) at Microsoft.SqlServer.Management.Sdk.Sfc.Enumerator.Process(Object connectionInfo, Request request) --- End of inner exception stack trace --- at Microsoft.SqlServer.Management.Sdk.Sfc.Enumerator.Process(Object connectionInfo, Request request) at Microsoft.SqlServer.Management.Smo.ExecutionManager.GetEnumeratorData(Request req) at Microsoft.SqlServer.Management.Smo.SqlSmoObject.InitQueryUrns(Urn levelFilter, String[] queryFields, OrderBy[] orderByFields, String[] infrastructureFields, ScriptingPreferences sp, Urn initializeCollectionsFilter, DatabaseEngineEdition edition) at Microsoft.SqlServer.Management.Smo.DefaultDatabasePrefetch.PrefetchUsingIN(String idFilter, String initializeCollectionsFilter, String type, IEnumerable`1 prefetchingList) at Microsoft.SqlServer.Management.Smo.GswDatabasePrefetch.PrefetchUsingIN(String idFilter, String initializeCollectionsFilter, String type, IEnumerable`1 prefetchingList) at Microsoft.SqlServer.Management.Smo.GswDatabasePrefetch.PrefetchBatch(String urnType, HashSet`1 urnBatch, Int32 currentBatchCount, Int32 totalBatchCount) at Microsoft.SqlServer.Management.Smo.DatabasePrefetchBase.<PrefetchObjects>d__1.MoveNext() at Microsoft.SqlServer.Management.Smo.SmoDependencyDiscoverer.SfcChildrenDiscovery(HashSet`1 discoveredUrns) at Microsoft.SqlServer.Management.Smo.SmoDependencyDiscoverer.Discover(IEnumerable`1 urns) at Microsoft.SqlServer.Management.Smo.ScriptMaker.Discover(IEnumerable`1 urns) at Microsoft.SqlServer.Management.Smo.ScriptMaker.DiscoverOrderScript(IEnumerable`1 urns) at Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptWorker(List`1 urns, ISmoScriptWriter writer) at Microsoft.SqlServer.Management.Smo.ScriptMaker.Script(Urn[] urns, ISmoScriptWriter writer) at Microsoft.SqlServer.Management.SqlScriptPublish.SqlScriptGenerator.DoScript(ScriptOutputOptions outputOptions) --- End of inner exception stack trace --- at Microsoft.SqlServer.Management.SqlScriptPublish.GeneratePublishPage.worker_DoWork(Object sender, DoWorkEventArgs e) at System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e) at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument) Подскажите, какими еще средствами можно перенести структуру БД без данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2019, 13:08 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32098697&tid=1686975]: |
0ms |
get settings: |
7ms |
get forum list: |
23ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
72ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 414ms |

| 0 / 0 |
