Als dit eenmalig (of zelden) is, kunt u proberen de gegevens uit de SSMS-wizard te scripten, zoals hier beschreven:
http:/ /sqlblog.com/blogs/eric_johnson/archive/2010/03/08/script-data-in-sql-server-2008.aspx
Of, als u dit vaak moet doen en het wilt automatiseren, kunt u de SQL# SQLCLR-bibliotheek (die ik heb geschreven en hoewel het meeste gratis is, is de functie die je hier nodig hebt dat niet). De functie om dit te doen is DB_DumpData en het genereert ook INSERT
verklaringen.
Maar nogmaals, als dit een eenmalige of zeldzame taak is, probeer dan de wizard voor gegevensexport die in Management Studio is ingebouwd. Dat zou u in staat moeten stellen om vervolgens het SQL-script te maken dat u in Productie kunt uitvoeren. Ik heb dit zojuist getest op een tafel met een VARBINARY(MAX)
veld met 3.365.964 bytes aan gegevens en de wizard Scripts genereren genereerde een INSERT
statement met de hele hexadecimale tekenreeks van 6,73 miljoen tekens voor die ene waarde.
UPDATE:
Een andere snelle en gemakkelijke manier om dit te doen op een manier waarmee u de hele INSERT-instructie in een SQL-script kunt kopiëren/plakken en u zich niet bezig hoeft te houden met BCP of SSMS Export Wizard, is door de waarde gewoon te converteren naar
code>XML . Eerst zou je CONVERTEREN
de VARBINARY
naar VARCHAR(MAX)
met behulp van de optionele stijl "1" die u een hexadecimale tekenreeks geeft die begint met "0x". Zodra u de hex-tekenreeks van de binaire gegevens hebt, kunt u die samenvoegen tot een INSERT
statement en dat hele ding, wanneer geconverteerd naar XML
, kan de volledige VARBINARY
. bevatten veld. Zie het volgende voorbeeld:
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;