cambiar un valor a un default

03/11/2006 - 11:33 por Asier | Informe spam
Hola grupo,

Tengo un Default creado en mi base de datos que esta asignado a varias
columnas de mis tablas. Si ahora quiero cambiar el valor del default, me
dice que no se puede porque esta en uso. ¿ Que puedo hacer?

Saludos,

Asier

Preguntas similare

Leer las respuestas

#1 Maxi
03/11/2006 - 13:19 | Informe spam
Hola, podrias mostrarnos la instruccion que estas usando y el mensaje
textual del error?


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Asier" escribió en el mensaje
news:%23vvSMOz$
Hola grupo,

Tengo un Default creado en mi base de datos que esta asignado a varias
columnas de mis tablas. Si ahora quiero cambiar el valor del default, me
dice que no se puede porque esta en uso. ¿ Que puedo hacer?

Saludos,

Asier


Respuesta Responder a este mensaje
#2 Maxi
03/11/2006 - 14:04 | Informe spam
Hola, es que el EM lo que hace es borrar el default y cuando haces un drop
no lo permite porque lo estas usando.
Lo que deberias hacer es primero sacar los default donde hace referencia (lo
podes hacer con el comando sp_unbindefault , cambiar tu default y volverlos
a bindear


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Asier" escribió en el mensaje
news:uSPtLc0$
Hola,

Antes de nada deciros que estoy con SqlServer 2000. Creo el Default
desde el administrador corporativo en la zona de "Valores
Predeterminados".
Seguidamente en el diseño de una tabla existente, a una cou¡lumna le
indico
que su valor predeterminado es el que acabo de crear.
Seguido vuelvo a "Valores Predeterminados", hago doble click en el y
cambio su valor. Al pulsar Acepatra me da este error:

Error 3716: No se puede quitar el predeterminado
'dbo.MiPredeterminado'.
Esta enlazado a uno o varios columna

Os adjunto la pantalla.

Saludos,

Asier


"Maxi" escribió en el mensaje
news:#gPbSK0$
Hola, podrias mostrarnos la instruccion que estas usando y el mensaje
textual del error?


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Asier" escribió en el mensaje
news:%23vvSMOz$
> Hola grupo,
>
> Tengo un Default creado en mi base de datos que esta asignado a


varias
> columnas de mis tablas. Si ahora quiero cambiar el valor del default,
> me
> dice que no se puede porque esta en uso. ¿ Que puedo hacer?
>
> Saludos,
>
> Asier
>
>







Respuesta Responder a este mensaje
#3 Alejandro Mesa
03/11/2006 - 15:12 | Informe spam
Asier,

Exactamente lo que dice SQL Server. Existen objetos que usan ese default,
por lo que primero debes desligarlo. Crea un nuevo default y asignalo a la
columna, pues no existe una sentencia "alter default".

No hagas el cambio desde "Enterprise Manager", pues este lo que hace es
crear una tabla nueva y pasar todas las filas a la nueva tabla y elimina la
vieja. Si la tabla que estas cambiando es grande, este cambio usara muchos
recursos.

Como saber en que tablas y columnas esta siendo referenciado ese default?

Aca te paso un script que escribi hace un tiempo. Ve si te es de ayuda.

create default df_mssqlserver_2000 as 2000
go

create default df_mssqlserver_2005 as 2005
go

create table dbo.t1 (
c1 int
)
go

create table dbo.t2 (
c1 int
)
go

create table dbo.t3 (
c1 int
)
go

create table dbo.t4 (
c1 int
)
go

exec sp_bindefault 'df_mssqlserver_2000', 't1.c1'
exec sp_bindefault 'df_mssqlserver_2000', 't2.c1'
exec sp_bindefault 'df_mssqlserver_2000', 't3.c1'
exec sp_bindefault 'df_mssqlserver_2000', 't4.c1'
go

insert into dbo.t1 default values
insert into dbo.t2 default values
insert into dbo.t3 default values
insert into dbo.t4 default values
go

select
TABLE_NAME,
COLUMN_NAME,
COLUMN_DEFAULT
from
INFORMATION_SCHEMA.COLUMNS
where
objectproperty(object_id('[' + TABLE_SCHEMA + '].[' + TABLE_NAME + ']'),
'IsUserTable') = 1
and objectproperty(object_id('[' + TABLE_SCHEMA + '].[' + TABLE_NAME +
']'), 'IsMSShipped') = 0
and COLUMN_DEFAULT like '%create default df_mssqlserver_2000 as %'
go

declare @sql nvarchar(4000)
declare c cursor local fast_forward
for
select
'exec sp_unbindefault ''' + TABLE_NAME + '.' + COLUMN_NAME + '''' as cmd
from
INFORMATION_SCHEMA.COLUMNS
where
objectproperty(object_id('[' + TABLE_SCHEMA + '].[' + TABLE_NAME + ']'),
'IsUserTable') = 1
and objectproperty(object_id('[' + TABLE_SCHEMA + '].[' + TABLE_NAME +
']'), 'IsMSShipped') = 0
and COLUMN_DEFAULT like '%create default df_mssqlserver_2000 as %'

open c

while 1 = 1
begin
fetch next from c into @sql

if @@error != 0 or @@fetch_status != 0 break

exec sp_executesql @sql

set @sql = replace(@sql, 'unbindefault', 'bindefault
''df_mssqlserver_2005'',')

exec sp_executesql @sql
end

close c
deallocate c
go

insert into dbo.t1 default values
insert into dbo.t2 default values
insert into dbo.t3 default values
insert into dbo.t4 default values
go

select
TABLE_NAME,
COLUMN_NAME,
COLUMN_DEFAULT
from
INFORMATION_SCHEMA.COLUMNS
where
objectproperty(object_id('[' + TABLE_SCHEMA + '].[' + TABLE_NAME + ']'),
'IsUserTable') = 1
and objectproperty(object_id('[' + TABLE_SCHEMA + '].[' + TABLE_NAME +
']'), 'IsMSShipped') = 0
and COLUMN_DEFAULT like '%create default df_mssqlserver_2005 as %'
go

select * from dbo.t1
select * from dbo.t2
select * from dbo.t3
select * from dbo.t4
go

drop table dbo.t1, dbo.t2, dbo.t3, dbo.t4
go

drop default df_mssqlserver_2000, df_mssqlserver_2005
go

Microsoft recomienda no usar mas "create default", sino crear el default en
la sentencia "create table". Posiblemente esta sentencia se elimine en
futuras versiones. Lee el primer bloque "Important".

CREATE DEFAULT (Transact-SQL)
http://msdn2.microsoft.com/en-US/li...73565.aspx


AMB


"Asier" wrote:

Hola,

Antes de nada deciros que estoy con SqlServer 2000. Creo el Default
desde el administrador corporativo en la zona de "Valores Predeterminados".
Seguidamente en el diseño de una tabla existente, a una cou¡lumna le indico
que su valor predeterminado es el que acabo de crear.
Seguido vuelvo a "Valores Predeterminados", hago doble click en el y
cambio su valor. Al pulsar Acepatra me da este error:

Error 3716: No se puede quitar el predeterminado 'dbo.MiPredeterminado'.
Esta enlazado a uno o varios columna

Os adjunto la pantalla.

Saludos,

Asier


"Maxi" escribió en el mensaje
news:#gPbSK0$
> Hola, podrias mostrarnos la instruccion que estas usando y el mensaje
> textual del error?
>
>
> Salu2
>
> Microsoft MVP SQL Server
> Culminis Speaker
> INETA Speaker
>
> "Asier" escribió en el mensaje
> news:%23vvSMOz$
> > Hola grupo,
> >
> > Tengo un Default creado en mi base de datos que esta asignado a
varias
> > columnas de mis tablas. Si ahora quiero cambiar el valor del default, me
> > dice que no se puede porque esta en uso. ¿ Que puedo hacer?
> >
> > Saludos,
> >
> > Asier
> >
> >
>
>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida