Как импортировать данные из представления в другой базе данных (на другом сервере) в таблицу в SQL Server 2000?

StackOverflow https://stackoverflow.com/questions/2282771

  •  21-09-2019
  •  | 
  •  

Вопрос

Я думал об использовании команды bcp для решения проблемы аутентификации пользователя, но способна ли команда bcp импортировать в таблицу в моей базе данных?Кстати, я использую среду SQL Server 2000.

Вот код, который у меня есть на данный момент:

SET @Command = 'bcp "ВЫБЕРИТЕ vwTest.* из [myserver\sql].test.dbo.vwTest" запрос dbo.Тест -C ACP -c -r -t ";" -S myserver\sql -Umyuser -Puser1'

Ведущий исполнитель.dbo.xp_cmdshell @Команда

Это было полезно?

Решение

Основанный на сравнение BCP, BULK INSERT, OPENROWSET (вывод связанного сервера) приведено здесь:

...утилита bcp выходит из процесса.Чтобы перемещать данные между областями памяти процесса, bcp должен использовать маршалинг данных между процессами.Межпроцессный маршалинг данных - это процесс преобразования параметров вызова метода в поток байтов.Это может значительно увеличить нагрузку на процессор.Однако, поскольку bcp [оба] анализирует данные и [преобразует] данные в [собственный] формат хранения в клиентском процессе, они могут выгрузить синтаксический анализ и преобразование данных из процесса SQL Server.

...bcp, возможно, не самое эффективное средство передачи данных.Возможно, вам было бы лучше:

  1. Создать связанный экземпляр сервера в другую базу данных
  2. Использование INSERT инструкции, так что таблицы заполняются на основе записей из базы данных, предоставленной в связанном экземпляре сервера.

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

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

Другие советы

КОНЕЧНО !!

Используйте эту команду (адаптируйте ее для своих нужд) на вашем исходном компьютере:

bcp database.dbo.viewname out c:\temp\viewname.bcp

а затем импортируйте данные обратно в вашу целевую систему, используя:

bcp newdatabase.dbo.importtable in c:\temp\viewname.bcp 
    -c -S(servername) -U(username) -P(password)

Это должно захватить содержимое вашего "viewname" с исходного сервера, поместить его во временный файл и вставить этот файл обратно в новую базу данных на новом сервере.

Как правило, вы загружаете эти строки данных в новую временную промежуточную таблицу и формируете там, используете T-SQL или другие средства для вставки этих данных в ваши реальные таблицы.

Ознакомьтесь с Документация MSDN по bcp в SQL Server 2000 подробнее обо всех этих переключателях и их значениях.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top