En SQL Server, al aplicar los scripts de actualización de la versión 1.8.2.3 para pasar a la 1.8.3.0, el script 18a genera el siguiente error:


Msg 3726, Level 16, State 1, Line 61
Could not drop object 'eor.plz_plazas' because it is referenced by a FOREIGN KEY constraint.
** An error was encountered during execution of batch. Exiting.

Siendo la línea a la que hace referencia la siguiente:


DROP TABLE [eor].[plz_plazas];

Justo después de vacíar esta tabla en eor.tmp_ms_xx_plz_plazas.

¿Cómo puedo proceder para completar la ejecución del script?

asked 04 Jun '15, 10:00

Henry%20Sandoval's gravatar image

Henry Sandoval
(suspended)
accept rate: 53%


Henry, este fue el último script que generamos con la herramienta de comparación anterior y abandonamos su uso, por causa que generaba instrucciones DROP para las tablas a las cuales les agregabamos columnas.

Entonces para corregir el script 18a, podes eliminar del script las siguientes instrucciones.

CREATE TABLE [eor].[tmp_ms_xx_plz_plazas] (
    [plz_codigo]               INT           IDENTITY (1, 1) NOT NULL,
    [plz_nombre]               VARCHAR (100) NOT NULL,
    [plz_codcia]               INT           NOT NULL,
    [plz_coduni]               INT           NOT NULL,
    [plz_codpue]               INT           NOT NULL,
    [plz_codcdt]               INT           NOT NULL,
    [plz_max_empleados]        INT           CONSTRAINT [DF_eor_plz_max_empleados] DEFAULT ((1)) NOT NULL,
    [plz_es_temporal]          BIT           NOT NULL,
    [plz_presupuestada]        BIT           CONSTRAINT [DF_eor_plz_presupuestada] DEFAULT ((1)) NOT NULL,
    [plz_fecha_ini]            DATETIME      NOT NULL,
    [plz_fecha_fin]            DATETIME      NULL,
    [plz_estado]               CHAR (1)      CONSTRAINT [DF_eor_plz_estado] DEFAULT ('P') NOT NULL,
    [plz_fecha_estado]         DATETIME      NULL,
    [plz_property_bag_data]    XML           NULL,
    [plz_estado_workflow]      VARCHAR (15)  CONSTRAINT [DF_eor_plz_estado_workflow] DEFAULT ('Autorizado') NOT NULL,
    [plz_codigo_workflow]      VARCHAR (36)  NULL,
    [plz_ingresado_portal]     BIT           CONSTRAINT [DF_eor_plz_ingresado_portal] DEFAULT ((0)) NOT NULL,
    [plz_usuario_grabacion]    VARCHAR (50)  NULL,
    [plz_fecha_grabacion]      DATETIME      NULL,
    [plz_usuario_modificacion] VARCHAR (50)  NULL,
    [plz_fecha_modificacion]   DATETIME      NULL,
    CONSTRAINT [tmp_ms_xx_constraint_PK_plz_plazas] PRIMARY KEY NONCLUSTERED ([plz_codigo] ASC)
);

IF EXISTS (SELECT TOP 1 1 FROM   [eor].[plz_plazas])
    BEGIN
        SET IDENTITY_INSERT [eor].[tmp_ms_xx_plz_plazas] ON;
        INSERT INTO [eor].[tmp_ms_xx_plz_plazas] ([plz_codigo], [plz_nombre], [plz_codcia], [plz_coduni], [plz_codpue], [   plz_codcdt], [plz_max_empleados], [plz_es_temporal], [plz_fecha_ini], [plz_fecha_fin], [plz_estado], [  plz_fecha_estado], [plz_property_bag_data], [plz_estado_workflow], [plz_codigo_workflow], [plz_ingresado_portal], [    plz_usuario_grabacion], [plz_fecha_grabacion], [plz_usuario_modificacion], [plz_fecha_modificacion])
        SELECT [plz_codigo],
               [plz_nombre],
               [plz_codcia],
               [plz_coduni],
               [plz_codpue],
               [plz_codcdt],
               [plz_max_empleados],
               [plz_es_temporal],
               [plz_fecha_ini],
               [plz_fecha_fin],
               [plz_estado],
               [plz_fecha_estado],
               [plz_property_bag_data],
               [plz_estado_workflow],
               [plz_codigo_workflow],
               [plz_ingresado_portal],
               [plz_usuario_grabacion],
               [plz_fecha_grabacion],
               [plz_usuario_modificacion],
               [plz_fecha_modificacion]
        FROM   [eor].[plz_plazas];
        SET IDENTITY_INSERT [eor].[tmp_ms_xx_plz_plazas] OFF;
    END

DROP TABLE [eor].[plz_plazas];
EXECUTE sp_rename N'[eor].[tmp_ms_xx_plz_plazas]', N'plz_plazas';
EXECUTE sp_rename N'[eor].[tmp_ms_xx_constraint_PK_plz_plazas]', N'PK_plz_plazas', N'OBJECT';

Y sustituirlas por esta única linea

ALTER TABLE eor.plz_plazas ADD [plz_presupuestada] BIT CONSTRAINT [DF_eor_plz_presupuestada] DEFAULT ((1)) NOT NULL;
link

answered 04 Jun '15, 10:26

Fernando%20Paz's gravatar image

Fernando Paz ♦♦
17.3k81635
accept rate: 51%

El problema es porque en tu instalación existe una CONSTRAINT que no está en el proyecto de base de datos estándar. Y como el script solo deshabilita esas constraints, al estar vigente la constraint, no te permite botar la tabla.

Deberías determinar qué constraint es y deshabilitarla o botarla, y luego que finalice el script volverla a crear.

link

answered 04 Jun '15, 10:24

Juan%20Carlos%20Soria's gravatar image

Juan Carlos Soria
1.1k171179185
accept rate: 41%

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Evolution en BitBucket

En este sitio puede acceder al código fuente, centro de descargas y reportar bugs, propuestas y mejoras para Evolution.

Evolution en JIRA

En este sitio puedes sugerir nueva funcionalidad para Evolution, o puedes votar por la funcionalidad ya propuesta por otros usuarios.

Tags:

×2
×1

Asked: 04 Jun '15, 10:00

Seen: 2,697 times

Last updated: 04 Jun '15, 10:28

[Acerca de] [Preguntas Frecuentes] [Privacidad] [Soporte] [Contacto]
Copyright 2013-2018. Asesores en Informática