Nếu đây là việc một lần (hoặc hiếm khi) phải làm, bạn có thể thử lấy dữ liệu ra từ Trình hướng dẫn SSMS như được mô tả tại đây:
http:/ /sqlblog.com/blogs/eric_johnson/archive/2010/03/08/script-data-in-sql-server-2008.aspx
Hoặc, nếu bạn cần thực hiện việc này thường xuyên và muốn tự động hóa nó, bạn có thể thử SQL # Thư viện SQLCLR (mà tôi đã viết và mặc dù hầu hết nó là miễn phí, nhưng chức năng bạn cần ở đây thì không). Hàm để thực hiện việc này là DB_DumpData và nó cũng tạo ra INSERT
tuyên bố.
Nhưng một lần nữa, nếu đây là nhiệm vụ một lần hoặc không thường xuyên, thì hãy thử trình hướng dẫn xuất dữ liệu được tích hợp trong Management Studio. Điều đó sẽ cho phép bạn sau đó tạo tập lệnh SQL mà bạn có thể chạy trong Sản xuất. Tôi vừa thử nghiệm điều này trên bảng có VARBINARY(MAX)
trường chứa 3,365,964 byte dữ liệu và trình hướng dẫn Tạo Tập lệnh đã tạo INSERT
câu lệnh với toàn bộ chuỗi hex gồm 6,73 triệu ký tự cho một giá trị đó.
CẬP NHẬT:
Một cách nhanh chóng và dễ dàng khác để thực hiện việc này theo cách cho phép bạn sao chép / dán toàn bộ câu lệnh INSERT vào tập lệnh SQL và không phải bận tâm đến BCP hoặc SSMS Export Wizard là chỉ cần chuyển đổi giá trị thành XML
. Đầu tiên bạn phải CONVERT
VARBINARY
thành VARCHAR(MAX)
sử dụng kiểu tùy chọn "1" cung cấp cho bạn một chuỗi hex bắt đầu bằng "0x". Khi bạn có chuỗi hex của dữ liệu nhị phân, bạn có thể nối chuỗi đó vào một INSERT
và toàn bộ nội dung đó, khi được chuyển đổi thành XML
, có thể chứa toàn bộ VARBINARY
đồng ruộng. Xem ví dụ sau:
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;