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

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

Вот код, который я получил до сих пор:

SET @Command = 'bcp "SELECT vwTest. * From [myserver \ sql] .test.dbo.vwTest" queryout dbo.Test -C ACP -c -r \ n -t ";" -S myserver \ sql -Umyuser -Puser1 '

EXEC master.dbo.xp_cmdshell @ Command

Ответы [ 2 ]

2 голосов
/ 17 февраля 2010

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

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

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

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

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

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

1 голос
/ 17 февраля 2010

SURE !!

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

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 для получения подробной информации обо всех этих коммутаторах и их значениях.

...