Si, es exactamente lo que necesitaba. Muchísimas Gracias Pablo.
Saludos! De: [email protected] [mailto:[email protected]] En nombre de Pablo Rausch Enviado el: miércoles, 03 de diciembre de 2014 15:28 Para: [email protected] Asunto: [puntonet] Dropear Constraints Dinamicamente Espero que te sirva. CREATE PROCEDURE [dbo].[DropConstraints] @tablename nvarchar(500), @columnname nvarchar(500) AS SELECT CONSTRAINT_NAME, 'C' AS type INTO #dependencies FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE WHERE TABLE_NAME = @tablename AND COLUMN_NAME = @columnname INSERT INTO #dependencies select d.name, 'C' from sys.default_constraints d join sys.columns c ON c.column_id = d.parent_column_id AND c.object_id = d.parent_object_id join sys.objects o ON o.object_id = d.parent_object_id WHERE o.name = @tablename AND c.name = @columnname INSERT INTO #dependencies SELECT i.name, 'I' FROM sys.indexes i JOIN sys.index_columns ic ON ic.index_id = i.index_id and ic.object_id=i.object_id JOIN sys.columns c ON c.column_id = ic.column_id and c.object_id=i.object_id JOIN sys.objects o ON o.object_id = i.object_id where o.name = @tableName AND i.type=2 AND c.name = @columnname AND is_unique_constraint = 0 DECLARE @dep_name nvarchar(500) DECLARE @type nchar(1) DECLARE dep_cursor CURSOR FOR SELECT * FROM #dependencies OPEN dep_cursor FETCH NEXT FROM dep_cursor INTO @dep_name, @type; DECLARE @sql nvarchar(max) WHILE @@FETCH_STATUS = 0 BEGIN SET @sql = CASE @type WHEN 'C' THEN 'ALTER TABLE [' + @tablename + '] DROP CONSTRAINT [' + @dep_name + ']' WHEN 'I' THEN 'DROP INDEX [' + @dep_name + '] ON dbo.[' + @tablename + ']' END print @sql EXEC sp_executesql @sql FETCH NEXT FROM dep_cursor INTO @dep_name, @type; END DEALLOCATE dep_cursor DROP TABLE #dependencies Saludos Pablo I. Rausch [email protected] El 3 de diciembre de 2014, 10:56, Info (Sinergia Software Soluciones) <[email protected]> escribió: Hola Gente, Buenos Días! Los contacto para obtener una ayudita. Necesito hacer un proceso que DROPEE automáticamente las contrainst de una tabla (Clientes) porque hay que cambiar el PK. El proceso de agregado de la nueva PK en las tablas hijas y el reemplazo no es un problema, pero si el dropeo porque es un proceso a ejecutar en distintas bases y los FK podrían tener distintos nombres. Muchas Gracias. Saludos… Augusto
