jueves, 13 de octubre de 2022

Schema-binding Objects Check / Schema bounding objects found in database

 Tenia programado un upgrade con un cliente a un servidor en la nube para su ambiente de pruebas, todo marchaba bien, pero algo paso en el transcurso, el asistente marco un error, error que como saben mientras persista nos impedirá realizar el upgrade.

Lo bueno de todo esto es que el error nos indicaba leyéramos la siguiente nota que a continuación les dejo tal cual, al final les diré que hice con las vistas (en mi caso) para que me dejará continuar con el upgrade.

 Please find the original document at https://launchpad.support.sap.com/#/notes/ 1343075

Symptom

During a run of the SAP Business One Upgrade / Setup Wizard, in the pretest step, you may receive the following error message:

Schema bounding objects found in database

Cause

There are schema bouding objects with a dependency on SAP Business One tables. When there is a dependency between the tables and objects defined as schema-bound (For example, CREATE VIEW/FUNCTION ... WITH SCHEMABINDING), the upgrade fails due to a failure to drop/alter SAP Business One tables. The following script can find all schema-binding objects in the database: SELECT 'schema_bound object ' + OBJECT_NAME ( object_id ) + ' found in DataBase!' FROM sys.sql_modules where is_schema_bound = 1

 Solution

To enable the upgrade, consult your database administrator and drop all schema-binding objects. For more information, see the Microsoft SQL Server document and consult your database administrator. We recommend generating a database backup before dropping any objects from the company database.

Pues bien, tal como lo dice la nota, al ejecutar la consulta SELECT 'schema_bound object ' + OBJECT_NAME ( object_id ) + ' found in DataBase!' FROM sys.sql_modules where is_schema_bound = 1, me arrojó los objetos del esquema que tienen en su estructura la sentencia marcada en negritas:

CREATE VIEW dbo.vwName 

WITH SCHEMABINDING AS 

SELECT T1.ID, T1.FirstName, T1.LastName, T2.Address, T2.Phone 

FROM dbo.Table1 AS T1 

INNER JOIN dbo.Table2 AS T2 ON T1.Id = T2.Id GO

Lo que note es que estos objetos no son nativos de SAPB1, si no de desarrollos hechos por el mismo cliente, por lo que sintiéndolo mucho, modifique sus vistas quitándole esa sentencia SQL, no es necesario eliminar las vistas, solo borrando la sentencia.

Con esto podrán continuar su upgrade, si tienen alguna otra duda sobre este tema, con gusto lo vemos. ¡Saludos!

No hay comentarios:

Publicar un comentario