miércoles, 11 de octubre de 2023

Entrando al mundo de la Nube Tecnológica

Tiene mucho tiempo que no agrego ninguna entrada a este blog. Quise dejarlo como testigo de mi mundo laboral y personal , aunque por el tiempo ya es más un antecedente histórico.

En este momento me encuentro un poco atareada, ya que hace tres años llevo conociendo BW de SAP4HANA, SAC (SAP analytics cloud), SAP ANALYTICS en Excel y otras variedad de herramientas para poder crear DWH (Datawarehouse).

Aunque el camino me ha llevado por estos rumbos, mi perfil ya ido evolucionando hacia el Ingeniero de Datos, sé que aún me falta mucho, casi siempre y como va caminando la tecnología pareciera algo díficil de alcanzar con tantas ocupaciones personales, bueno.

He empezado a hacer pruebas con el portal de Azure de MS y también un poco con Mongo DB para empezar a trabajar los datos NOSQL, creo que antes mi mente no entendía bien los conceptos , pero poco a poco y con las herramientas de microsoft que también puedo decir tienen GOOGLE y AWS ha sido más sencillo, aunque sí el tiempo es lo que hace falta.

Por aquí iré detallando como voy por ese camino, empezando que trataré de hacer mi examén de certificación en Data fundamentals de azure, creo que es el primer paso. Ya tengo el de Databricks que un compañero cuenta que es mucho mejor aún para integrar Datalake o lago de datos, sin dintingo de estructura de datos ... donde puedes manejar toda esa información Bigdata.


Bueno , ahí la llevamos, ya dí signos de vida y por lo menos que quede mi blog no tan desertico.

viernes, 29 de abril de 2022

SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E14. Errores al ejecutar paquetes SSIS con el agent job de MSSQL

 Empezando con el tema de integración las primeras prácticas dieron como resultado varios erroes al momento de crear las tareas para MSSQL, en visual studio funcionaban correctamente.

-Errores de autenticación en los paquetes. - Sol. agregar en protection leven dontsavesensitive en proyecto y paquetes

-Errores de Permisos en la carpetas de los paquetes (estos errores comentan algo de permisos del sistema oeprativo). Sol.Agregar permiso dentro de la carpeta del paquete para que pudiera correr algun administrador.

-Errores de incompatabilidad entre las conexiones que utilizamos en la tarea y los que se utilizan en el paquete de ssis. Sol. cambiar drivers en el administrador de conexiones, en mi caso de destino sql a destino ole db.


1. Error que genero fue: started: 13:42:25 failed to execute is server package because of error 0x80131904. server problemas de ejecución.

que esto tenía que ver con la seguridad del proyecto y del paquete. 

solución: como es un entorno seguro aplique protectionlevel en el proyecto y en el paquete.


2.Error con la carga por que la conexion string era diferente.




3. Error por incompatibilidad entre la conexion para ejecutar la tarea y el driver que ejecutaba en el flujo de datos.

    Description: SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred. Error code: 0x80040E14.  An OLE DB record is available.  Source: "Microsoft SQL Server Native Client 11.0"  Hresult: 0x80040E14  Description: "No se pudo realizar la carga masiva porque el objeto de asignación de archivos SSIS 'Global\DTSQLIMPORT              

jueves, 25 de marzo de 2021

Error ingration Services " Acceso Denegado"

 Nota. Servicio de Integración corre dentro de servicios, eso no es el problema, ya esta instalado sin embargo al tratar de entrar por el Management SQL no funciona y me manda un mensaje de Error ingration Services " Acceso Denegado", pensaba que era por el Antivirus. 

Sin embargo encontré esto en la página de microsoft y me funciono correcto, tuve que agregarlo en las instancias que tenía de integration y agregar mi usuario por que el management no me dejaba poner el "sa", funcionó perfecto. 

Para conceder acceso al servicio Integration Services

  1. Ejecute Dcomcnfg.exe. Dcomcnfg.exe proporciona una interfaz de usuario para modificar algunos valores de configuración del Registro.

  2. En el diálogo Servicios de componentes, expanda el nodo Servicios de componente > Equipos > Mi PC > Configuración DCOM.

  3. Haga clic en Microsoft SQL Server Integration Services 12.0y, a continuación, haga clic en propiedades.

  4. En la pestaña Seguridad , haga clic en Editar en la sección Permisos de inicio y activación .

  5. Agregue usuarios y asigne los permisos adecuados y, a continuación, haga clic en Aceptar.

  6. Repita los pasos 4 a 5 para los permisos de acceso.

  7. Reinicie SQL Server Management Studio.

  8. Reinicie el Servicio Integration Services .

Además de esto, me siguió marcando este error 
[SQL Server Destination [64]] Error: SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred. Error code: 0x80040E14.
An OLE DB record is available.  Source: "Microsoft SQL Server Native Client 11.0"  Hresult: 0x80040E14  Description: 
"Could not bulk load because SSIS file mapping object 'Global\DTSQLIMPORT              ' 
could not be opened. Operating system error code 5(Acceso denegado.). Make sure you are accessing a local server using integrated authentication.".

Este sucedió por los permisos de ejecución, trataba de ejecutar con la conexion como "sa" a mi base de datos, lo cambie con la autenticación de windows y funcionó. // que más bien era que se quería conectar al integration, y solo logueaba con windows.




sábado, 13 de julio de 2019

Sin tu presencia

nunca pensé que te me fueras así, no sabes... ni siquiera te imaginas cuanto te extraño.

no puedo pensar en otra cosa...
mi papito lindo... no se, no se como voy a aprender a vivir sin ti... sin tus abrazos y sin tus besos ... ay mi papá... me pregunto tantas cosas y no se, no hay respuestas de ningún lado...

recuerdo tantas cosas y se me hace tan difícil... , ya hace un mes de tu ausencia...

le llamo a mi mamá sin cesar para saber como esta, inútilmente mi subconsciente esperando también escucharte... como siempre... cuando les hablaba ... y tu pregunta siempre ¿quieres hablar con tu mamá?... tu voz papá... extraño tu voz... tu risa... ay mi papito... cuanto anhelo tu abrazo...

dile a Dios que me de fuerza, dile que me ayude por que no... yo no estaba preparada para dejarte... aún teníamos tantas cosas pendientes... tantos planes... y no quiero...
no quiero... no se... no se como hacerle... 

jueves, 10 de noviembre de 2016

ACTUALIZAR DATOS SAP B1 SDK DI API C# objetos


        SAPbobsCOM.Company MiconexionCatalogo = new SAPbobsCOM.Company();/*se usa para las empresa que es la principal*/
   public void Actualizar_Sincronizado(string Objeto,string Codigo,string userSAP,string passSAP)
        {
            SAPbobsCOM.Company MiconexionCatalogo = new SAPbobsCOM.Company();
            MiconexionCatalogo.CompanyDB = "PRINCIPAL";
            MiconexionCatalogo.DbUserName = "USERBD";
            MiconexionCatalogo.DbPassword = "PASSWORD";
            MiconexionCatalogo.UserName = "ManagerSAP";/*userSAP;usuario SAP*/
            MiconexionCatalogo.Password = "ADMIN";/*passSAP;Password SAP*/
            MiconexionCatalogo.Server = "LOCALHOST";
            MiconexionCatalogo.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_MSSQL2005;
            if (Objeto=="SN" )
            {
                if (MiconexionCatalogo.Connect() != 0)
                {
                    RtxtLog.Text = RtxtLog.Text + "Error al Conectar a SAP: " + Miconexion.GetLastErrorDescription().ToString() + "\n";
                }
                else
                {
                    SAPbobsCOM.BusinessPartners Socio;
                    Socio = (SAPbobsCOM.BusinessPartners)MiconexionCatalogo.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oBusinessPartners);
                    Socio.GetByKey(Codigo);
                    Socio.UserFields.Fields.Item("U_dato").Value = 1;
                    Socio.Update();
                }
                MiconexionCatalogo.Disconnect();
            }
            else if(Objeto=="Art")
            {
                if (MiconexionCatalogo.Connect() != 0)
                {
                    RtxtLog.Text = RtxtLog.Text + "Error al Conectar a SAP: " + Miconexion.GetLastErrorDescription().ToString() + "\n";
                }
                else
                {
                    SAPbobsCOM.Items Articulo;
                    Articulo = (SAPbobsCOM.Items)MiconexionCatalogo.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oItems);
                    Articulo.GetByKey(Codigo);
                    Articulo.UserFields.Fields.Item("U_dato1").Value = 1;
                    Articulo.Update();
                }
                MiconexionCatalogo.Disconnect();
            }
            else if(Objeto=="Agente")
            {
                if (MiconexionCatalogo.Connect() != 0)
                {
                    RtxtLog.Text = RtxtLog.Text + "Error al Conectar a SAP: " + Miconexion.GetLastErrorDescription().ToString() + "\n";
                }
                else
                {
                    SAPbobsCOM.SalesPersons Agente;
                    Agente = (SAPbobsCOM.SalesPersons)MiconexionCatalogo.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oSalesPersons);
                    Agente.GetByKey(Convert.ToInt32(Codigo));
                    Agente.UserFields.Fields.Item("U_Dato").Value=1;
                    Agente.Update();
                }
                MiconexionCatalogo.Disconnect();
            }
        }
        private void eventLog1_EntryWritten(object sender, System.Diagnostics.EntryWrittenEventArgs e)
        {
        }
    }

PROGRAMAR AGREGAR DIRECCIONES BUSINESS PARTNER SAP B1 DI API C#

                        /*para agregar direcciones que exista en el cliente*/
                        sqlconAddress.Open();
                        string sQueryAddress;
                        sQueryAddress = "SELECT [Address], [CardCode], [Street], [Block], [ZipCode], [City], [Country]," +
                         "[State],[LineNum],[TaxCode],[AdresType] FROM CRD1 WHERE CardCode='" + CardCode + "' ORDER BY LineNum";
                        SqlCommand cmdAddress;
                        SqlDataReader drAddress;
                        cmdAddress = new SqlCommand(sQueryAddress, sqlconAddress);
                        drAddress = cmdAddress.ExecuteReader();
                        if (drAddress.HasRows)
                        {
                            while (drAddress.Read())
                            {
                                MiSocio.Addresses.Add();
                                MiSocio.Addresses.SetCurrentLine(Convert.ToInt32(drAddress["LineNum"].ToString()));
                                MiSocio.Addresses.AddressName = drAddress["Address"].ToString();
                                MiSocio.Addresses.Street = drAddress["Street"] == null ? string.Empty : drAddress["Street"].ToString();
                                MiSocio.Addresses.Block = drAddress["Block"] == null ? string.Empty : drAddress["Block"].ToString();
                                MiSocio.Addresses.Country = drAddress["Country"].ToString();
                                MiSocio.Addresses.ZipCode = drAddress["ZipCode"] == null ? string.Empty : drAddress["ZipCode"].ToString();
                                MiSocio.Addresses.City = drAddress["City"].ToString();
                                MiSocio.Addresses.State = drAddress["State"] == null ? string.Empty : drAddress["State"].ToString();
                                MiSocio.Addresses.TaxCode = drAddress["TaxCode"] == null ? string.Empty : drAddress["TaxCode"].ToString();
                                switch (drAddress["AdresType"].ToString())
                                {
                                    case "B":
                                        MiSocio.Addresses.AddressType = BoAddressType.bo_BillTo;
                                        break;
                                    case "S":
                                        MiSocio.Addresses.AddressType = BoAddressType.bo_ShipTo;
                                        break;
                                }
                            }
                        }
                        drAddress.Close();
                        sqlconAddress.Close();
                        /*termina de agregar direcciones*/
                        /*para agregar Agentes que exista en el cliente*/

EJEMPLO SUBIR CONTACTOS SAP B1 SDK DI API EN C#

SAPbobsCOM.BusinessPartners MiSocio;
         MiSocio = (SAPbobsCOM.BusinessPartners)Miconexion.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oBusinessPartners);
                    SAPbobsCOM.BPAddresses Direcciones;
                    Direcciones =MiSocio.Addresses;          

sqlconContact.Open();
                        string sQueryContact;
                        sQueryContact = "SELECT [CardCode], [Name], [Position], [Address], [Tel1], [Tel2], [Cellolar], [Fax], [E_MailL], [Pager],"+
                            "[Notes1], [Notes2], [Password], [BirthPlace], [Gender], [Profession], [BirthCity], [Active] FROM OCPR WHERE CardCode='"+CardCode+"'";
                        SqlCommand cmdContact;
                        SqlDataReader drContact;
                        cmdContact = new SqlCommand(sQueryContact, sqlconContact);
                        drContact = cmdContact.ExecuteReader();
                        if (drContact.HasRows)
                        {
                            int registro = 0;
                            while (drContact.Read())
                            {
                                MiSocio.ContactEmployees.Add();
                                MiSocio.ContactEmployees.SetCurrentLine(registro);
                                MiSocio.ContactEmployees.Name = drContact["Name"].ToString();
                                MiSocio.ContactEmployees.Pager = drContact["Pager"] == null ? string.Empty : drContact["Pager"].ToString();
                                MiSocio.ContactEmployees.Remarks1 = drContact["Notes1"].ToString();
                                MiSocio.ContactEmployees.Remarks2 = drContact["Notes2"].ToString();
                                MiSocio.ContactEmployees.Phone1 = drContact["Tel1"].ToString();
                                MiSocio.ContactEmployees.Phone2 = drContact["Tel2"].ToString();
                                MiSocio.ContactEmployees.Address = drContact["Address"].ToString();
                                MiSocio.ContactEmployees.Position = drContact["Position"].ToString();
                                MiSocio.ContactEmployees.MobilePhone = drContact["Cellolar"].ToString();
                                MiSocio.ContactEmployees.E_Mail = drContact["E_mailL"].ToString();
                                switch(drContact["Active"].ToString())
                                {
                                    case "Y":
                                        MiSocio.ContactEmployees.Active = BoYesNoEnum.tYES;
                                        break;
                                    case "N":
                                        MiSocio.ContactEmployees.Active = BoYesNoEnum.tNO;
                                        break;
                                }
                                registro++;
                            }
                        }
                        drContact.Close();
                        sqlconContact.Close();

EJEMPLO RELLENAR UN LISTBOX DESDE UNA VISTA SQL

      rellenar_list_box("SincroSN", LstClte, "Cardcode");



 public void rellenar_list_box(string vista,ListBox namelist,string campo)/*Rellena los listbox de articulos, agentes y socios*/
        {
            sqlcon = new SqlConnection("server=localhost;Initial Catalog=principaBD;uid=VISTA;pwd=****");
            sqlcon.Open();
            string sQuery;
            sQuery = "SELECT * from "+vista+"";
            SqlCommand cmd;
            SqlDataReader dr;
            cmd = new SqlCommand(sQuery, sqlcon);
            dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                namelist.Items.Add(dr[campo].ToString());
            }
            dr.Close();
            sqlcon.Close();
        }

TRANSACCIONES SAP B1

case when t0.transtype=18 or t0.transtype=19 then 'Servicios Tours' end as 'cod art',
case when t0.transtype=18 then 'Factura Servicios'
when t0.transtype=19 then 'Nota de Crédito'
when t0.transtype=30 then 'A/D Reclasificacion'
when t0.transtype=-3 then 'saldos finales'
when t0.transtype=59 then 'entrada de mercancía'
when t0.transtype=46 then 'pago de aceredor'
when t0.transtype=20 then 'Entrada de mercancía op'
else t0.transtype end as 'descripcion',

pedido en ordenes
oitm
articulos
maximos
minimos
consumo en el mes (suma total salidas)
pedidos articulo
suma total de stock, actual.
15--entrega
16--devoluciones
13--Factura de deudores
14--nota de crédito de clientes
132--Factura de correccion

20--Entrada de mercancias
21--Devolucion de mercancias
18---Factura de proveedores
19--nota de crédito proveedores

-2 -- saldo incial
58--actualizacion de stock
59--Entrada de mdercancias
67--traslados
68--instrucciones de produccion

-1 -- Transaccion (todas)
162 -- Revalorizacion de inventario
69-- Precio al desembarque

COMANDOS MAS USADOS SQL

COLLATE Latin1_General_CI_AS // cuando el lenguaje cambia de una bd a otra y queremos comparar datos entre ellas.

CONVERT (TIPODATO,DATO).


DATEDIFF(D,FECHA1,FECHA2) >1


ISNULL(dato,0)  //cuando un valor de el datos es nulo, lo pone en 0.

DATENAME(dw,FECHA) DW NOMBRE DIA,MONTH MES,

DATEPART(DAY, FECHA) ordinal del día 1, 2,3,4,



CONEXIONES ELIMINAR DE LA BD SQL SERVER

USE master
GO

SET NOCOUNT ON
DECLARE @DBName varchar(50)
DECLARE @spidstr varchar(8000)
DECLARE @ConnKilled smallint
SET @ConnKilled=0
SET @spidstr = ''

Set @DBName = 'pruebasres'
IF db_id(@DBName) < 4
BEGIN
PRINT 'Connections to system databases cannot be killed'
RETURN
END
SELECT @spidstr=coalesce(@spidstr,',' )+'kill '+convert(varchar, spid)+ '; '
FROM master..sysprocesses WHERE dbid=db_id(@DBName)

IF LEN(@spidstr) > 0
BEGIN
EXEC(@spidstr)
SELECT @ConnKilled = COUNT(1)
FROM master..sysprocesses WHERE dbid=db_id(@DBName)
END

LINKEAR SERVIDORES SQL

sp_linkedservers



 EXEC sp_addlinkedserver
   @server='cadsap',
   @srvproduct='',
   @provider='SQLNCLI10',
   @datasrc='SERVER'


   SELECT top 10 * FROM [SERVER].[BDPRINCIPAL].[dbo].[ocrd]
   where registrationDAte >= '20130814'