С BOL :
-п
Выполняет операцию массового копирования, используя собственные типы данных (базы данных). Эта опция не запрашивает для каждого поля; он использует собственные значения.
Миллиарды строк? Тогда вы также захотите использовать:
-b batch_size
Указывает количество строк в скопированном пакете данных. Каждый пакет копируется на сервер как одна транзакция. SQL Server в случае сбоя фиксирует или откатывает транзакцию для каждого пакета.
Разве вы не можете получить доступ к двум базам данных одновременно, возможно, через Linked Server? Было бы проще.
DECLARE @StartId BIGINT
DECLARE @NmbrOfRecords BIGINT
DECLARE @RowCount BIGINT
SET @StartId = 0
SET @NmbrOfRecords = 9999
SET @RowCount = 1
WHILE @RowCount > 0
BEGIN
BEGIN TRANSACTION
INSERT INTO DestinationDatabase.dbo.Mytable
SELECT * FROM SourceDatabase.dbo.Mytable
WHERE ID BETWEEN @StartId AND @StartId + @NmbrOfRecords
SET @RowCount = @@ROWCOUNT
SET @StartId = @StartId + @NmbrOfRecords + 1
COMMIT TRANSACTION
END