Intercalación o Collation

03/08/2006 - 16:56 por Alfredo O. | Informe spam
Hola a todos

No soy muy experto en SQL Server y tengo una inquietud.
En un campo varchar de una tabla cuando almaceno caracteres especiales como
las vocales tildadas o la ñ me los cambia por otros signos, creo que al
definir la base de datos no se tuvo en cuenta escoger bien la intercalación,
hago un backup borro la base de datos, la creo con la intercalación adecuada
pero al restaurar el backup vuelve y me coloca la intercalación que tenia la
base de datos anterior. La pregunta concreta es como puedo cambiar la
intercalación a una base de datos; de antemano agradezco al que me pueda
colaborar.

Saludos,

Luis Alfredo Ortigoza T.
ALFCOM S.A.
Bogotá D.C. COLOMBIA
alfredoortigoza@alfcom.com
 

Leer las respuestas

#1 Alejandro Mesa
03/08/2006 - 17:32 | Informe spam
Alfredo,

Para cambiar la collation de la db puedes usar la sentencia "alter
database". Si existe alguna restriccion que sea dependiente de la collation
de la db, entonces dara errory ademas, eso no cambia la collation de las
columnas existentes.

Ejemplo:


use northwind
go

alter database northwind
collate SQL_Latin1_General_CP1_CI_AI
go

Resultado:

Server: Msg 5075, Level 16, State 1, Line 1
The object 'CK_Products_UnitPrice' is dependent on database collation.
Server: Msg 5075, Level 16, State 1, Line 1
The object 'CK_ReorderLevel' is dependent on database collation.
Server: Msg 5075, Level 16, State 1, Line 1
The object 'CK_UnitsInStock' is dependent on database collation.
Server: Msg 5075, Level 16, State 1, Line 1
The object 'CK_UnitsOnOrder' is dependent on database collation.
Server: Msg 5075, Level 16, State 1, Line 1
The object 'CK_Discount' is dependent on database collation.
Server: Msg 5075, Level 16, State 1, Line 1
The object 'CK_Quantity' is dependent on database collation.
Server: Msg 5075, Level 16, State 1, Line 1
The object 'CK_UnitPrice' is dependent on database collation.
Server: Msg 5075, Level 16, State 1, Line 1
The object 'CK_Birthdate' is dependent on database collation.
Server: Msg 5072, Level 16, State 1, Line 1
ALTER DATABASE failed. The default collation of database 'northwind' cannot
be set to SQL_Latin1_General_CP1_CI_AI.

En ese caso sera mas facil bajar la data a disco, recrear la db e importar
la data. Puedes Crear una db diferente, importar la data, eliminar la vieja
db y luego renombrar la nueva db (recuerda hacer un backup antes de jugar con
esto).

Para la collation de una columna, puedes usar la sentencia "alter table".
Chequea si esta usando indices o si esa columna es referenciada desde alguna
restriccion, pues en ese caso debes eliminar el indice o restriccion asociada
antes de hacer uso de la sentencia "alter table".

Example:

create table dbo.t1 (
c1 varchar(50) collate Greek_BIN
)
go

alter table dbo.t1
alter column c1 varchar(50) collate SQL_Latin1_General_CP1_CI_AI
go

drop table dbo.t1
go


AMB

"Alfredo O." wrote:

Hola a todos

No soy muy experto en SQL Server y tengo una inquietud.
En un campo varchar de una tabla cuando almaceno caracteres especiales como
las vocales tildadas o la ñ me los cambia por otros signos, creo que al
definir la base de datos no se tuvo en cuenta escoger bien la intercalación,
hago un backup borro la base de datos, la creo con la intercalación adecuada
pero al restaurar el backup vuelve y me coloca la intercalación que tenia la
base de datos anterior. La pregunta concreta es como puedo cambiar la
intercalación a una base de datos; de antemano agradezco al que me pueda
colaborar.

Saludos,

Luis Alfredo Ortigoza T.
ALFCOM S.A.
Bogotá D.C. COLOMBIA





Preguntas similares