2011-01-28 38 views
8

Tôi cần tạo tập lệnh chèn SQL để sao chép dữ liệu từ một Máy chủ SQL sang một Máy chủ SQL khác. Vì vậy, với .net, tôi đang đọc dữ liệu một bảng SQL Server đã cho và ghi nó vào một tệp văn bản mới mà sau đó có thể được thực hiện để chèn dữ liệu này vào các cơ sở dữ liệu khác.Làm thế nào để kịch bản VARBINARY để sao chép nó từ một DB khác bằng cách sử dụng một kịch bản?

Một trong các cột là VARBINARY (MAX).
Làm cách nào và tôi có thể chuyển đổi byte thu được [] thành văn bản cho tập lệnh để nó vẫn có thể được chèn vào cơ sở dữ liệu khác không?

SSMS hiển thị dữ liệu này dưới dạng chuỗi hex. Đây có phải là định dạng để sử dụng không? Tôi có thể nhận định dạng tương tự với

BitConverter.ToString(<MyByteArray>).Replace("-", "") 

Nhưng làm cách nào để chèn lại?
tôi đã cố gắng

CONVERT(VARBINARY(MAX), "0xMyHexString") 

này làm một chèn, nhưng giá trị không giống như trong bảng nguồn.

+0

Có lý do nào bạn không muốn sử dụng chức năng Sao chép hàng loạt hoặc SSIS không? – Tony

+0

Có, tôi bao gồm các tập lệnh được tạo bằng một ứng dụng chỉ chạy tập lệnh này. Ứng dụng đã tồn tại và mọi thứ hoạt động tốt cho đến giờ nên tôi không muốn thay đổi điều này. Nó vẫn chưa hoạt động với các cột VARBINARY. – Marc

Trả lời

13

Hóa ra bạn có thể chỉ trực tiếp chèn chuỗi hex, không cần phải chuyển đổi bất cứ điều gì :

INSERT TableName (VarBinColumnName) 
VALUES (0xMyHexString) 

Chỉ cần không hỏi tại sao tôi không kiểm tra trực tiếp ...

+0

Tại sao bạn không kiểm tra trực tiếp điều này? – TPAKTOPA

Các vấn đề liên quan