Manuell einfügen varbinary-Daten in SQL Server
Wir haben eine SQL Server-Tabelle für Benutzer-Einstellungen. Ursprünglich wurden die Einstellungen der domain-Objekte, die schon als XML serialisiert in der Tabelle, aber wir haben vor kurzem damit begonnen, serialisieren Sie als binäre.
Jedoch als Teil unserer deployment-Prozess, den wir statisch pre-füllen Sie die Tabelle mit vordefinierten Einstellungen für die Benutzer. Ursprünglich war dies so einfach wie das kopieren der XML aus einer benutzerdefinierten Datenbank und einfügen in eine INSERT-Anweisung, die ausgeführt wurde, nachdem die Datenbank aufgebaut wurde. Aber seit wir umgezogen sind, speichern Sie die Einstellungen als binäre Daten können wir nicht arbeiten.
Wie können wir extrahieren, die binäre Daten aus einer varbinary-Spalte in SQL Server und fügen Sie Sie in eine statische INSERT-Skript? Wir wollen nur die Verwendung von SQL für diese, wir wollen nicht zu verwenden, alle Dienstprogramme.
Vielen Dank im Voraus,
Jeremy
InformationsquelleAutor Jeremy Jarrell | 2009-06-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie es einfacher finden, speichern Sie eine Vorlage Wert in einer config-Tabelle irgendwo, dann Lesen Sie es in einer Variablen zu, und verwenden Sie die variable zu füllen Sie Ihre Einsätze:
InformationsquelleAutor Jeremy Smyth
Ab SQL Server 2008 können Sie mithilfe von Aufgaben > Erstellung von Skripten und wählen Sie zum einschließen von Daten. Das gibt Sie INSERT-Anweisungen für alle Zeilen in einer Tabelle, die Sie ändern können, wie gebraucht.
Hier sind die Schritte für SQL 2008. Beachten Sie, dass das "Script Data" - option in SQL 2008 R2 wird als "Arten von Daten zu script" anstelle von "Script Data".
Es half mir auch! danke!
InformationsquelleAutor Rory
Ich nehme an, Sie sind OK mit Tools wie Query Analyzer/Mangement Studio?
Können Sie einfach kopieren und fügen Sie den binären Wert, der zurückgegeben wird, die von der select-Anweisung (stellen Sie sicher, dass Sie die Rücksendung ausreichend-Daten), und das Präfix "0x" in Ihrem Skript.
Sind Sie sicher, es ist ein varbinary-Datentyp und nicht eine binäre Spalte dann?
InformationsquelleAutor David M
Wenn ich Sie richtig verstehe, möchten Sie erzeugen eine statische Skript aus Ihren Daten. Wenn dem so ist, sollten Sie eine Abfrage auf die alten Daten, die verkettet Zeichenfolgen zu bilden, die SQL-Anweisungen, die Sie wollen in das Skript.
Erste, herauszufinden, was Sie wollen, die scripted Ergebnis Aussehen soll. Beachten Sie, dass Sie benötigen, zu denken, die Werte, die Sie einfügen, die als Konstanten. Zum Beispiel:
Nun eine Abfrage erstellen, die für die alten Daten, die bekommt nur die Werte, die Sie verschieben möchten, wie diese:
Schließlich, aktualisieren Sie Ihre Abfrage ist die SELECT-Anweisung zum erzeugen einer einzigen verketteten Zeichenfolge in der form der Ausgabe, die Sie zuvor definierte:
Es ist eine verwickelte Art, Geschäfte zu machen, aber es bekommt den job getan. Sie müssen eine enge Aufmerksamkeit zum detail. Es wird damit ein kleines (aber verwirrend) - Abfrage, um eine schnelle Ausgabe einer sehr großen Anzahl von statischen DML-Anweisungen.
InformationsquelleAutor SurroundedByFish
David M ' s Vorschlag mit dem 0x-Präfix funktioniert, aber ich musste hinzufügen eine zusätzliche 0 am Ende varbinary-Daten, die ich versucht habe zu legen.
Siehe stackoverflow-Eintrag unten zu sehen, das Problem mit zusätzlichen 0, die Hinzugefügt wird, wenn die Umwandlung in varbinary oder speichern in varbinary-Spalte
Legen Sie die hex-Zeichenfolge zu sql server-image-Feld anfügen extra 0
InformationsquelleAutor Lin