Jeśli jest to jednorazowa (lub rzadko) rzecz do zrobienia, możesz spróbować wypisać dane z kreatora SSMS, jak opisano tutaj:
http:// /sqlblog.com/blogs/eric_johnson/archive/2010/03/08/script-data-in-sql-server-2008.aspx
Lub, jeśli musisz robić to często i chcesz to zautomatyzować, możesz wypróbować SQL# Biblioteka SQLCLR (którą napisałem i chociaż większość z nich jest darmowa, funkcja, której tutaj potrzebujesz, nie jest). Służy do tego funkcja DB_DumpData a także generuje INSERT
oświadczenia.
Ale znowu, jeśli jest to jednorazowe lub rzadkie zadanie, wypróbuj kreatora eksportu danych wbudowanego w Management Studio. Powinno to pozwolić na utworzenie skryptu SQL, który można uruchomić w środowisku produkcyjnym. Właśnie przetestowałem to na stole z VARBINARY(MAX)
pole zawierające 3 365 964 bajty danych, a kreator Generuj skrypty wygenerował INSERT
oświadczenie z całym ciągiem szesnastkowym składającym się z 6,73 miliona znaków dla tej jednej wartości.
AKTUALIZACJA:
Innym szybkim i łatwym sposobem na zrobienie tego w sposób, który umożliwiłby skopiowanie / wklejenie całej instrukcji INSERT do skryptu SQL bez konieczności zawracania sobie głowy kreatorem eksportu BCP lub SSMS, jest po prostu przekonwertowanie wartości na XML
. Najpierw CONVERT
VARBINARY
do VARCHAR(MAX)
używając opcjonalnego stylu „1”, który daje ciąg szesnastkowy zaczynający się od „0x”. Gdy masz już ciąg szesnastkowy danych binarnych, możesz połączyć go w INSERT
oświadczenie i to wszystko, po przekonwertowaniu na XML
, może zawierać całe VARBINARY
pole. Zobacz następujący przykład:
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;