Resumen

Este artículo proporciona los pasos necesarios para ejecutar una secuencia de comandos Diagnostics.sql para administración Reporter 2012 de Microsoft Dynamics SL 2011 y Microsoft Dynamics SL 2015. Esta secuencia de comandos puede identificar errores de datos que puedan impedir la integración exitosa de administración Reporter. Errores de datos pueden proceden de muchas fuentes y causar incoherencia entre tablas o crear los valores de campo no válido.

En la parte inferior de este artículo también hay dos secuencias de comandos utilizadas para buscar datos en minúsculas que pueden causar problemas en el Sr..

Solución

Descargue el archivo de secuencia de comandos siguiente y, a continuación, siga estos pasos para ejecutar las secuencias de comandos en la base de datos de aplicación de Microsoft Dynamics SL en Reporter de administración. Cambiar el tipo de salida a la Salida de texto para facilitar su visualización.

MR4.zip Nota: Esta misma información se incluye en el archivo Diagnostics4.Sql, que se incluye en el archivo MR4.zip.

Importante: Haga siempre una copia de seguridad de la base de datos antes de actualizar los datos en Management Studio.

Paso 1

  • ¿Tiene más de un ID de moneda configurado?

    Select 'Step1a', CASE WHEN COUNT(*)>1 then 'YES' else 'NO' end, count(*) from currncy with (nolock)


    Notas:

    • No = la moneda única

    • Sí = varias monedas que se configuran en mantenimiento de moneda y tengan el número que aparece

  • ¿Está habilitada la multimoneda?

    Select top 1 'Step1b',case isnull((select MAX(mcactivated) from cmsetup),-99) WHEN 1 then 'ENABLED'
     when -99 then 'NOT SETUP' else 'NOT ENABLED' end


    Nota: Esta secuencia de comandos devuelve "Enabled" o "No Set Up".

Paso 2

Buscar un registro de configuración de moneda incorrecta. Evalúe cada situación. Para obtener ayuda para ello, póngase en contacto con el soporte técnico de Microsoft Dynamics.

  • Debe ser la divisa base de la base de datos de la aplicación:

    Select 'Step2a',BaseCuryId from glsetup with (nolock)
  • La divisa Base de la contabilidad real (tipo de saldo = 'a') debe ser la divisa base de la base de datos.

    Select 'Step2b',BaseCuryID,LedgerID, BalanceType from ledger with (nolock)
  • El campo BaseCuryID de todas las empresas de una base de datos de la aplicación dada todos debe coincidir.

  • Este script muestra el campo BaseCuryID de todas las bases de datos de aplicación que están asociados con la base de datos del sistema.

    Select 'Step2c',BaseCuryID, CpnyID, databasename from vs_company with (nolock)
  • El campo BaseCuryIDs debe existir en la tabla de mantenimiento de moneda. Las divisas extranjeras también deben existir en esta tabla.

    Select 'Step2d',curyid from currncy with (nolock)

Paso 3

Busque valores incorrectos para los campos CuryID y ledgerID en los registros de transacciones y resumen. Estas instrucciones acceso a sólo los registros de los 100 mejores. Para ver todos los registros, quite las palabras "top 100" de la secuencia de comandos.

  • Accthist que tiene un ID de moneda que no está en la tabla de mantenimiento de moneda.

    Select top 100 'Step3a',CpnyID, LedgerID, FiscYr, Acct, SUB, CuryId, * from accthist with (nolock)
     where CuryId not in (select CuryId from Currncy with (nolock))


    Revisión: Puede que necesite actualizar el campo CuryID para que coincida con el campo BaseCuryID . Sin embargo, puede que ya exista ese registro. En este caso, recibirá un mensaje de 6909. Si esto ocurre, determinar si se requiere el registro.

  • Accthist que tiene un ID de moneda que no coincide con la contabilidad de registro (o para un movimiento que no está en la tabla de Contabilidad).

    Select top 100 'Step3b',a.CpnyID, a.LedgerID, a.FiscYr, a.Acct, a.SUB, a.CuryId, l.BaseCuryID,*
     from accthist a with (nolock) left join Ledger l with (nolock) on a.LedgerID=l.LedgerID where
     l.LedgerID is null OR l.BaseCuryID<>a.CuryId


    Revisión: La actualización depende de cada situación.

  • CuryAcct que tiene un CuryID no en la tabla de mantenimiento de moneda.

    Select top 100 'Step3c',CpnyID, LedgerID, FiscYr, Acct, SUB,BaseCuryID, CuryId, * from curyacct
     with (nolock) where CuryId not in (select CuryId from Currncy with (nolock))


    Revisión: La actualización dependerá de cada situación. Tendrá que eliminar el registro más adelante si no hay ningún registro de AcctHist correspondiente. Además, tendrá que actualizar el campo CuryID . Sin embargo, puede que ya exista ese registro. En este caso, recibirá un mensaje de 6909. Si esto ocurre, determinar si el registro es necesaria.

  • CuryAcct con un BasecuryID que no coincide con el registro contable (o de un movimiento que no está en la tabla de Contabilidad).

    Select top 100 'Step3d',c.CpnyID, c.LedgerID, c.FiscYr, c.Acct, c.SUB,c.BaseCuryID,
     c.CuryId,l.BaseCuryID, * from curyacct c with (nolock) left join Ledger l with (nolock)
     on c.LedgerID=l.LedgerID where l.LedgerID is null OR c.BaseCuryID<>l.BaseCuryId


    Revisión: La actualización depende de cada situación.

  • GLTran con un CuryID no en la tabla de mantenimiento de moneda.

    Select top 100 'Step3e',CpnyID, LedgerID, FiscYr, Acct, SUB,BaseCuryID, CuryId,* from gltran
     with (nolock) where Posted='P' and CuryId not in (select CuryId from Currncy)


    Revisión: La actualización depende de cada situación. Debe actualizar el campo CuryId a un valor válido.

  • GLTran con un valor de campo BaseCuryID que no coincide con el registro contable (o de un movimiento que no está en la tabla de Contabilidad).

    Select top 100 'Step3f',g.CpnyID, g.LedgerID, g.FiscYr, g.Acct, g.SUB, g.BaseCuryID, g.CuryId,
     * from gltran g with (nolock) left join Ledger l with (nolock) on g.LedgerID=l.LedgerID where
     g.Posted='P' and g.LedgerID is null OR l.BaseCuryID<>g.BaseCuryId


    Corregir: actualización dependerá de cada situación. Debe actualizar el campo BaseCuryID a un valor válido.

Paso 4

Buscar registros no coincidentes de resumen.

  • Buscar registros de CuryAcct sin AcctHist registros.

    Select top 100 'Step4a',c.CpnyID, c.LedgerID, c.FiscYr, c.Acct, c.Sub, c.BaseCuryID, c.CuryId,*
    from CuryAcct c with (nolock)
    left join AcctHist a with (nolock) on c.CpnyID=a.CpnyID and c.Acct=a.Acct and c.Sub=a.Sub and
     c.LedgerID=a.LedgerID and c.FiscYr=a.FiscYr
    where a.CpnyID is null order by c.CpnyID, c.Acct, c.SUB, c.ledgerid, c.FiscYr


    Revisión: Ejecutar el script de Fix4a.SQL de MR2.zip en las bases de datos de moneda única y Multi-currency si los errores se notifican.

  • Busque Accthist sin CuryAcct los registros.

    Select top 100 'Step4b',a.CpnyID, a.LedgerID, a.FiscYr, a.Acct, a.Sub, a.CuryId, *
    from AcctHist a with (nolock)
    left join Curyacct c with (nolock) on c.CpnyID=a.CpnyID and c.Acct=a.Acct and c.Sub=a.Sub and
     c.LedgerID=a.LedgerID and c.FiscYr=a.FiscYr
    where a.BalanceType='A' and c.CpnyID is null order by a.CpnyID, a.Acct, a.SUB, a.ledgerid, a.FiscYr


    Revisión: Bases de datos de multimoneda, bien inicializar un registro curyacct en el modo de inicialización en Contabilidad general > Historial de cuenta o registrar una transacción en la cuenta/sub/contabilidad/fiscyr/cpnyid/curyid. Para crear o actualizar un registro de curyacct en Contabilidad general > Historial de cuenta > ficha moneda, deberá especificar los datos para cada período. Cuando se crea un lote para contabilizar una transacción de la cuenta, esto debe crear un registro de CuryAcct que contiene los valores para cada período. Asegúrese de que utiliza el año en el que se informa del error como el año para el registro. A continuación, invierta el lote para quitar los dólares de la cuenta.

    Para una base de datos de la moneda única, abra el registro en Contabilidad general > Historial de cuenta durante el modo de inicialización si sólo hay uno o dos registros. Cambiar el saldo inicial por cierto, guardar el registro, devolverla y, a continuación, vuelva a guardar. Esto crea el registro de curyacct. O bien, puede ejecutar la secuencia de comandos de paso 6a en esta sección.

  • GLTrans sin AcctHist

    Esta consulta se ejecutará lentamente si hay muchas entradas de gltrans y todas las entradas son válidas. (La consulta realmente se ejecuta más rápido si hay datos incorrectos.)

    Select top 100 'Step4c',g.CpnyID, g.LedgerID, g.FiscYr, g.Acct, g.Sub, g.BaseCuryID, g.CuryId,
    * from GLTran g with (nolock)
    left join AcctHist a with (nolock) on g.CpnyID=a.CpnyID and g.Acct=a.Acct and g.Sub=a.Sub and
     g.LedgerID=a.LedgerID and g.FiscYr=a.FiscYr
    inner join vs_company c with (nolock) on g.CpnyID=c.CpnyID and c.CpnyCOA in (select CpnyID from
     glsetup with (nolock)) -- only companies in this application DB
    where g.posted='P' and a.CpnyID is null 
    order by g.CpnyID, g.LedgerID, g.FiscYr, g.Acct, g.Sub
    option (force order) -- added for performance in larger databases


    Revisión: Evaluar las entradas de campo GLtrans . Si no hay ningún registro de AcctHist, las finanzas no utilizan estas transacciones para informes

  • Normalmente esto es porque las transacciones tienen una antigüedad. Decide eliminarlos o realizar otra acción. Evalúe detenidamente estas entradas.

Paso 5

Busque registros de GLTrans que tienen fechas no válidas o períodos. Estos registros pueden provocar los errores siguientes en Reporter de administración:

  • Texto del error: parámetros de año, mes y día describen un campo DateTime que no se puede representar.

  • Texto de error: no se establece la referencia de objeto a una instancia de un objeto.

  • GLTrans los registros que tienen un campo de FiscYr en blanco.

    Select top 100 'Step5a',CpnyID, LedgerID, FiscYr, Acct, Sub, perpost, perent, trandate,
     Posted, Rlsed, BatNbr, Module, * from GLTran with (nolock) where FiscYr='' and
     (Rlsed=1 or Posted='P')


    Corregir: considere la posibilidad de actualizar el campo de FiscYr basándose en el valor de perpost.

  • GLTrans los registros que tienen un valor de perpost que está ahora fuera de un rango normal.

    Select top 100 'Step5b',CpnyID, LedgerID, FiscYr, Acct, Sub, perpost, perent, trandate,
     Posted, Rlsed, BatNbr, Module, *
    from GLTran with (nolock) where (PerPost>='204812' or PerPost<='195001') and (Rlsed=1 or Posted='P')


    Revisión: Estos lotes todo probablemente tendrá un período futuro a contabilizar. Puede abrir estos lotes en Contabilidad general > transacciones de diario durante el modo de inicialización.
    O eliminarlos, cambiar el período a contabilizar o procesarlos, según corresponda.

  • GLTrans los registros que tienen un valor transdate lejos, fuera de un rango normal (con frecuencia al tener un año 2079).

    Select top 100 'Step5c',CpnyID, LedgerID, FiscYr, Acct, Sub, perpost, perent, trandate,Posted,
     Rlsed, BatNbr, Module, *
    from GLTran with (nolock) where (trandate>='01/01/2048' or trandate<='01/01/1950')
     and (Rlsed=1 or Posted='P') and TranDate<>'1/1/1900'


    Revisión: Actualizar trandate a crtd_datetime. Este script muestra cómo.

    update gltran set trandate=crtd_datetime where (trandate>='01/01/2048' or trandate<='01/01/1950')
     and (Rlsed=1 or Posted='P') and TranDate<>'1/1/1900' 
  • AcctHist los registros con un campo FiscYr lejos, fuera de un rango normal.

    select top 100 'Step5d',a.CpnyID, a.LedgerID, a.FiscYr, 
    a.Acct, a.Sub, a.CuryId, *
    from AcctHist a with (nolock) where a.FiscYr>'2048' 
    or a.FiscYr<'1950' or len(a.FiscYr) < 4
    


    Revisión: Se trata de registros probablemente no deseados. En la manipulación de datos Históricamente, podría establecer el año fiscal a un año futuro para mantener los registros para su posterior revisión posible.

Paso 6

Buscar instancias en que los montos en el registro de AcctHist no coinciden los importes del registro CuryAcct .

Nota: Ejecute esta instrucción sólo después de que se han corregido los problemas en los pasos 1 a 5.

select top 1000 'Step6a', a.CpnyID, a.Acct, a.Sub, a.LedgerID, a.FiscYr, c.numCuryAcct, a.BegBal, c.begbal, a.PtdBal00, c.ptdbal00, a.PtdBal01, c.ptdbal01, a.PtdBal02, c.ptdbal02, 
  a.PtdBal03, c.ptdbal03, a.PtdBal04, c.ptdbal04, a.PtdBal05, c.ptdbal05, a.PtdBal06, c.ptdbal06, a.PtdBal07, c.ptdbal07, a.PtdBal08, c.ptdbal08, 
  a.PtdBal09, c.ptdbal09, a.PtdBal10, c.ptdbal10, a.PtdBal11, c.ptdbal11, a.PtdBal12, c.ptdbal12, a.ytdBal00, c.ytdbal00, a.ytdBal01, c.ytdbal01,
  a.ytdBal02, c.ytdbal02, a.ytdBal03, c.ytdbal03, a.ytdBal04, c.ytdbal04, a.ytdBal05, c.ytdbal05, a.ytdBal06, c.ytdbal06, a.ytdBal07, c.ytdbal07, 
  a.ytdBal08, c.ytdbal08, a.ytdBal09, c.ytdbal09, a.ytdBal10, c.ytdbal10, a.ytdBal11, c.ytdbal11, a.ytdBal12, c.ytdbal12
  from AcctHist a inner join 
(select count(*) as numCuryAcct, CpnyID, Acct, Sub, LedgerID, FiscYr, SUM(begbal) as begbal, SUM(ptdbal00) as ptdbal00, SUM(ptdbal01) as ptdbal01, 
SUM(ptdbal02) as ptdbal02, SUM(ptdbal03) as ptdbal03, SUM(ptdbal04) as ptdbal04, SUM(ptdbal05) as ptdbal05, SUM(ptdbal06) as ptdbal06, 
SUM(ptdbal07) as ptdbal07, SUM(ptdbal08) as ptdbal08, SUM(ptdbal09) as ptdbal09, SUM(ptdbal10) as ptdbal10, SUM(ptdbal11) as ptdbal11,
SUM(ptdbal12) as ptdbal12, SUM(ytdbal00) as ytdbal00, SUM(ytdbal01) as ytdbal01, SUM(ytdbal02) as ytdbal02, SUM(ytdbal03) as ytdbal03, 
SUM(ytdbal04) as ytdbal04, SUM(ytdbal05) as ytdbal05, SUM(ytdbal06) as ytdbal06, SUM(ytdbal07) as ytdbal07, SUM(ytdbal08) as ytdbal08, 
SUM(ytdbal09) as ytdbal09, SUM(ytdbal10) as ytdbal10, SUM(ytdbal11) as ytdbal11, SUM(ytdbal12) as ytdbal12
from curyacct group by CpnyID, Acct, Sub, LedgerID, FiscYr) c 
  on a.CpnyID=c.CpnyID and a.Acct=c.Acct and a.Sub=c.Sub and a.LedgerID=c.LedgerID and a.FiscYr=c.FiscYr
  where round(a.BegBal,2)<>round(c.begbal,2) or round(a.PtdBal00,2)<>round(c.PtdBal00,2) or round(a.PtdBal01,2)<>round(c.PtdBal01,2) or 
  round(a.PtdBal02,2)<>round(c.PtdBal02,2) or round(a.PtdBal03,2)<>round(c.PtdBal03,2) or round(a.PtdBal04,2)<>round(c.ptdbal04,2) or 
  round(a.PtdBal05,2)<>round(c.PtdBal05,2) or round(a.PtdBal06,2)<>round(c.PtdBal06,2) or round(a.PtdBal07,2)<>round(c.PtdBal07,2) or 
  round(a.PtdBal08,2)<>round(c.PtdBal08,2) or round(a.PtdBal09,2)<>round(c.PtdBal09,2) or round(a.PtdBal10,2)<>round(c.PtdBal10,2) or 
  round(a.PtdBal11,2)<>round(c.PtdBal11,2) or round(a.PtdBal12,2)<>round(c.PtdBal12,2) or round(a.ytdBal00,2)<>round(c.ytdBal00,2) or 
  round(a.ytdBal01,2)<>round(c.ytdBal01,2) or round(a.ytdBal02,2)<>round(c.ytdBal02,2) or round(a.ytdBal03,2)<>round(c.ytdBal03,2) or 
  round(a.ytdBal04,2)<>round(c.ytdbal04,2) or round(a.ytdBal05,2)<>round(c.ytdBal05,2) or round(a.ytdBal06,2)<>round(c.ytdBal06,2) or 
  round(a.ytdBal07,2)<>round(c.ytdBal07,2) or round(a.ytdBal08,2)<>round(c.ytdBal08,2) or round(a.ytdBal09,2)<>round(c.ytdBal09,2) or 
  round(a.ytdBal10,2)<>round(c.ytdBal10,2) or round(a.ytdBal11,2)<>round(c.ytdBal11,2) or round(a.ytdBal12,2)<>round(c.ytdBal12,2)


Para una base de datos de la moneda única, abra el registro en Contabilidad general > Historial de cuenta durante el modo de inicialización si hay sólo unos pocos registros. Cambiar el saldo inicial por cierto, guardar el registro, revertir el registro y a continuación, guárdelo. Esto actualiza el registro de Curyacct para que coincida con el registro de Accthist . Si hay muchos registros, ejecute el script ResetCuryAcctfromAcctHistStep6a.sql en el archivo MR2.zip.

En una base de datos multidivisa, abra GL > Historial de cuenta durante el modo de inicialización si hay sólo unos pocos registros y, a continuación, haga clic en la ficha moneda corregir cada período individualmente, según corresponda. Si hay muchos registros, ejecute el script MultiCurrencyStep6aFix.sql en el archivo MR2.zip. Se realiza cualquier cambio en el registro de BaseCuryID .

Después de completar el paso 6, vuelva a ejecutar la secuencia de comandos Diagnostics2.SQL para comprobar que ya no informa de errores.



Secuencias de comandos adicionales para buscar datos en minúsculas que pueden ocasionar problemas en MR.

Esta secuencia de comandos busca varios registros donde la Company.DatabaseName no tiene el mismo caso (ex: SLDemoApp y SLDEMOAPP). Ejecute este script en la base de datos del sistema.

Seleccione c.DatabaseName, c.CpnyID from sys.databases c combinación externa izquierda de empresa sd en c.DatabaseName intercalación Latin1_General_CS_AS = sd.name intercalación Latin1_General_CS_AS

donde sd.name es null y DatabaseName en (select c1. DatabaseName de empresa de combinación externa izquierda de empresa c1 c2 en c1. DatabaseName = c2. DatabaseName donde c1. DatabaseName = c2. DatabaseName y c1. DatabaseName COLLATE Latin1_General_CS_AS! = c2. DatabaseName COLLATE Latin1_General_CS_AS)

Para corregir: actualizar el databasename para escribirse en mayúsculas.




Esta secuencia de comandos busca en minúsculas ID compañía y subcuenta en las tablas accthist, curyacct y gltran. Ejecute este script en la base de datos del sistema.


DECLARAR @DbName varchar (50)
DECLARE @useStatement varchar (256)
DECLARAR @fullStatement VARCHAR(8000)

DECLARAR db_cursor para el CURSOR
Seleccione distinta DatabaseName de empresa

Abrir db_cursor
FETCH NEXT FROM db_cursor INTO @DbName

MIENTRAS @@FETCH_STATUS = 0
BEGIN  

establecer @DbName = LTRIM(RTRIM(@DbName))
Set @useStatement = 'Uso' + @DbName + ''
Set @fullStatement = '
Seleccione sub como '' Sub - AcctHist-' + @DbName + ''', *
DESDE AcctHist
DONDE UPPER(sub) <> sub intercalación Latin1_General_CS_AS
  
Seleccione sub como '' Sub - GLTran-' + @DbName + ''', *
DESDE GLTran
DONDE UPPER(sub) <> sub intercalación Latin1_General_CS_AS
  

Seleccione sub como '' Sub - CuryAcct-' + @DbName + ''', *
DESDE CuryAcct
DONDE UPPER(sub) <> sub intercalación Latin1_General_CS_AS
  
Seleccione CpnyID como '' CpnyID - AcctHist-' + @DbName + ''', *
DESDE AcctHist
DONDE UPPER(CpnyID) <> CpnyID intercalación Latin1_General_CS_AS
  
Seleccione CpnyID como '' CpnyID - GLTran-' + @DbName + ''', *
DESDE GLTran
DONDE UPPER(CpnyID) <> CpnyID intercalación Latin1_General_CS_AS
  

Seleccione CpnyID como '' CpnyID - CuryAcct-' + @DbName + ''', *
DESDE CuryAcct
DONDE UPPER(CpnyID) <> CpnyID intercalación Latin1_General_CS_AS
  
 
Seleccione SUB como '' Sub - SubAcct-' + @DbName + ''', * desde SubAcct donde (SUB intercalar sql_latin1_general_cp1_cs_as <> upper(SUB))
o (para intercalar ConsolSub sql_latin1_general_cp1_cs_as <> upper(ConsolSub))
   '

exec (@useStatement + @fullStatement)
  
FETCH NEXT FROM db_cursor INTO @DbName
END  

Cerrar db_cursor
DEALLOCATE db_cursor




Para corregir: Si encuentra cualquier minúscula subcuentas puede ejecutar estos para ponerlos en mayúsculas.


Update GLTran set Sub = UPPER(Sub)

Update AcctHist set Sub = UPPER(Sub)

Update CuryAcct set Sub = UPPER(Sub)



Si encuentra cualquier minúsculas company ID ejecutarlos para ponerlos en mayúsculas.

Update accthist set cpnyid = UPPER(cpnyid) donde UPPER(CpnyID) <> CpnyID intercalación Latin1_General_CS_AS

Update curyacct set cpnyid = UPPER(cpnyid) donde UPPER(CpnyID) <> CpnyID intercalación Latin1_General_CS_AS

Update gltran set cpnyid = UPPER(cpnyid) donde UPPER(CpnyID) <> CpnyID intercalación Latin1_General_CS_AS



Esta secuencia de comandos busca en minúsculas LedgerID en las tablas accthist, curyacct y gltran. Ejecute este script en la base de datos de aplicación.

SELECT TOP 1 LedgerID de AcctHist donde UPPER(LedgerID) <> LedgerID intercalación Latin1_General_CS_AS

SELECT TOP 1 LedgerID de GLTran donde UPPER(LedgerID) <> LedgerID intercalación Latin1_General_CS_AS

SELECT TOP 1 LedgerID de CuryAcct donde UPPER(LedgerID) <> LedgerID intercalación Latin1_General_CS_AS



Para corregir: Si encuentra alguno en minúsculas del LedgerID puede ejecutar estos para ponerlos en mayúsculas.

Update AcctHist set LedgerID = UPPER(LedgerID) donde LedgerID intercalación Latin1_General_BIN como '% [a-z] %'

Update GLTran set LedgerID = UPPER(LedgerID) donde LedgerID intercalación Latin1_General_BIN como '% [a-z] %'

Update CuryAcct set LedgerID = UPPER(LedgerID) donde LedgerID intercalación Latin1_General_BIN como '% [a-z] %'




Esta secuencia de comandos busca en minúsculas CuryID en las tablas accthist, curyacct y gltran. Ejecute este script en la base de datos de aplicación.

SELECT TOP 1 CuryID de AcctHist donde UPPER(CuryID) <> CuryID intercalación Latin1_General_CS_AS

SELECT TOP 1 CuryID de GLTran donde UPPER(CuryID) <> CuryID intercalación Latin1_General_CS_AS

SELECT TOP 1 CuryID de CuryAcct donde UPPER(CuryID) <> CuryID intercalación Latin1_General_CS_AS


Para corregir: Si encuentra alguno en minúsculas del CuryID puede ejecutar estos para ponerlos en mayúsculas.

update AcctHist set CuryId = UPPER(CuryId) where CuryId COLLATE Latin1_General_BIN like '%[a-z]%'  

Update GLTran set CuryId = UPPER(CuryId) donde CuryId intercalación Latin1_General_BIN como '% [a-z] %'

Update CuryAcct set CuryId = UPPER(CuryId) donde CuryId intercalación Latin1_General_BIN como '% [a-z] %'


Si no se informa de ningún error después de volver a ejecutar la secuencia de comandos de Diagnostic2.SQL, el Data Mart de Reporter de administración debe estar integrado nuevo siguiendo los pasos de KB 2964624.

¿Necesita más ayuda?

Ampliar sus conocimientos
Explorar los cursos
Obtener nuevas características primero
Unirse a Microsoft Insider

¿Le ha sido útil esta información?

¿Cómo de satisfecho está con la calidad de la traducción?
¿Qué ha afectado a tu experiencia?

¡Gracias por sus comentarios!

×