SQL08: Sincronització de la base de dades de Microsoft Dynamics AX 2009 sobre Sql Server 2008

Per a aquells administradors de bases de dades que hagin de tractar amb un tal Dynamics Ax 2009 i els seus sequaços (desenvolupadors, consultors, etc ) Deixo aquí un parell de cosetes que s'han de saber (o et han de dir) quan unim ax2009 i sql server 2008. De vegades es pot apuntar a la base de dades com a font del problema però no sempre és així. Alguns requeriments a tenir en compte per a la instal lació de Ax2009 són que l'usuari amb el que vulguin accedir per fer la instal lació ha de ser usuari de DOMINI i en SQL Server ha de ser membre de rol dbcreator i securityadmin per poder crear la nova base de dades des l'instal lador de Ax. Un cop instal lat (o durant el procés d'instal lació) els problemes amb la base de dades que ens podem trobar poden ser: 

Cas 1:

Un altre problema conegut a la sincronització de dades es pot produir per la falta de permisos. El missatge diu alguna cosa així:

"Cannot execute a data definition language command on  ().
The SQL database has issued an error.
Problems during SQL data dictionary synchronization.
The operation failed.
Synchronize failed on 1 table(s)"

Aquest cas en concret es soluciona donant permisos db_ddladmin sobre la base de dades en qüestió. Segons el document oficial d'instal·lació de Dynamics Ax 2009 l'usuari de AOS ha de  tenir els rols db_ddladmin, db_datareader, db_datawriter  sobre su base de datos activados para que todo funcione correctamente.

Cas 2:

Pot passar que en Ax2009 en afegir un camp sobre una taula pot no reflectir-se en la base de dades però sí en el Aôt 

de Axapta. Si és una cosa que passa només amb aquest camp, o més bé amb aquest tipus de camp (Extended Data Type) la base de dades no té res a veure. El problema segurament és que la funcionalitat de la que penja aquest tipus de camp aquesta deshabilitada. Això sol passar en una nova instal lació on no s'ha activat res (Gràcies Alexandre per l'ajuda!! ).

En un altre post espero comentar quins són els passos que segueix Ax quan sincronitza una taula.

 

Contingut relacionat

  • Pot passar que després d'instal lar Oracle o configurar una nova base de dades ens adonem que el joc de caràcters escollit durant la instalació no és el correcte. El que se'ns pot passar en casos com aquest és esborrar la base de dades i reconfigurar o coses pitjors ... Però no cal. Podem canviar el joc de caràcters parant la base de dades, aixecant de manera restrictiva, canviant la configuració i reiniciat la base de dades. Howto:

    - Primer ens connectem amb la base de dades 

    $ sqlplus sys/pwd@prod as sysdba
     

    - Aturem la base de dades 

    SQL>SHUTDOWN IMMEDIATE;

     

    - Aixequem de forma restrictiva * 

    SQL>STARTUP MOUNT;
    SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
    SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
    SQL>ALTER DATABASE OPEN;

    - Canviem el mapa de caràcters 

    SQL>ALTER DATABASE CHARACTER SET <nou mapa de caràcters>;

    - Reiniciem la base de dades i yata 

    SQL>SHUTDOWN IMMEDIATE;

    SQL>STARTUP;

  • Hem preparat un nou servidor virtual amb la instal.lació preconfigurada de Pentaho 2.0, la coneguda plataforma open source de Business Intelligence (Pentaho BI). 

    Podeu descarregar lliurement una màquina virtual preparada amb el programari de virtualització VM ware server 2.0:

     Descargar Imagen Virtual de PentahoDescàrrega de Pentaho 2.0 per VMware 

    (Paciència amb la descàrrega, els fitxers són molt grans)

  • La tasca de Data Profile de SQL Server Information Services emmagatzema els resultats del perfilat en un document XML que es pot examinar amb el Data Profile Viewer. En l'article Dataprofiling amb SQL Server 2008 explico com s'utilitza aquesta nova Task de SSIS.

    Encara que aquest mètode sigui molt senzill, de vegades pot no ser suficient. Si es tracta un projecte de qualitat de dades pot interessar, per exemple, emmagatzemar un històric dels perfilats per poder avaluar com ha anat millorant la qualitat de les dades tractades.

    La millor manera de treballar amb dades històriques és utilitzant una base de dades i emmagatzemant aquestes dades en taules, sobre les quals es podran fer les consultes, informes i comparatives que calgui. Per aconseguir-ho l'únic que caldria és passar a taules les metadades que la tasca de perfilat ha emmagatzemat en el fitxer XML.

  • Data Profile viewer de SSISUna de les múltiples millores que aporta SQL Server 2008 a la part de ETL amb Integration Services és la seva capacitat per realitzar perfilat de dades amb la seva nova Data Profile Task.

    El data profiling és una de les primeres tasques que se solen tractar en processos Qualitat de Dades, i consisteix en realitzar una primera anàlisi sobre les dades d'origen, normalment sobre taules, amb l'objectiu de començar a conèixer la seva estructura, format i nivell de qualitat. Se hacen consultas a nivel de tabla, columna, relaciones entre columnas, e incluso relaciones entre tablas. Es fan consultes a nivell de taula, columna, relacions entre columnes, i fins i tot relacions entre taules.

    La Data Profile Task de SSIS funciona seleccionant una taula d'una base de dades SQLServer 2000 o superior (no serveixen altres bases de dades), les opcions de perfilat que es vulgui realitzar sobre les dades de la taula, i un fitxer XML d'emmagatzematge els resultats quan s'executi la mateixa...

  •  Per accedir des d'una base de dades Oracle a objectes d'una altra base de dades Oracle la manera més senzilla és utilitzar un DBLINK (que sigui la més senzilla no significa que sempre sigui la més aconsellable, l'abús dels DBLINKS pot generar molts problemes, tant de rendiment com de seguretat)

    Per a això és necessari, amb un usuari que posseeixi el privilegi CREATE DATABASE LINK, crear el DBLINK en la base de dades origen (A) mitjançant una senzilla sentència com la següent:

    • create database link LNK_DE_A_a_B connect to USUARI identified by CONTRASENYA USING  'B';

    'LNK_DE_A_a_B' és el nom del link, 'USUARI' i 'CONTRASENYA' són els identificadors de l'usuari que utilitzarà el  link per connectar-se, els permisos del qual heretaran tots els accessos a través del link, i B

    és el nom de la instància de la base de dades.

    A través del DBLINK es pot connectar amb els objectes de la base de dades remota amb els permisos que tingui l'usuari que s'ha proporcionat en la sentència de creació.