У меня есть пара связанных SQL-серверов: ServerA и ServerB. Я следующее заявление, которое я хотел бы выполнить:Как использовать пакетный API вставки?
INSERT INTO [ServerB].[data_collection].[dbo].[table1] SELECT * FROM [ServerA].[data_collection].[dbo].[table1]
Однако, как мне сообщили в предыдущем вопросе, я спросил here, оказывается, что неявно называемая процедура «sp_cursor» не может справиться с 766 столбцов I я пытаюсь скопировать из ServerA в ServerB, несмотря на то, что в таблице есть только одна строка.
В вышеупомянутом предыдущем вопросе мне сказали, что обходным путем является установка режима доступа «Таблица или просмотр - быстрая загрузка». К сожалению, это немного превышает мой предел знаний SQL. В комментариях к ответу на вышеупомянутый вопрос мне было сообщено следующее:
Чтобы сделать это, похоже, что вам придется выполнять свою работу в пакете SSIS. Ключ состоит в том, что под капотом выполняется INSERT BULK, в отличие от SP_cursor (который вызывал ошибку). Согласно этому вопросу MSDN нет доступа к нему напрямую - он доступен только через API Bulk Insert.
Опять же, это выходит за рамки моих знаний SQL. Итак, как получается, откуда я сейчас - имея только пару связанных серверов - до такой степени, что я могу использовать запросы INSERT BULK?
Я сделал несколько открытий. Оказывается, что я могу вставлять записи с удаленного сервера на локальный сервер, например, выполнение скриптов из ServerA, которое вставляет с ServerB на ServerA или исполнение скриптов, поступающих с ServerB, который вставляет из ServerA в ServerB. Однако я не могу вставлять записи с локального на удаленный сервер. Это, по-видимому, указывает на то, что это проблема с разрешениями, а не sp_cursor, просто неспособная обрабатывать 766 столбцов. – Karasu