Кажется, что SqlBulkCopy не может создавать таблицы сам по себе. Таблица назначения должна быть предопределена. В случае, когда получатель получил автоинкрементный идентификатор (int), просто используйте 1 в инструкции select, т.е.
SELECT
1,
[ColumnName],
[ColumnName]...
FROM TABLENAME
SQL Server будет обрабатывать автоматическое увеличение самостоятельно.
Я думаю, что ответ выше не совсем ясен.
Вы должны создать таблицу с SQL. Другого пути нет. И если вам нужно просто создать структуру столбцов, то это довольно просто, если ваш источник находится на одном сервере, этого достаточно:
Select * from source_table into destination_table where 1=2
Если ваш источник не находится на одном сервере (например, файл excel или dbf или что-то еще), проще всего подключиться к нему с помощью ODBC (или SQL, если это возможно) и отправить ему:
Select * from source_table where 1=2
а затем собирать результат в DataTable. Затем на втором этапе вы должны создать хранимую процедуру на конечном сервере, которая примет эту таблицу в качестве аргумента, а затем добавит ее в новую таблицу.
Чуть точнее попробуйте это для процедуры SQL: http://www.builderau.com.au/program/sqlserver/soa/Passing-table-valued-parameters-in-SQL-Server-2008/0,339028455,339282577 , 00.htm
И создайте объект SqlCommnand в c # и добавьте в его набор параметров SqlParameter, который является SqlDbType.Structured
Я не вдавался в каждую деталь, но надеюсь, что это может помочь.