Я виявив, що BCP є більш ефективним, ніж деякі інструменти для отримання даних у більш ранній версії SQL Server та для витягу даних з RDS. (Дякую @ivan_posdeev.)
Я спочатку генерую схему, клацнувши правою кнопкою миші на базі даних в SQL Server Management Studio, Завданнях, Створити сценарії. Поставте галочку на всіх об'єктах, у вдосконалених об'єктах переконайтеся, що все, що вам потрібно буде сценарій (статистика, індекси тощо), зніміть позначку "База даних USE", якщо ваша база даних має інше ім'я, встановіть сумісність з цільовою версією бази даних та створіть файл, який створює вашу схему. Створення бази даних за місцем призначення і запустити цей файл на нього ( з допомогою osql, sqlcmdабо GUI).
Щоб перемістити дані, запустіть наступний запит двічі у вихідній базі даних, спочатку коментуючи другий стовпець, щоб створити пакетний файл для вилучення даних, потім коментуючи перший стовпець, щоб генерувати пакетний файл імпорту, який запускається у вашому пункті призначення. (Вам потрібно додати джерела та сервери призначення, імена екземплярів, каталоги вихідних та вхідних файлів, імена користувачів та паролі. Для використання інтегрованої безпеки замініть -Uі -Pпараметри на просто -T.)
Це підтримує Unicode, якщо вам це не потрібно, змініть -Nперемикач в обох операторах на -n.
SELECT
'bcp SOURCEDATABASE.' + s.Name + '.' + t.NAME + ' out d:\dbdump\' + s.Name + '.' + t.NAME + '.dat -N -S SOURCESERVER\INSTANCE -UUSER -PPASSWORD'
-- 'bcp DESTINATIONDATASE.' + s.Name + '.' + t.NAME + ' in d:\dbdump\' + s.Name + '.' + t.NAME + '.dat -N -S DESTINATIONSERVER\INSTANCE -UUSER -PPASSWORD -E -h TABLOCK -b 1000 -e d:\dbdump\' + s.Name + '.' + t.NAME + '.ERRORS.dat'
FROM
sys.tables t
INNER JOIN
sys.indexes i ON t.OBJECT_ID = i.object_id
LEFT OUTER JOIN
sys.schemas s ON t.schema_id = s.schema_id
ORDER BY
s.Name, t.NAME
Після запуску перевірки файлів з назвою schema.tablename.ERRORS.dat - буде включати будь-які рядки, які не вдалися, порожні, якщо такі не зробили.
Посилання MSDN на BCP тут , більш дружнє проходження варіантів BCP тут .
Я виявив, що це надзвичайно перевершує створення сценаріїв та будь-який із інструментів, які я спробував. Він також працює на базах даних RDS (які не дозволяють створювати резервні копії). Згенеровані файли даних мають розмір сценаріїв SQL на 30%, запуск їх займає частину часу і набагато надійніше. (Сценарії , створювані SQL Server для даних сценаріїв завжди підставляли, іноді передбачувано , іноді немає, SQL генеруватися не сумісний з 2008R2 (наприклад, використовується nvarchar(0), часто не завершена без будь-якої видимої причини і т.д. BCP також дублює будь-які порушення обмежень , наприклад, референтна цілісність.).