Modificar intercalación en varias columnas simultáneamente

18/10/2006 - 15:37 por Juan Diego Bueno Prieto | Informe spam
Buenas gente:

Resulta que he importado una BD de SQL Server 2000 a SQL Server 2005 que a
su vez había sido creada en su momento en SQL Server 7. Tengo problemas con
el cliente en VB por la intercalación, ya que muchas de las columnas de
muchas de las tablas tienen una collate de compatibilidad con sql 7
Compatibility...blablabla. El tema es que cambiándolas a la intercalación de
la BD por defecto, funcionan perfectamente, pero... son muchas tablas,
muchas columnas para hacerlo a pelo con el SSMS. ¿Conocéis alguna tabla
donde se almacenen las propiedades de las tablas, objetos columna, etc...
que con solo un update en las que tengan esta intercalación pueda hacerlo
para todas simultáneamente?. O en su defecto, alguna forma de hacer este
proceso más rápido.

Gracias de antemano

Preguntas similare

Leer las respuestas

#1 Maxi
19/10/2006 - 14:31 | Informe spam
Hola, una forma podria ser generar los SCRIPT y hacer un replace con wordpad
de los collation, luego aplicar esos script a otra bdd y migrar los datos
via DTS.
Tambien podrias hacer un cursor sobre la vista de sistema
INFORMATION_SCHEMA.COLUMNS y hacer un alter a cada tabla & columna para
cambiar el collation


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Juan Diego Bueno Prieto" escribió en el mensaje
news:
Buenas gente:

Resulta que he importado una BD de SQL Server 2000 a SQL Server 2005 que
a su vez había sido creada en su momento en SQL Server 7. Tengo problemas
con el cliente en VB por la intercalación, ya que muchas de las columnas
de muchas de las tablas tienen una collate de compatibilidad con sql 7
Compatibility...blablabla. El tema es que cambiándolas a la intercalación
de la BD por defecto, funcionan perfectamente, pero... son muchas tablas,
muchas columnas para hacerlo a pelo con el SSMS. ¿Conocéis alguna tabla
donde se almacenen las propiedades de las tablas, objetos columna, etc...
que con solo un update en las que tengan esta intercalación pueda hacerlo
para todas simultáneamente?. O en su defecto, alguna forma de hacer este
proceso más rápido.

Gracias de antemano


Respuesta Responder a este mensaje
#2 Juan Diego Bueno Prieto
19/10/2006 - 15:15 | Informe spam
Muchas gracias Maxi.

Dos cosas:

1. No puedo generar los scripts con el SSMS puesto que me salta una
excepción porque no conoce el tipo de intercalación (aunque si podría probar
a hacerlo con un sql 2000)
2. La segunda opción es muy elegante y sería lo más aproximado a lo que
busco, pero... a ver si me puedes aclarar algo:

Yo recorro con el cursor cada una de las filas que contengan dicha
intercalación. El tema es... para hacer el alter, necesito el tipo de datos,
el nombre de la tabla y de la columna. ¿Puedo y de ser así, como, crear esos
alter haciendo referencia a los contenidos de esos campos?. Me explico, si
suponemos que la tabla la almaceno en @tabla, la columna en @columna, y tipo
en @tipo, como puedo hacer algo como alter @tabla alter column @columna
@tipo base_default ?
Es decir, presupongo que eso no va a tirar como tal, como se haría para
obtener lo que quiero?

Saludos


"Maxi" escribió en el mensaje
news:
Hola, una forma podria ser generar los SCRIPT y hacer un replace con
wordpad de los collation, luego aplicar esos script a otra bdd y migrar
los datos via DTS.
Tambien podrias hacer un cursor sobre la vista de sistema
INFORMATION_SCHEMA.COLUMNS y hacer un alter a cada tabla & columna para
cambiar el collation


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Juan Diego Bueno Prieto" escribió en el
mensaje news:
Buenas gente:

Resulta que he importado una BD de SQL Server 2000 a SQL Server 2005 que
a su vez había sido creada en su momento en SQL Server 7. Tengo problemas
con el cliente en VB por la intercalación, ya que muchas de las columnas
de muchas de las tablas tienen una collate de compatibilidad con sql 7
Compatibility...blablabla. El tema es que cambiándolas a la intercalación
de la BD por defecto, funcionan perfectamente, pero... son muchas tablas,
muchas columnas para hacerlo a pelo con el SSMS. ¿Conocéis alguna tabla
donde se almacenen las propiedades de las tablas, objetos columna, etc...
que con solo un update en las que tengan esta intercalación pueda hacerlo
para todas simultáneamente?. O en su defecto, alguna forma de hacer este
proceso más rápido.

Gracias de antemano






Respuesta Responder a este mensaje
#3 Maxi
19/10/2006 - 16:18 | Informe spam
Hola, tenes que usar SQL_dinamico para eso (sp_executesql)


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Juan Diego Bueno Prieto" escribió en el mensaje
news:%
Muchas gracias Maxi.

Dos cosas:

1. No puedo generar los scripts con el SSMS puesto que me salta una
excepción porque no conoce el tipo de intercalación (aunque si podría
probar a hacerlo con un sql 2000)
2. La segunda opción es muy elegante y sería lo más aproximado a lo que
busco, pero... a ver si me puedes aclarar algo:

Yo recorro con el cursor cada una de las filas que contengan dicha
intercalación. El tema es... para hacer el alter, necesito el tipo de
datos, el nombre de la tabla y de la columna. ¿Puedo y de ser así, como,
crear esos alter haciendo referencia a los contenidos de esos campos?. Me
explico, si suponemos que la tabla la almaceno en @tabla, la columna en
@columna, y tipo en @tipo, como puedo hacer algo como alter @tabla alter
column @columna @tipo base_default ?
Es decir, presupongo que eso no va a tirar como tal, como se haría para
obtener lo que quiero?

Saludos


"Maxi" escribió en el mensaje
news:
Hola, una forma podria ser generar los SCRIPT y hacer un replace con
wordpad de los collation, luego aplicar esos script a otra bdd y migrar
los datos via DTS.
Tambien podrias hacer un cursor sobre la vista de sistema
INFORMATION_SCHEMA.COLUMNS y hacer un alter a cada tabla & columna para
cambiar el collation


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Juan Diego Bueno Prieto" escribió en el
mensaje news:
Buenas gente:

Resulta que he importado una BD de SQL Server 2000 a SQL Server 2005
que a su vez había sido creada en su momento en SQL Server 7. Tengo
problemas con el cliente en VB por la intercalación, ya que muchas de
las columnas de muchas de las tablas tienen una collate de
compatibilidad con sql 7 Compatibility...blablabla. El tema es que
cambiándolas a la intercalación de la BD por defecto, funcionan
perfectamente, pero... son muchas tablas, muchas columnas para hacerlo a
pelo con el SSMS. ¿Conocéis alguna tabla donde se almacenen las
propiedades de las tablas, objetos columna, etc... que con solo un
update en las que tengan esta intercalación pueda hacerlo para todas
simultáneamente?. O en su defecto, alguna forma de hacer este proceso
más rápido.

Gracias de antemano










Respuesta Responder a este mensaje
#4 Juan Diego Bueno Prieto
19/10/2006 - 17:23 | Informe spam
Bueno, ya lo tengo, aunque sigue teniendo un fallo, y es con las claves
principales:

El objeto 'PK_SQL_DT341' de tipo objeto es dependiente de columna
'NUMEXP_L341'.

Mens. 4922, Nivel 16, Estado 9, Línea 1

Error de ALTER TABLE ALTER COLUMN NUMEXP_L341 debido a que uno o más objetos
tienen acceso a esta columna.



alguna sugerencia?. Yo sigo investigando a ver como puedo resolver esto



Muchas gracias



"Maxi" escribió en el mensaje
news:%

Hola, tenes que usar SQL_dinamico para eso (sp_executesql)


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Juan Diego Bueno Prieto" escribió en el
mensaje news:%
Muchas gracias Maxi.

Dos cosas:

1. No puedo generar los scripts con el SSMS puesto que me salta una
excepción porque no conoce el tipo de intercalación (aunque si podría
probar a hacerlo con un sql 2000)
2. La segunda opción es muy elegante y sería lo más aproximado a lo que
busco, pero... a ver si me puedes aclarar algo:

Yo recorro con el cursor cada una de las filas que contengan dicha
intercalación. El tema es... para hacer el alter, necesito el tipo de
datos, el nombre de la tabla y de la columna. ¿Puedo y de ser así, como,
crear esos alter haciendo referencia a los contenidos de esos campos?. Me
explico, si suponemos que la tabla la almaceno en @tabla, la columna en
@columna, y tipo en @tipo, como puedo hacer algo como alter @tabla alter
column @columna @tipo base_default ?
Es decir, presupongo que eso no va a tirar como tal, como se haría para
obtener lo que quiero?

Saludos


"Maxi" escribió en el mensaje
news:
Hola, una forma podria ser generar los SCRIPT y hacer un replace con
wordpad de los collation, luego aplicar esos script a otra bdd y migrar
los datos via DTS.
Tambien podrias hacer un cursor sobre la vista de sistema
INFORMATION_SCHEMA.COLUMNS y hacer un alter a cada tabla & columna para
cambiar el collation


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Juan Diego Bueno Prieto" escribió en el
mensaje news:
Buenas gente:

Resulta que he importado una BD de SQL Server 2000 a SQL Server 2005
que a su vez había sido creada en su momento en SQL Server 7. Tengo
problemas con el cliente en VB por la intercalación, ya que muchas de
las columnas de muchas de las tablas tienen una collate de
compatibilidad con sql 7 Compatibility...blablabla. El tema es que
cambiándolas a la intercalación de la BD por defecto, funcionan
perfectamente, pero... son muchas tablas, muchas columnas para hacerlo
a pelo con el SSMS. ¿Conocéis alguna tabla donde se almacenen las
propiedades de las tablas, objetos columna, etc... que con solo un
update en las que tengan esta intercalación pueda hacerlo para todas
simultáneamente?. O en su defecto, alguna forma de hacer este proceso
más rápido.

Gracias de antemano














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