Если это делается один раз (или редко), вы можете попробовать создать сценарий для данных из мастера SSMS, как описано здесь:
http://sqlblog.com/blogs/eric_johnson/archive/2010/03/08/script-data-in-sql-server-2008.aspx
Или, есливам нужно делать это часто и хотеть автоматизировать, вы можете попробовать библиотеку SQL # SQLCLR (которую я написал, и хотя большая ее часть бесплатна, нужной вам функции здесь нет).Для этого используется функция DB_DumpData , которая также генерирует операторы INSERT
.
Но, опять же, если это одноразовая или нечастая задача, попробуйте встроенный мастер экспорта данных.в студии управления.Это должно позволить вам затем создать сценарий SQL, который вы сможете запустить в Production.Я только что проверил это на таблице с полем VARBINARY(MAX)
, содержащим 3 365 964 байта данных, и мастер создания сценариев сгенерировал оператор INSERT
со всей шестнадцатеричной строкой из 6,73 миллиона символов для этого одного значения.
ОБНОВЛЕНИЕ:
Еще один быстрый и простой способ сделать это способом, который позволил бы вам скопировать / вставить весь оператор INSERT в сценарий SQL и не беспокоиться о мастере экспорта BCP или SSMS, заключается впросто конвертируйте значение в XML
.Сначала вы должны CONVERT
от VARBINARY
до VARCHAR(MAX)
, используя необязательный стиль «1», который дает шестнадцатеричную строку, начинающуюся с «0x».Если у вас есть шестнадцатеричная строка двоичных данных, вы можете объединить ее в оператор INSERT
, и все это при преобразовании в XML
может содержать все поле VARBINARY
.Смотрите следующий пример:
DECLARE @Binary VARBINARY(MAX) = CONVERT(VARBINARY(MAX),
REPLICATE(
CONVERT(NVARCHAR(MAX), 'test string'),
100000)
)
SELECT 'INSERT INTO dbo.TableName (ColumnName) VALUES ('+
CONVERT(VARCHAR(MAX), @Binary, 1) + ')' AS [Insert]
FOR XML RAW;