Iniciar sesión con Microsoft
Iniciar sesión o crear una cuenta
Hola:
Seleccione una cuenta diferente.
Tiene varias cuentas
Elija la cuenta con la que desea iniciar sesión.

Síntomas

Al intentar insertar datos en una tabla personalizada o al ejecutar un proceso que inserta datos en una tabla personalizada, recibe un mensaje de error similar al siguiente:

Los siguientes SQL Server errores al obtener acceso a la tabla TableName:



1088, "42000",[Microsoft][Odbc SQL Server Driver][SQL Server]No se encuentra el objeto "NAVDBName.dbo.CompanyName$ TableName" porque no existe o no tiene permisos.



SQL: ESTABLECER

IDENTITY_INSERT "NAVDBName"." dbo"." CompanyName$ TableName" ON

Nota En este ejemplo, TableName representa la tabla NAV de Microsoft Dynamics del cliente. NAVDBName representa el nombre de la base de datos de Microsoft Dynamics NAV del cliente. CompanyName representa el nombre de la compañía designado del cliente en Microsoft Dynamics NAV.



Este problema puede ocurrir en versiones de Microsoft Dynamics NAV que usan la Microsoft SQL Server base de datos.

Causa

Este problema se produce si se cumplen las siguientes condiciones:

  • En uno de los campos de la tabla que se indica en el mensaje de error, la propiedad AutoIncrement se establece en Sí.

  • La operación INSERT que use rellena explícitamente el campo que tiene la propiedad AutoIncrement establecida en Sí.

  • No tiene uno de los siguientes permisos:

    • La pertenencia al rol de servidor SYSADMIN en SQL Server

    • La db_owner de roles de base de datos de la base de datos de Microsoft Dynamics NAV

    • La db_ddladmin de roles de base de datos para la base de datos de Microsoft Dynamics NAV

Resolución

Para resolver el problema, use uno de los siguientes métodos.

Método 1


Modifique la operación INSERTAR para que no rellene el campo que tiene la propiedad Autoincrement establecida en Sí.

Método 2

Establezca la propiedad AutoIncrement en No para el campo correspondiente.

Nota Tanto método 1 como método 2 pueden requerir la asistencia de un desarrollador de Microsoft Dynamics NAV, especialmente si la modificación requiere un cambio de código. Estos cambios deben probarse exhaustivamente antes de aplicar los cambios a una base de datos de Microsoft Dynamics NAV en directo.

Método 3

Conceda permisos alter para la tabla personalizada al rol de aplicación correspondiente (por ejemplo, &ndo$shadow, si seleccionó el modelo de seguridad estándar) en SQL Server Management Studio.


Nota Los permisos que se conceden manualmente a tablas de SQL Server Management Studio se sobrescriben al ejecutar una sincronización de seguridad en Microsoft Dynamics NAV. Por lo tanto, debe conceder los permisos Alter a la tabla personalizada de nuevo después de ejecutar la sincronización de seguridad.

Más información

En Microsoft Dynamics NAV, si la propiedad AutoIncrement se establece en Sí para un campo de tipo de datos Integer o para un campo de tipo de datos BigInteger, el campo relevante debe rellenarse automáticamente con un valor entero único generado por el sistema. El valor que se usa para rellenar los incrementos de campo de forma consecutiva para cada nuevo registro que se inserta.

Para implementar la propiedad AutoIncrement, Microsoft Dynamics NAV define una columna SQL Server que tiene asociada la propiedad IDENTITY. La propiedad IDENTITY hace que SQL Server rellenar automáticamente la columna como se describe anteriormente. Si la propiedad IDENTITY está activada para una columna SQL Server, los usuarios no pueden rellenar explícitamente la columna relevante en una instrucción INSERT a menos que los usuarios tengan uno de los siguientes permisos:

  • La pertenencia al rol de servidor SYSADMIN en SQL Server

  • La db_owner de roles de base de datos de la base de datos de Microsoft Dynamics NAV

  • La db_ddladmin de roles de base de datos para la base de datos de Microsoft Dynamics NAV

Además de tener estos permisos, los usuarios también deben ejecutar el siguiente comando para que se complete la operación INSERTAR.

SET IDENTITY_INSERT <table_name> ONCuando se produce el mensaje de error mencionado en la sección "Síntomas", Microsoft Dynamics NAV está intentando ejecutar esta instrucción SET en SQL Server.

El método de rellenar explícitamente una columna que tiene la propiedad IDENTITY es un método que normalmente no es necesario. Las columnas que tienen la propiedad IDENTITY normalmente se rellenan automáticamente SQL Server.

¿Necesita más ayuda?

¿Quiere más opciones?

Explore las ventajas de las suscripciones, examine los cursos de aprendizaje, aprenda a proteger su dispositivo y mucho más.

Las comunidades le ayudan a formular y responder preguntas, enviar comentarios y leer a expertos con conocimientos extensos.

¿Le ha sido útil esta información?

¿Cuál es tu grado de satisfacción con la calidad del lenguaje?
¿Qué ha afectado a su experiencia?
Si presiona Enviar, sus comentarios se usarán para mejorar los productos y servicios de Microsoft. El administrador de TI podrá recopilar estos datos. Declaración de privacidad.

¡Gracias por sus comentarios!

×