Frage

Ich brauche ein paar BLOB-Daten aus einer SQL Server 2005-Datenbank zu ziehen und einen SQL-Skript generieren diese gleichen Daten in einer anderen Datenbank einzufügen, in einem anderen Server.

Ich bin nur erlaubt dies mit SQL-Skripten zu tun, ich kann kein anderes Programm verwenden oder ein Programm in Java oder .NET schreiben, es zu tun.

Die andere große Einschränkung ich habe, ist, dass ich keinen Zugriff auf die Originaldatenbank (wo die ursprünglichen BLOB-Daten sind), wenn ich das Skript ausführen, die BLOB-Daten in die Zieldatenbank zu kopieren, so bereits die Daten sollten innerhalb der SQL-Skriptdatei codiert werden.

Fazit: Gibt es eine Möglichkeit, die BLOB-Daten in Text zu codieren, so dass ich es in einen SQL-INSERT-Befehl in einer Skript Textdatei abladen kann und führen Sie es

?

Ich bin in der Lage spezielle T-SQL-Anweisungen und gespeicherte Prozeduren ausgeführt werden, wenn nötig zu.

War es hilfreich?

Lösung

TEXTCOPY war eine Beispielanwendung in SQL Server enthalten 7.0 und 2000 aber nicht mehr verfügbar in SQL Server 2005.

Doch für TEXTCOPY in SQL Server googeln 2005, fand ich diese Alternative, die den Trick tun könnte:

http://sequelserver.blogspot.com/2007 /01/texcopy-sql-server-2005.html

Es stützt sich auf dem Schreiben und die binären Daten aus dem Dateisystem zu lesen, was in meinem Fall nicht ideal ist (im Idealfall würde Ich mag die binären Daten mit der SQL-Skript Textdatei selbst kodieren), aber es ist das Beste, was ich gefunden habe, so weit.

Hier ist eine andere gute Quelle, wie binäre Import / Export-Operationen mit MASSE OPENROWSET zu tun: http://msdn.microsoft.com/en-us/library/ms191184. aspx

Andere Tipps

In diesem Artikel " Kopieren Sie Text oder Bild in die oder aus SQL Server " könnte helfen:

Sie können das TEXTCOPY Kommandozeilen-Tool in einer gespeicherten Prozedur integrieren:

CREATE PROCEDURE sp_textcopy (
  @srvname     varchar (30),
  @login       varchar (30),
  @password    varchar (30),
  @dbname      varchar (30),
  @tbname      varchar (30),
  @colname     varchar (30),
  @filename    varchar (30),
  @whereclause varchar (40),
  @direction   char(1))

AS

DECLARE @exec_str varchar (255)
SELECT @exec_str =
         'textcopy /S ' + @srvname +
         ' /U ' + @login +
         ' /P ' + @password +
         ' /D ' + @dbname +
         ' /T ' + @tbname +
         ' /C ' + @colname +
         ' /W "' + @whereclause +
         '" /F ' + @filename +
         ' /' + @direction
EXEC master..xp_cmdshell @exec_str

Sie werden sich ändern müssen / verlängern sie ein wenig, um die erzeugte Datei in die andere Datenbank zu lesen.

Wie Vinko im Kommentar zu dieser Antwort schreibt, halten Sie daran, dass dies erfordert in der Oberfläche ermöglicht xp_cmdshell Bereich Konfiguration.

Beschreibung TEXTCOPY:

Kopiert ein einzelner Text- oder Bildwert in oder aus SQL Server. Der Wert Text oder Bild ‚Spalte‘ einer einzelnen Zeile eine spezifizierte (durch die festgelegte "Where-Klausel") des angegebenen 'Tisch'.

Wenn die Richtung IN (/ I) ist dann die Daten aus der angegebenen ‚Datei‘ sind in SQL Server kopiert, den vorhandenen Text oder Bildwert zu ersetzen. wenn die Richtung OUT (/ A), dann wird der Text oder Bildwert kopiert wird aus SQL Server in der angegebenen 'Datei', eine vorhandene Datei zu ersetzen.

Werfen Sie einen Blick auf diese Frage und die Suche nach bcp auf der Seite - Beispiel sowohl Import und Export für varbinary (max) hat (das ist der neue Standard-Typ für solche Spalten ist). Sie können beliebige Abfrage für den Export aus.

Wie einfügen ein Blob in eine Datenbank sQL Server Management Studio

mit
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top