Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 скопировать базу не работает  [new]
woldemarus
Member

Откуда:
Сообщений: 14
сделал мастером (ПКМ по БД, задачи->скопировать базу данных) пакет DTS на копирование БД сервер источник=сервер цель, база каждый раз должна перезаписываться.
общая цель каждодневная копия за предыдущий день. но не работает почему то. база не создается см. скрин. подскажите куда копнуть.
6 июл 18, 10:25    [21548405]     Ответить | Цитировать Сообщить модератору
 Re: скопировать базу не работает  [new]
woldemarus
Member

Откуда:
Сообщений: 14
Сообщение
Выполняется от имени пользователя: NT Service\SQLSERVERAGENT.Программа выполнения пакетов Microsoft (R) SQL Server Version 11.0.2100.60 for 64-bit (C) Корпорация Майкрософт (Microsoft Corporation). Все права защищены. Начало: 2:00:00 Ошибка: 2018-07-06 02:01:08.16 Код: 0x00000000 Источник: Задача server_Transfer объектов Описание: Произошла ошибка при передаче данных. Дополнительные сведения см. во внутреннем исключении. StackTrace: в Microsoft.SqlServer.Management.Smo.Transfer.TransferData() в Microsoft.SqlServer.Dts.Tasks.TransferObjectsTask.TransferObjectsTask.TransferDatabasesUsingSMOTransfer() InnerException-->Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding. Ошибка операции CREATE DATABASE. Некоторые из перечисленных имен файлов не были созданы. Проверьте связанные ошибки. StackTrace: в System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) в System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) в System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout, Boolean asyncWrite) в System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry) в System.Data.SqlClient.SqlCommand.ExecuteNonQuery() в Microsoft.SqlServer.Management.Smo.Transfer.ExecuteStatements(SqlConnection destinationConnection, IEnumerable`1 statements, SqlTransaction transaction) в Microsoft.SqlServer.Management.Smo.Transfer.TransferData() InnerException-->Время ожидания операции истекло Конец ошибки DTExec: завершено исполнение пакетаDTSER_FAILURE (1). Начало: 2:00:00 Готово: 2:01:08 Прошло:67.75 секунд. Не удалось выполнить пакет. Шаг завершился с ошибкой.
6 июл 18, 10:28    [21548423]     Ответить | Цитировать Сообщить модератору
 Re: скопировать базу не работает  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7762
woldemarus,

удаляйте базу перед копированием.
6 июл 18, 12:44    [21549111]     Ответить | Цитировать Сообщить модератору
 Re: скопировать базу не работает  [new]
woldemarus
Member

Откуда:
Сообщений: 14
её нет, физически, в целевом месте.
хотя выбран вариант "автоматически удалять базу с таким же именем"
6 июл 18, 14:38    [21549682]     Ответить | Цитировать Сообщить модератору
 Re: скопировать базу не работает  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31356
woldemarus
её нет, физически, в целевом месте.
И файлов нет? Всех? А место свободное есть?
6 июл 18, 14:59    [21549780]     Ответить | Цитировать Сообщить модератору
 Re: скопировать базу не работает  [new]
woldemarus
Member

Откуда:
Сообщений: 14
файлов нет, место есть (база 80 гиг места 120).
я изначально создал в той папке базу с именем = тому что я указал в мастере, но он ругнулся на то что такая база в этом месте есть, тогда базу я удалил в ручную, и штатно завершил настройку мастера. это не может как то повлиять ?
совсем чайниковый вопрос, как подредактировать этот пакет ? например поменять имя целевой базы или путь?
6 июл 18, 15:49    [21550048]     Ответить | Цитировать Сообщить модератору
 Re: скопировать базу не работает  [new]
komrad
Member

Откуда:
Сообщений: 5244
woldemarus
совсем чайниковый вопрос, как подредактировать этот пакет ? например поменять имя целевой базы или путь?


да зачем вам пакет?
всего три команды нужны (в примере используются директивы sqlcmd mode):

-- step 1 
::connect SOURCESQL
backup database YOURDATABASE to disk='path_to_BAK_file' with compression,init,checksum,copy_only,stats=1,description='preved!'
-- step 2
::connect TARGETSQL
alter database YOURDATABASE_COPY set offline with rollback immediate
-- step 3
restore database YOURDATABASE_COPY from disk='path_to_BAK_file' 
with replace,
move 'YOURDATABASE' to 'path_to_data_file_on_target_server',
move 'YOURDATABASE_log' to 'path_to_log_file_on_target_server',
stats=1


path_to_BAK_file должен быть доступен учеткам обоих сиквелов
красное и имена баз заменить на ваши значения
6 июл 18, 16:15    [21550145]     Ответить | Цитировать Сообщить модератору
 Re: скопировать базу не работает  [new]
Eleanor
Member

Откуда:
Сообщений: 2867
woldemarus
The timeout period elapsed prior to completion of the operation or the server is not responding.
Ошибка операции CREATE DATABASE.
Прошло: 67.75 секунд.

Увеличение таймаута выше 60 сек не помогает?
6 июл 18, 16:47    [21550286]     Ответить | Цитировать Сообщить модератору
 Re: скопировать базу не работает  [new]
woldemarus
Member

Откуда:
Сообщений: 14
komrad ,
спасибо когда искал пути решения этой задачи, тот ("скопировать базу") показался самым простым.
попробую ваш способ.
все же интересно почему он не работает.
6 июл 18, 16:48    [21550293]     Ответить | Цитировать Сообщить модератору
 Re: скопировать базу не работает  [new]
komrad
Member

Откуда:
Сообщений: 5244
woldemarus
все же интересно почему он не работает.

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

а в общем, если не страшитесь powershell, то поставьте себе пакет dbatools (https://dbatools.io/) - там скрипты на все случаи жизни
есть в том числе и для вашего случая: Copy-DBADatabase (https://dbatools.io/functions/copy-dbadatabase/)
6 июл 18, 16:59    [21550324]     Ответить | Цитировать Сообщить модератору
 Re: скопировать базу не работает  [new]
woldemarus
Member

Откуда:
Сообщений: 14
Eleanor
Увеличение таймаута выше 60 сек не помогает?

в каком месте этот таймаут увеличить можно ?

пробовал в качестве эксперимента другую базу скопировать, небольшого размера (чуть более гига) тоже не получилось, правда в этот раз ошибка другая "InnerException-->Пользователь, группа или роль "domain\user" уже существует в текущей базе данных."

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

результатом работы этого мастера является, создание пакета и задания в планировщике ? т.е. если откатить эти эксперименты назад достаточно будет их удалить или что то еще чистить надо ?
17 июл 18, 10:40    [21576955]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить