RE:Como Cambio el tamaño de un campo
Hola
Por principio de cuentas, debera QUITAR la relacion:
ALTER TABLE MyTabla
DROP CONSTRAINT FK_MyRelacion
Despues, alterar el tipo o longitud de campo:
**** Cuidado *****, podria perder datos si la columna es mas pequeña
CREATE TABLE dbo.Tmp_MyTabla
(
iId int NOT NULL,
cNombre char(20) NULL -- estoy cambiando de 10 a 20
) ON [PRIMARY]
IF EXISTS(SELECT * FROM dbo.MyTabla)
EXEC('INSERT INTO dbo.Tmp_MyTabla (iId, cNombre)
SELECT iId, cNombre FROM dbo.MyTabla TABLOCKX')
-- elimino mi tabla orignial
DROP TABLE dbo.MyTabla
-- Renombro mi tabla de paso
EXECUTE sp_rename N'dbo.Tmp_MyTabla, N'MyTabla', 'OBJECT'
-- Genero nuevamente mi PK
ALTER TABLE dbo.MyTabla ADD CONSTRAINT
PK_Padre PRIMARY KEY CLUSTERED
(
iId
) ON [PRIMARY]
-- Vuelvo a colocar mi RELACION
ALTER TABLE dbo.MyTablaHijo ADD CONSTRAINT
FK_Hijo_MyTabla FOREIGN KEY
(
iId
) REFERENCES dbo.MyTabla (
iId
)
Espero y le sirva este script.