Om detta är en engångssak (eller sällan) att göra, kan du prova att skripta data från SSMS-guiden enligt beskrivningen här:
http:/ /sqlblog.com/blogs/eric_johnson/archive/2010/03/08/script-data-in-sql-server-2008.aspx
Eller, om du behöver göra detta ofta och vill automatisera det, kan du prova SQL# SQLCLR-bibliotek (som jag skrev och även om det mesta är gratis, är funktionen du behöver här inte). Funktionen för att göra detta är DB_DumpData och den genererar också INSERT
uttalanden.
Men igen, om detta är en engångsuppgift eller en sällsynt uppgift, försök sedan med dataexportguiden som är inbyggd i Management Studio. Det bör tillåta dig att sedan skapa SQL-skriptet som du kan köra i produktion. Jag testade just detta i en tabell med en VARBINARY(MAX)
fält som innehåller 3 365 964 byte data och guiden Generera skript genererade en INSERT
uttalande med hela hexadecimalsträngen på 6,73 miljoner tecken för det värdet.
UPPDATERING:
Ett annat snabbt och enkelt sätt att göra detta på ett sätt som gör att du kan kopiera/klistra in hela INSERT-satsen i ett SQL-skript och inte behöva bry dig om BCP eller SSMS Export Wizard är att bara konvertera värdet till
kod>XML . Först skulle du KONVERTERA
VARBINÄR
till VARCHAR(MAX)
med den valfria stilen "1" som ger dig en sexkantsträng som börjar med "0x". När du har den hexadecimala strängen för binära data kan du sammanfoga den till en INSERT
uttalande och hela den saken, när den konverteras till XML
, kan innehålla hela VARBINARY
fält. Se följande exempel:
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;