Ich habe ein Skript, das eine Datei (normalerweise Bild oder PDF) von einem SQL-Array und wenn Notwendig dekomprimiert es und kopiert dann seinen Inhalt in eine andere Zelle. Aus Gründen, die ich nicht verstehe, schlägt das Programm für einige unkomprimierte Dateien mit dem Fehler fehl: Unable to cast object of type 'Microsoft.SqlServer.Dts.Pipeline.BlobColumn' to type 'System.Byte[]'.
.Objekt des Typs 'Microsoft.SqlServer.Dts.Pipeline.BlobColumn' konnte nicht in 'System.Byte []' umgewandelt werden
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
if (Row.bitCompressed)
{
byte[] inputData = Row.imgFileContent.GetBlobData(0, (int)Row.imgFileContent.Length);
Row.FileImageOut.AddBlobData(Decompress(inputData));
}
else
{
Row.FileImageOut = Row.imgFileContent; <--- ERROR
}
}
Die Row.FilmeImageOur
ist ein Microsoft.SqlServer.Dts.Pipeline.BlobColumn Input0Buffer.FileImageOut
während Row.imgFileContent
ein Microsoft.SqlServer.Dts.Pipeline.BlobColumn Input0Buffer.imgFileContent
ist.
Bei der Suche nach der Lösung habe ich this gefunden, aber ich verstehe nicht wirklich diese Jungs Lösung und wenn es sogar anwendbar ist. Ich versuchte mit addBlobData
anstelle von =
, aber es erfordert byte
Eingabe anstelle von Blob Daten. Ich kann keine Funktionen finden, mit denen wir Blobdaten Blobdaten zuweisen können.