ОК, я делаю это.
Так что, если вам нужны строки ОБНОВЛЕНИЯ по назначению ODBC в SSIS, у вас есть только один способ сделать это, вам нужно использовать компонент сценария.Прежде чем я подумал, что это будет что-то вроде ODBC Command, нам нужно написать хранимую процедуру для изменения строк в месте назначения.Я связываю это с теми, кто заботится о будущем в будущем.
Преобразование «Команда OLE DB» выполняет оператор SQL для каждой строки в потоке данных.Например, вы можете запустить оператор SQL, который вставляет, обновляет или удаляет строки в таблице базы данных. Описание команды Microsoft OLE DB
Я написал простой код на c # для обновления строк, и он отлично работает.Вы можете просто перестроить его для выполнения процедуры или делать все, что вам нужно.
public class ScriptMain : UserComponent
{
OdbcConnection odbcConn;
OdbcCommand odbcCmd;
OdbcParameter odbcParam;
public override void AcquireConnections(object Transaction)
{
/// Create a String base on that which u define on package for connection and
adding a password
string connectionString;
connectionString = this.Connections.SFConnection.ConnectionString;
odbcConn = new OdbcConnection(connectionString + "PWD=YOURPASSWORD");
odbcConn.Open();
}
public override void PreExecute()
{
///Create command which we wanna execute
base.PreExecute();
odbcCmd = new OdbcCommand("UPDATE klienci SET IMIE= ?,NAZWISKO= ? ,NUMER_TELEFONU= ? ,EMAIL= ? ,ULICA= ? ,MIASTO= ? ,STATE= ? ,ZIP_CODE = ? WHERE CUSTOMER_ID= ?", odbcConn);
}
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
///Adding parameters and connecting them with our input column from package
odbcCmd.Parameters.AddWithValue("@IMIE", Row.Sourcefirstname);
odbcCmd.Parameters.AddWithValue("@NAZWISKO", Row.Sourcelastname);
odbcCmd.Parameters.AddWithValue("@NUMER_TELEFONU", Row.Sourcephone);
odbcCmd.Parameters.AddWithValue("@EMAIL", Row.Sourceemail);
odbcCmd.Parameters.AddWithValue("@ULICA", Row.Sourcestreet);
odbcCmd.Parameters.AddWithValue("@MIASTO", Row.Sourcecity);
odbcCmd.Parameters.AddWithValue("@STATE", Row.Sourcestate);
odbcCmd.Parameters.AddWithValue("@ZIP_CODE", Row.Sourcezipcode);
odbcCmd.Parameters.AddWithValue("@CUSTOMER_ID", Row.Sourcecustomerid);
odbcCmd.ExecuteNonQuery();
}
}