Si esto es algo que se debe hacer una sola vez (o rara vez), puede intentar generar una secuencia de comandos de los datos desde el Asistente de SSMS como se describe aquí:
http:/ /sqlblog.com/blogs/eric_johnson/archive/2010/03/08/script-data-in-sql-server-2008.aspx
O bien, si necesita hacer esto con frecuencia y desea automatizarlo, puede probar SQL# Biblioteca SQLCLR (que escribí y aunque la mayor parte es gratuita, la función que necesita aquí no lo es). La función para hacer esto es DB_DumpData y también genera INSERT
declaraciones.
Pero, de nuevo, si se trata de una tarea única o poco frecuente, pruebe el asistente de exportación de datos integrado en Management Studio. Eso debería permitirle crear el script SQL que puede ejecutar en producción. Acabo de probar esto en una tabla con un VARBINARY(MAX)
que contiene 3 365 964 bytes de datos y el asistente Generar scripts generó un INSERT
instrucción con la cadena hexadecimal completa de 6,73 millones de caracteres para ese valor.
ACTUALIZACIÓN:
Otra forma rápida y fácil de hacer esto de una manera que le permita copiar/pegar la declaración INSERT completa en un script SQL y no tener que molestarse con BCP o SSMS Export Wizard es simplemente convertir el valor a XML
. Primero CONVERT
el VARBINARY
a VARCHAR(MAX)
usando el estilo opcional de "1" que le da una cadena hexadecimal que comienza con "0x". Una vez que tenga la cadena hexadecimal de los datos binarios, puede concatenarla en un INSERT
declaración y todo eso, cuando se convierte a XML
, puede contener el VARBINARY
completo campo. Vea el siguiente ejemplo:
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;