2010-01-05 10 views

risposta

0

Perché stai utilizzando il componente di script per questo? Inoltre, non sono sicuro che un NVARCHAR (MAX) si qualifica realmente come una colonna BLOB.

Se si vuole fare come parte di un'attività del flusso di dati, sulla vostra origine dati, impostare la modalità di accesso ai dati per 'SQL Comando' quindi utilizzare il seguente testo del comando:

select left(OrganisationProviderID,20) as OrganisationProviderID 
from src 

quindi collegare questo al tuo componente di destinazione.

24

Qui è la funzione che uso per convertire BlobColumn a stringa in SSIS Script Components

string BlobColumnToString(BlobColumn blobColumn) 
{ 
    if (blobColumn.IsNull) 
     return string.Empty; 

    var blobLength = Convert.ToInt32(blobColumn.Length); 
    var blobData = blobColumn.GetBlobData(0, blobLength); 
    var stringData = System.Text.Encoding.Unicode.GetString(blobData); 

    return stringData; 
} 
+0

Sono curioso, c'è qualche vantaggio di passare in modo esplicito nella lunghezza a GetBlobData()? – JasonHorner

+0

@JasonHorner Non c'è un sovraccarico per non passare la lunghezza di 'Byte Array'. Probabilmente perché lo hanno fatto in questo modo – user1

+1

Questa soluzione ha funzionato per me quando ho cambiato var stringData = Encoding.Unicode.GetString (blobData); a var stringData = Encoding.Default.GetString (blobData); – Khaneliman