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

Откуда:
Сообщений: 12
Добрый день! Пытаюсь создать схему БД с данными на MS SQL 2014 и восстановить ее на MS SQL 2005.

Делаю всё по инструкции, правой кнопкой по своей базе - Tasks - Generate Scripts - (по умолч) Next - (по умолч) Next - Advanced - для версии SQL Server 2005, индекс, триггеры, первичные ключи, Schema and data, остальное по умолчанию - дальше Next.

Создается файл script.sql больше, чем 3 Гб. Конечно при открытии жалуется на нехватку памяти, а как я путь тогда поправлю?? Здесь у меня диск D, на другом сервере диск G. Поэтому предварительно базу специально перенесла на диск С, ибо только этот диск по имени совпадает с другим сервером (принтскрин №1 без выгрузки данных, только схема для демонстрации).

Окей, ладно, теперь иду на другой сервер с версией 2005. Использую команду sqlcmd -S TRM-LIB\SQLEXPRESS -i G:\script.sql
Идет процесс, но! таблицы создаются в БД master. Попробовала просто схему создать и подгрузить, без данных, все равно в БД master таблицы появляются. Что делать? Как быть? Что я упустила?

К сообщению приложен файл. Размер - 126Kb
27 мар 18, 07:44    [21288358]     Ответить | Цитировать Сообщить модератору
 Re: Из MS SQL 2014 в MS SQL 2005  [new]
Taya_1993
Member

Откуда:
Сообщений: 12
Забыла упомянуть, что MS SQL 2014 и 2005 версии Express.
27 мар 18, 07:48    [21288366]     Ответить | Цитировать Сообщить модератору
 Re: Из MS SQL 2014 в MS SQL 2005  [new]
Massa52
Member

Откуда:
Сообщений: 379
Taya_1993,
Команду USE <база данных>
Обычно перед созданием базы должно быть USE master
а затем после
GO
USE база -- для переключение пользовательской базы
27 мар 18, 08:40    [21288459]     Ответить | Цитировать Сообщить модератору
 Re: Из MS SQL 2014 в MS SQL 2005  [new]
Massa52
Member

Откуда:
Сообщений: 379
Taya_1993,
GO
USE [master];

GO

... -- команды связанные с созданием базы

GO
USE [TIF_DATA];


GO

  
...-- создание таблиц, ...
27 мар 18, 08:47    [21288476]     Ответить | Цитировать Сообщить модератору
 Re: Из MS SQL 2014 в MS SQL 2005  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
Taya_1993
Идет процесс, но! таблицы создаются в БД master.
Либо вы в Advanced случайно отключили опцию USE DATABASE, либо команда CREATE DATABASE выполняется с ошибкой.
Проверьте наличие USE [TFI_DATA] в файле (сразу после блока ALTER DATABASE), и проверяйте результат выполнения скрипта командой sqlcmd
27 мар 18, 15:45    [21290390]     Ответить | Цитировать Сообщить модератору
 Re: Из MS SQL 2014 в MS SQL 2005  [new]
Taya_1993
Member

Откуда:
Сообщений: 12
alexeyvg, хм, действительно, оказался USE DATABASE по умолчанию false.
Спасибо)
28 мар 18, 00:07    [21291683]     Ответить | Цитировать Сообщить модератору
 Re: Из MS SQL 2014 в MS SQL 2005  [new]
Taya_1993
Member

Откуда:
Сообщений: 12
А теперь новая проблема((( пишет Cannot insert value when Identity_insert is set to off
Я конечно понимаю, что вставлять данные в Identity поле нельзя, но как тогда быть? Как мне сменить всем таблицам разом Identity_Insert на ON? Может при выгрузке схемы есть поле в Advanced?
28 мар 18, 05:33    [21291787]     Ответить | Цитировать Сообщить модератору
 Re: Из MS SQL 2014 в MS SQL 2005  [new]
Taya_1993
Member

Откуда:
Сообщений: 12
Еще оказывается только одна из таблиц может быть On, пока её не Of-неш, другую не включишь в ON((( Что же делать(
28 мар 18, 05:42    [21291799]     Ответить | Цитировать Сообщить модератору
 Re: Из MS SQL 2014 в MS SQL 2005  [new]
Taya_1993
Member

Откуда:
Сообщений: 12
Итак, очень странная ерунда. Часть таблиц спокойно заполняются данными, но у некоторых начинается IDENTITY_INSERT OFF и они не хотят получать данные.
Поэтому я выгрузила данные потаблично в sql файлики, и смогла открыть некоторые (которые не такие тяжелые) и там есть Set IDENTITY_INSERT ON, а в конце Set IDENTITY_INSERT OFF. И это есть в файле для таблицы, которая жалуется что IDENTITY_INSERT OFF! Ну как так? Получается что где-то в предыдущем файле не сработало закрытие и поэтому он открыть заново не может?
28 мар 18, 07:45    [21291874]     Ответить | Цитировать Сообщить модератору
 Re: Из MS SQL 2014 в MS SQL 2005  [new]
Taya_1993
Member

Откуда:
Сообщений: 12
Загрузила отдельно тяжелую ругающуюся табличку, используя команду sqlcmd. Отдельно она начала загружаться! Не понимаю, что там в общем файле может портить мне загрузку. Отдельно загружать около 100 очень очень очень не хочется(
28 мар 18, 08:15    [21291909]     Ответить | Цитировать Сообщить модератору
 Re: Из MS SQL 2014 в MS SQL 2005  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
Taya_1993
Итак, очень странная ерунда. Часть таблиц спокойно заполняются данными, но у некоторых начинается IDENTITY_INSERT OFF и они не хотят получать данные.
Поэтому я выгрузила данные потаблично в sql файлики, и смогла открыть некоторые (которые не такие тяжелые) и там есть Set IDENTITY_INSERT ON, а в конце Set IDENTITY_INSERT OFF. И это есть в файле для таблицы, которая жалуется что IDENTITY_INSERT OFF! Ну как так? Получается что где-то в предыдущем файле не сработало закрытие и поэтому он открыть заново не может?
Думаю, где то перед загрузкой этих данных произошла ошибка, и не выполнился IDENTITY_INSERT OFF, тем более что он почему то вставляется в текущий батч, а не в отдельный.
И соответственно не выполнился IDENTITY_INSERT ON уже для новой таблицы.
Нужно анализировать результат выполнения, например, искать по слову ERROR
Что бы результат был поменьше, для удобства поиска, нужно в начало файла скрипта добавить SET NOCOUNT ON (или в SQLCMD можно добавить файл скрипта, и он вроде выполняется в одном коннекте?)

Taya_1993
и смогла открыть некоторые (которые не такие тяжелые)
Вообще маст хэв ИТ-специалиста - нормальные средства работы с файлами, например, FAR. Что бы не было проблем посмотреть 10 Гб файл, поковыряться в нём, поискать что нибудь.
28 мар 18, 10:30    [21292347]     Ответить | Цитировать Сообщить модератору
 Re: Из MS SQL 2014 в MS SQL 2005  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
Taya_1993
Загрузила отдельно тяжелую ругающуюся табличку, используя команду sqlcmd. Отдельно она начала загружаться! Не понимаю, что там в общем файле может портить мне загрузку. Отдельно загружать около 100 очень очень очень не хочется(
Ошибка в том батче, который последний перед этой табличкой, и в котором есть IDENTITY_INSERT OFF
28 мар 18, 10:31    [21292356]     Ответить | Цитировать Сообщить модератору
 Re: Из MS SQL 2014 в MS SQL 2005  [new]
Taya_1993
Member

Откуда:
Сообщений: 12
Ошибка возникает перед RO_org по логу.
https://yadi.sk/i/SmEs5Y6D3Ttu76

Через FAR я открыла свой полный sql с данными, нашла таблицу, которая идет перед RO_org. Она называется LM_uslov.
https://yadi.sk/i/a5tWREAq3Ttu9f

Открыла эту таблицу в восстановленной базе и увидела, что записей всего 1199 и последняя из них № 491.
https://yadi.sk/i/PyaD5AP93TtuBD

Открыла исходную базу, а там всего объектов 1270 и под 1199 по счету как раз запись № 491. Получается, что ошибка в следующей записи 2000 по счету - это номер 492.
https://yadi.sk/i/KwFapflc3TtuBu

Ищу ее в своем sql с данными, нахожу и не вижу никаких кавычек лишних, вообще маленькая строка.
https://yadi.sk/i/VJHm4FI43TtuHs

Что я опять упустила?
30 мар 18, 01:30    [21297959]     Ответить | Цитировать Сообщить модератору
 Re: Из MS SQL 2014 в MS SQL 2005  [new]
Massa52
Member

Откуда:
Сообщений: 379
Taya_1993,
Обычно, в таком случае, вырезают проблемную таблицу и гонят процесс дальше.
Не известно, будут ли дальше сюрпризы?
Если все дальше пройдет без проблем - заняться вплотную этой таблицей.
На крайняк - руками перебить злостчастную запись.
30 мар 18, 03:01    [21297985]     Ответить | Цитировать Сообщить модератору
 Re: Из MS SQL 2014 в MS SQL 2005  [new]
Владислав Колосов
Member

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

почему не хотите использовать мастер экспорта для перемещения данных?
30 мар 18, 13:09    [21299103]     Ответить | Цитировать Сообщить модератору
 Re: Из MS SQL 2014 в MS SQL 2005  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
Taya_1993
Открыла исходную базу, а там всего объектов 1270 и под 1199 по счету как раз запись № 491. Получается, что ошибка в следующей записи 2000 по счету - это номер 492.
Не в 492, а в батче, который начинается на записи номер 492. Может, в какой то другой записи в этом батче ошибка.

Если можете, попробуйте вырезать этот батч, и его выполнить после выполнения скрипта загрузки. Это, конечно, если у вас есть такой редактор, который может работать с таким большим файлом.
Если нет, можно ещё сгенерить скрипт для одной этой таблички, и выполнить его в SSMS

Да, и ещё, вы всё таки посмотрите результат выполнения SQLCMD (-o output_file), если записи не вставились, то там обязательно должна быть ошибка.
30 мар 18, 16:51    [21300251]     Ответить | Цитировать Сообщить модератору
 Re: Из MS SQL 2014 в MS SQL 2005  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
А почему бы не сделать проще. Взяли поставили любой дата схема компаратор. Сравнили с пустой базой. Накатили вначале схему. Потом данные. И даже если будут ошибки можно сделать итерационно.
30 мар 18, 16:57    [21300269]     Ответить | Цитировать Сообщить модератору
 Re: Из MS SQL 2014 в MS SQL 2005  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3708
Massa52
Taya_1993,
Обычно, в таком случае, вырезают проблемную таблицу и гонят процесс дальше.
Не известно, будут ли дальше сюрпризы?
Если все дальше пройдет без проблем - заняться вплотную этой таблицей.
На крайняк - руками перебить злостчастную запись.


гонят дальше - это, например, в ранних версиях какого-нибудь 1с, где нет связей и т.д.
1 апр 18, 12:35    [21302741]     Ответить | Цитировать Сообщить модератору
 Re: Из MS SQL 2014 в MS SQL 2005  [new]
Taya_1993
Member

Откуда:
Сообщений: 12
В общем, если накатить схему отдельно, потом данные БЕЗ таблицы LM_uslov, теперь точно такая же ошибка на другой таблице причем тоже которая до RO_org идет. Так что вы были правы, дело не в данных таблицы, а будто выполнение доходит до определенной строчки (а там уж неважно какая таблица оказалась на этой строчке) и жалуется на символ ' '. Только вот я не очень понимаю выражение "ошибка в батче" - это означает что SQL сам свою конструкцию запорол и мне теперь не найти решение?

alexeyvg, результат выполнения жалуется на символ ' ' https://yadi.sk/i/SmEs5Y6D3Ttu76
Насколько я поняла, батч это от GO до следующего GO. Но если я не переносила таблицу LM_uslov, значит этот батч отсутствует и я думала что все будет хорошо, но нет.

Видимо придется по одной табличке переносить, эх. Если конечно мне не подскажут бесплатное стороннее приложение, которое может из 2014 в 2005 перенести базы.
3 апр 18, 00:31    [21306728]     Ответить | Цитировать Сообщить модератору
 Re: Из MS SQL 2014 в MS SQL 2005  [new]
Taya_1993
Member

Откуда:
Сообщений: 12
Итак, посмотрела я этот батч между GO и GO и оказалось что RO_org тоже попадает в этот проблемный батч и задумалась я, наверно там что-то не так, слава богу он не тяжелый, в MS SQL открылся, запустила его, он пожаловался на символ '', попался! И двойным щелчком по ошибке меня перенесло к строке с ошибкой, оказалось там в начале текста какие-то чуть ли не японские кракозябры и следом продолжается нормальный русский текст, удалила эти таинственные кракозябры, вроде запустился, не ругался больше на '''. Посмотрю что дальше, вдруг у меня много где такое и вдруг они тяжелее и не откроются, тогда плохо(
3 апр 18, 01:36    [21306745]     Ответить | Цитировать Сообщить модератору
 Re: Из MS SQL 2014 в MS SQL 2005  [new]
Massa52
Member

Откуда:
Сообщений: 379
Taya_1993,
Я для накатывания данных всегда использую bcp.
3 апр 18, 05:51    [21306780]     Ответить | Цитировать Сообщить модератору
 Re: Из MS SQL 2014 в MS SQL 2005  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
Taya_1993
Только вот я не очень понимаю выражение "ошибка в батче" - это означает что SQL сам свою конструкцию запорол и мне теперь не найти решение?
По разным причинам может быть ошибка в батче...

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

К сожалению, простого решения нет.

Какие варианты можно придумать?
1. нужно проверить версию SSMS, может, поправили? :-)
2. можно попытаться найти какой нибудь конвертер файлов, для замены неправильных символов.
3. установить редактор для больших файлов, и поправить эти строки (если их немного)
4. проапдейтить неправильные строки в исходной базе

Ну и вариант - пойти каким то другим путём для переноса, например, тут говорили о мастере экспорта - но это если у вас есть коннект между этими серверами.
3 апр 18, 06:48    [21306796]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить