Se isso for feito uma vez (ou raramente), você pode tentar fazer o script dos dados do SSMS Wizard conforme descrito aqui:
http:// /sqlblog.com/blogs/eric_johnson/archive/2010/03/08/script-data-in-sql-server-2008.aspx
Ou, se você precisar fazer isso com frequência e quiser automatizar, tente o SQL# Biblioteca SQLCLR (que eu escrevi e embora a maior parte seja gratuita, a função que você precisa aqui não é). A função para fazer isso é DB_DumpData e também gera
INSERT
declarações. Mas, novamente, se esta for uma tarefa única ou rara, tente o assistente de exportação de dados integrado ao Management Studio. Isso deve permitir que você crie o script SQL que pode ser executado em Produção. Acabei de testar isso em uma tabela com um
VARBINARY(MAX)
campo contendo 3.365.964 bytes de dados e o assistente de geração de scripts gerou um INSERT
instrução com toda a string hexadecimal de 6,73 milhões de caracteres para esse valor. ATUALIZAÇÃO:
Outra maneira rápida e fácil de fazer isso de uma maneira que permita copiar/colar a instrução INSERT inteira em um script SQL e não precisar se preocupar com o Assistente de Exportação BCP ou SSMS é apenas converter o valor para
XML
. Primeiro você CONVERT
o VARBINARY
para VARCHAR(MAX)
usando o estilo opcional de "1", que fornece uma string hexadecimal começando com "0x". Uma vez que você tenha a string hexadecimal dos dados binários, você pode concatená-la em um INSERT
declaração e tudo isso, quando convertido para XML
, pode conter todo o VARBINARY
campo. Veja o seguinte exemplo: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;