Problema con COLLATE

02/03/2004 - 00:23 por Víctor Rafael Bocanegra Arias | Informe spam
Hola grupo, les escribo para ver si me pueden ayudar con un problema que se
me ha presentado. Estamos migrando de Servidor y a la hora de migrar la
informacion me he dado cuenta que la "intercalacion" del nuevo servidor es
distinta a la del antiguo. He realizado un backup y he restaurado la
informacion y no he tenido ningun problema a la hora de realizar la
restauracion pero si he tenido problemas a la hora de ejecutar algunos
procedimientos almacenados. He cambiado la intercalacion a la antigua BD con
la del nuevo servidor pero el problema persiste. Que consejos me pueden dar
al respecto?, algun comentario sugerencia? si necesitan mas informacion solo
haganmelo saber.

Gracias anticipadamente

Victor Rafael Bocanegra Arias
Barreda Moller
Lima, Peru

Preguntas similare

Leer las respuestas

#1 Maximiliano Damian Accotto
02/03/2004 - 00:30 | Informe spam
Hola!! seria bueno que indiques bien cuales son los problemas de tus Stores,
eso si!! porque no pones el nuevo servidor con el Collate del viejito?

Bye


Salu2 enormes

Maximiliano Damian Accotto

Fundicion San Cayetano S.A.
Gerente de IT
Buenos Aires - Argentina
-
Desarrollador 3 estrellas
http://www.microsoft.com/spanish/ms...efault.asp
-
(maxi_accotto[arroba]speedy.com.ar)
MSN:
-

"Víctor Rafael Bocanegra Arias" escribió en
el mensaje news:O%23FszP%23$
Hola grupo, les escribo para ver si me pueden ayudar con un problema que


se
me ha presentado. Estamos migrando de Servidor y a la hora de migrar la
informacion me he dado cuenta que la "intercalacion" del nuevo servidor es
distinta a la del antiguo. He realizado un backup y he restaurado la
informacion y no he tenido ningun problema a la hora de realizar la
restauracion pero si he tenido problemas a la hora de ejecutar algunos
procedimientos almacenados. He cambiado la intercalacion a la antigua BD


con
la del nuevo servidor pero el problema persiste. Que consejos me pueden


dar
al respecto?, algun comentario sugerencia? si necesitan mas informacion


solo
haganmelo saber.

Gracias anticipadamente

Victor Rafael Bocanegra Arias
Barreda Moller
Lima, Peru


Respuesta Responder a este mensaje
#2 ulises
02/03/2004 - 01:07 | Informe spam
Hola Victor,

A pesar de haber cambiado el collation de la base de datos
deben seguir persistiendo el collation definido a nivel de
tablas y columnas y eso solo lo puedes modificar con un
ALTER. En este URL http://www.freevbcode.com/ShowCode.asp?
IDT48 figura código en VB .NET que te permite cambiar el
collation para toda la base de datos, revisalo a ver si te
ayuda, o si tu base de datos no es muy grande tal vez sea
más seguro hacerlo manualmente.

Saludos,
Ulises

Hola grupo, les escribo para ver si me pueden ayudar con


un problema que se
me ha presentado. Estamos migrando de Servidor y a la


hora de migrar la
informacion me he dado cuenta que la "intercalacion" del


nuevo servidor es
distinta a la del antiguo. He realizado un backup y he


restaurado la
informacion y no he tenido ningun problema a la hora de


realizar la
restauracion pero si he tenido problemas a la hora de


ejecutar algunos
procedimientos almacenados. He cambiado la intercalacion


a la antigua BD con
la del nuevo servidor pero el problema persiste. Que


consejos me pueden dar
al respecto?, algun comentario sugerencia? si necesitan


mas informacion solo
haganmelo saber.

Gracias anticipadamente

Victor Rafael Bocanegra Arias
Barreda Moller
Lima, Peru


.

Respuesta Responder a este mensaje
#3 Maximiliano D. A.
02/03/2004 - 14:29 | Informe spam
Entonces tenes 2 opciones:

O reinstalas nuevamente
o cambias para cada base el collate, fijate en lo que te paso Ulises que
parece ser interesante, sino a manopla deberas hacerlo.

Bye


Salu2
Maxi
Buenos Aires Argentina
Desarrollador Microsoft 3 Estrellas .NET
[Maxi_accotto[arroba]speedy[punto]com[punto]ar
MSN:


"Víctor Rafael Bocanegra Arias" escribió en
el mensaje news:
Gracias Maximiliano por tu interes. El error que me aparece cuando ejecute
el procedimiento almacenado es el siguiente:

Servidor: mensaje 446, nivel 16, estado 9, procedimiento spword_sdvmtos,
línea 181
No se puede resolver el conflicto de intercalación para el operador like.

Si tambien lo he pensado como solucion aunque... preferiria que sea a


nivel
Windows Collection antes que SQL Collection.

Como mas informacion los collections respectivos son:

Antiguo servidor: SQL_Latin1_General_CP1_CI_AI
Nuevo servidor: Latin1_General_CP1_CI_AI

Gracias x todo

Salu2

Victor Rafael Bocanegra Arias
Barreda Moller
Lima, Peru


"Maximiliano Damian Accotto" escribió
en el mensaje news:OR%233tU%23$
> Hola!! seria bueno que indiques bien cuales son los problemas de tus
Stores,
> eso si!! porque no pones el nuevo servidor con el Collate del viejito?
>
> Bye
>
>
> Salu2 enormes
>
> Maximiliano Damian Accotto
>
> Fundicion San Cayetano S.A.
> Gerente de IT
> Buenos Aires - Argentina
> -
> Desarrollador 3 estrellas
>


http://www.microsoft.com/spanish/ms...efault.asp
> -
> (maxi_accotto[arroba]speedy.com.ar)
> MSN:
> -
>
> "Víctor Rafael Bocanegra Arias" escribió


en
> el mensaje news:O%23FszP%23$
> > Hola grupo, les escribo para ver si me pueden ayudar con un problema


que
> se
> > me ha presentado. Estamos migrando de Servidor y a la hora de migrar


la
> > informacion me he dado cuenta que la "intercalacion" del nuevo


servidor
es
> > distinta a la del antiguo. He realizado un backup y he restaurado la
> > informacion y no he tenido ningun problema a la hora de realizar la
> > restauracion pero si he tenido problemas a la hora de ejecutar algunos
> > procedimientos almacenados. He cambiado la intercalacion a la antigua


BD
> con
> > la del nuevo servidor pero el problema persiste. Que consejos me


pueden
> dar
> > al respecto?, algun comentario sugerencia? si necesitan mas


informacion
> solo
> > haganmelo saber.
> >
> > Gracias anticipadamente
> >
> > Victor Rafael Bocanegra Arias
> > Barreda Moller
> > Lima, Peru
> >
> >
>
>







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.593 / Virus Database: 376 - Release Date: 24/02/2004
Respuesta Responder a este mensaje
#4 Víctor Rafael Bocanegra Arias
02/03/2004 - 14:31 | Informe spam
Gracias Maximiliano por tu interes. El error que me aparece cuando ejecute
el procedimiento almacenado es el siguiente:

Servidor: mensaje 446, nivel 16, estado 9, procedimiento spword_sdvmtos,
línea 181
No se puede resolver el conflicto de intercalación para el operador like.

Si tambien lo he pensado como solucion aunque... preferiria que sea a nivel
Windows Collection antes que SQL Collection.

Como mas informacion los collections respectivos son:

Antiguo servidor: SQL_Latin1_General_CP1_CI_AI
Nuevo servidor: Latin1_General_CP1_CI_AI

Gracias x todo

Salu2

Victor Rafael Bocanegra Arias
Barreda Moller
Lima, Peru


"Maximiliano Damian Accotto" escribió
en el mensaje news:OR%233tU%23$
Hola!! seria bueno que indiques bien cuales son los problemas de tus


Stores,
eso si!! porque no pones el nuevo servidor con el Collate del viejito?

Bye


Salu2 enormes

Maximiliano Damian Accotto

Fundicion San Cayetano S.A.
Gerente de IT
Buenos Aires - Argentina
-
Desarrollador 3 estrellas
http://www.microsoft.com/spanish/ms...efault.asp
-
(maxi_accotto[arroba]speedy.com.ar)
MSN:
-

"Víctor Rafael Bocanegra Arias" escribió en
el mensaje news:O%23FszP%23$
> Hola grupo, les escribo para ver si me pueden ayudar con un problema que
se
> me ha presentado. Estamos migrando de Servidor y a la hora de migrar la
> informacion me he dado cuenta que la "intercalacion" del nuevo servidor


es
> distinta a la del antiguo. He realizado un backup y he restaurado la
> informacion y no he tenido ningun problema a la hora de realizar la
> restauracion pero si he tenido problemas a la hora de ejecutar algunos
> procedimientos almacenados. He cambiado la intercalacion a la antigua BD
con
> la del nuevo servidor pero el problema persiste. Que consejos me pueden
dar
> al respecto?, algun comentario sugerencia? si necesitan mas informacion
solo
> haganmelo saber.
>
> Gracias anticipadamente
>
> Victor Rafael Bocanegra Arias
> Barreda Moller
> Lima, Peru
>
>


Respuesta Responder a este mensaje
#5 Antonio Zorita
02/03/2004 - 14:34 | Informe spam
¿Qué hay?

Crea este procedimiento almacenado y ejecutalo sobre la BD
que quieras cambiar. Funciona bastante bien, y controla
toda la cuestión de indices, dependencias, etc...

Que te aproveche.


CREATE PROCEDURE dbo.REPARACOLLATE AS

select S.*
into ##temp1
from syscolumns S
INNER JOIN SYSOBJECTS O
ON O.ID = S.ID AND O.XTYPE <> 'S'
AND COMUN.DBO.FNC_BIT_UNO
(O.SYSSTAT, 14) = 0
AND O.UID = 1
where collationid <> 61480


SELECT O.ID ID_TABLA, O.NAME Tabla, I.indid INDICE, LEFT
(I.name, 30) NombreIndice, keyno ORDEN, LEFT(CO.NAME, 40)
CAMPO
into ##temp2-- , c.*, CO.*
FROM sysindexes I
INNER JOIN SYSOBJECTS O
ON O.ID = I.ID
AND O.XTYPE = 'U'
AND O.UID = 1
INNER JOIN sysindexkeys C
ON C.ID = O.ID
AND C.INDID = I.INDID
INNER JOIN SYSCOLUMNS CO
ON CO.ID = O.ID
AND CO.colid = C.COLID

WHERE I.NAME NOT LIKE '[_]%'
ORDER BY O.NAME, I.indid, keyno --CO.colid

dar problemas con el collate
select *
into ##temp3
from ##temp2 t2
inner join ##temp1 t1
on T2.ID_TABLA = T1.ID AND t2.campo = t1.name

conflictos EN TEMP4

SELECT DISTINCT OI.XTYPE, O.NAME Tabla, I.indid INDICE,
LEFT(I.name, 30) NombreIndice, keyno ORDEN, LEFT(CO.NAME,
40) CAMPO,
I.STATUS, I.ORIGFILLFACTOR
INTO ##TEMP4-- , c.*, CO.*
FROM sysindexes I
LEFT JOIN SYSOBJECTS OI
ON OI.NAME = I.NAME
INNER JOIN SYSOBJECTS O
ON O.ID = I.ID
AND O.XTYPE = 'U'
AND O.UID = 1
INNER JOIN sysindexkeys C
ON C.ID = O.ID
AND C.INDID = I.INDID
INNER JOIN SYSCOLUMNS CO
ON CO.ID = O.ID
AND CO.colid = C.COLID
inner join ##temp3 t3
on t3.tabla = o.name and
t3.nombreindice = i.name

WHERE I.NAME NOT LIKE '[_]%'
ORDER BY O.NAME, I.indid, keyno

DECLARE @SBORRA VARCHAR(2500)
DECLARE @SCREAINDICE VARCHAR(2550)
DECLARE @TABLA VARCHAR(250)
DECLARE @INDACTUAL VARCHAR(250)
DECLARE @TBLACTUAL VARCHAR(250)
DECLARE @INDICE SMALLINT
DECLARE @NOMBREINDICE VARCHAR(250)
DECLARE @CAMPO VARCHAR(250)
DECLARE @STATUS INT
DECLARE @ORIGFILLFACTOR INT
DECLARE @ESTADO INT
DECLARE @RELLENO INT
DECLARE @WITH VARCHAR(7)

CREATE TABLE ##CREABORRAINDICES (BORRA VARCHAR(2550), CREA
VARCHAR(2550))


QUE NO SEAN CLAVE PRIMARIA
DECLARE C_INDICES CURSOR FOR
SELECT TABLA,INDICE,NOMBREINDICE,CAMPO,
STATUS, ORIGFILLFACTOR
FROM ##TEMP4
WHERE XTYPE <> 'PK' or xtype is null
ORDER BY TABLA,NOMBREINDICE,ORDEN

OPEN C_INDICES

FETCH NEXT FROM C_INDICES INTO @TABLA, @INDICE,
@NOMBREINDICE, @CAMPO, @STATUS, @ORIGFILLFACTOR

INDICES
WHILE @@FETCH_STATUS = 0
BEGIN
SET @WITH = ' WITH '
SET @ESTADO = @STATUS
SET @RELLENO = @ORIGFILLFACTOR
SET @SCREAINDICE = 'CREATE '
IF COMUN.DBO.FNC_BIT_UNO(@ESTADO, 2) = 1
SET @SCREAINDICE = @SCREAINDICE
+ 'UNIQUE '
IF COMUN.DBO.FNC_BIT_UNO(@ESTADO, 5) = 1
SET @SCREAINDICE = @SCREAINDICE
+ 'CLUSTERED '
SET @SCREAINDICE = @SCREAINDICE + 'INDEX
[' + RTRIM(@NOMBREINDICE) + '] ON [' + RTRIM(@TABLA) + ']
( '

SET @INDACTUAL = @NOMBREINDICE
SET @TBLACTUAL = @TABLA

IF COMUN.DBO.FNC_BIT_UNO(@ESTADO, 2) = 1
AND COMUN.DBO.FNC_BIT_UNO(@ESTADO, 13) = 1
SET @SBORRA = 'ALTER TABLE [' +
RTRIM(@TABLA) + '] DROP CONSTRAINT [' + RTRIM
(@NOMBREINDICE) + ']'
ELSE
SET @SBORRA ='DROP INDEX [' + RTRIM
(@TABLA) + '].[' + RTRIM(@NOMBREINDICE) + ']'

WHILE @TBLACTUAL = @TABLA AND @INDACTUAL =
@NOMBREINDICE AND @@FETCH_STATUS = 0
BEGIN
SET @SCREAINDICE = @SCREAINDICE +
@CAMPO
FETCH NEXT FROM C_INDICES INTO
@TABLA, @INDICE, @NOMBREINDICE, @CAMPO, @STATUS,
@ORIGFILLFACTOR
IF @@FETCH_STATUS <> 0
SET @SCREAINDICE =
@SCREAINDICE + ')'
ELSE
IF (@INDACTUAL = @NOMBREINDICE
AND @TBLACTUAL = @TABLA)
SET @SCREAINDICE =
@SCREAINDICE + ', '
ELSE
SET @SCREAINDICE =
@SCREAINDICE + ')'

END
IF COMUN.DBO.FNC_BIT_UNO(@ESTADO, 1) = 1
BEGIN
SET @SCREAINDICE = @SCREAINDICE
+ ' WITH IGNORE_DUP_KEY '
SET @WITH = ', '
END
IF @RELLENO <> 0
BEGIN
SET @SCREAINDICE = @SCREAINDICE +
@WITH + 'FILLFACTOR = ' + CONVERT(VARCHAR, @RELLENO) + ' '
SET @WITH = ', '
END
IF COMUN.DBO.FNC_BIT_UNO(@ESTADO, 9) = 1
BEGIN
SET @SCREAINDICE = @SCREAINDICE +
@WITH + 'PAD_INDEX '
SET @WITH = ', '
END
IF COMUN.DBO.FNC_BIT_UNO(@ESTADO, 25) = 1
BEGIN
SET @SCREAINDICE = @SCREAINDICE +
@WITH + 'STATISTICS_NORECOMPUTE '
SET @WITH = ', '
END

INSERT INTO ##CREABORRAINDICES VALUES
(@SBORRA, @SCREAINDICE)

END
CLOSE C_INDICES
DEALLOCATE C_INDICES

CLAVE PRIMARIA
DECLARE C_INDICESPK CURSOR FOR
SELECT TABLA,INDICE,NOMBREINDICE,CAMPO,
STATUS, ORIGFILLFACTOR
FROM ##TEMP4
WHERE XTYPE = 'PK'
ORDER BY NOMBREINDICE,ORDEN

OPEN C_INDICESPK

FETCH NEXT FROM C_INDICESPK INTO @TABLA, @INDICE,
@NOMBREINDICE, @CAMPO, @STATUS, @ORIGFILLFACTOR

INDICES
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SCREAINDICE = 'ALTER TABLE [' + RTRIM
(@TABLA) + '] ADD CONSTRAINT [' + RTRIM(@NOMBREINDICE)
+ '] PRIMARY KEY '
IF COMUN.DBO.FNC_BIT_UNO(@ESTADO, 5) = 1
SET @SCREAINDICE = @SCREAINDICE
+ ' CLUSTERED '
SET @SCREAINDICE = @SCREAINDICE + ' ( '
SET @INDACTUAL = @NOMBREINDICE
SET @TBLACTUAL = @TABLA
SET @SBORRA ='ALTER TABLE [' + RTRIM
(@TABLA) + '] DROP CONSTRAINT [' + @NOMBREINDICE + ']'
WHILE @TBLACTUAL = @TABLA AND @INDACTUAL =
@NOMBREINDICE AND @@FETCH_STATUS = 0
BEGIN
SET @SCREAINDICE = @SCREAINDICE +
@CAMPO
FETCH NEXT FROM C_INDICESPK INTO
@TABLA, @INDICE, @NOMBREINDICE, @CAMPO, @STATUS,
@ORIGFILLFACTOR
IF @@FETCH_STATUS <> 0
SET @SCREAINDICE =
@SCREAINDICE + ')'
ELSE
BEGIN
IF (@INDACTUAL = @NOMBREINDICE
AND @TBLACTUAL = @TABLA)
SET @SCREAINDICE =
@SCREAINDICE + ', '
ELSE
SET @SCREAINDICE =
@SCREAINDICE + ')'
END

END
INSERT INTO ##CREABORRAINDICES VALUES
(@SBORRA, @SCREAINDICE)

END
CLOSE C_INDICESPK
DEALLOCATE C_INDICESPK




select distinct o0.name nombreforeign, o1.name tabla1,
o2.name tabla2, c.name campo_t1, c2.name campo_t2,
o0.STATUS, f.*
into ##temp5
from sysforeignkeys f
inner join ##temp1 t
on f.fkeyid = t.id or
f.rkeyid = t.id
inner join sysobjects o0
on o0.id = f.constid
AND o0.UID = 1
inner join sysobjects o1
on o1.id = fkeyid
AND O1.XTYPE = 'U'
AND O1.UID = 1
inner join sysobjects o2
on o2.id = rkeyid
inner join syscolumns c
on c.id = fkeyid
and c.colid = fkey
inner join syscolumns c2
on c2.id = rkeyid
and c2.colid = rkey
order by nombreforeign,keyno



DECLARE @SBORRAFOREIGN VARCHAR(2550)
DECLARE @SCREAFOREIGN VARCHAR(2550)
DECLARE @PARTE2 VARCHAR(2550)
DECLARE @TABLA1 VARCHAR(250)
DECLARE @TABLA2 VARCHAR(250)
DECLARE @FRNACTUAL VARCHAR(250)
DECLARE @FOREIGN SMALLINT
DECLARE @NOMBREFOREIGN VARCHAR(250)
DECLARE @CAMPOT1 VARCHAR(250)
DECLARE @CAMPOT2 VARCHAR(250)
DECLARE @KEYNO SMALLINT
DECLARE @TABLA_INI VARCHAR(250)


CREATE TABLE ##CREABORRAFOREIGN (BORRA VARCHAR(2550), CREA
VARCHAR(2550))


DECLARE C_FOREIGNS CURSOR FOR
SELECT
NOMBREFOREIGN,TABLA1,TABLA2,CAMPO_T1,CAMPO_T2,KEYNO
, STATUS
FROM ##TEMP5
ORDER BY NOMBREFOREIGN,KEYNO

OPEN C_FOREIGNS

FETCH NEXT FROM C_FOREIGNS INTO @NOMBREFOREIGN,
@TABLA1, @TABLA2, @CAMPOT1, @CAMPOT2, @KEYNO, @STATUS

INDICES
WHILE @@FETCH_STATUS = 0
BEGIN
SET @ESTADO = @STATUS
SET @TABLA_INI = @TABLA1
SET @SCREAFOREIGN = 'ALTER TABLE [' + RTRIM
(@TABLA1) + '] ADD CONSTRAINT [' + RTRIM(@NOMBREFOREIGN)
+ '] FOREIGN KEY ( '
SET @PARTE2 = 'REFERENCES [' + RTRIM
(@TABLA2) + '] ( '
SET @FRNACTUAL = @NOMBREFOREIGN
SET @SBORRAFOREIGN ='ALTER TABLE [' + RTRIM
(@TABLA1) + '] DROP CONSTRAINT [' + @NOMBREFOREIGN + ']'
WHILE @FRNACTUAL = @NOMBREFOREIGN AND
@@FETCH_STATUS = 0
BEGIN
SET @SCREAFOREIGN = @SCREAFOREIGN
+ @CAMPOT1
SET @PARTE2 = @PARTE2 + @CAMPOT2
FETCH NEXT FROM C_FOREIGNS INTO
@NOMBREFOREIGN, @TABLA1, @TABLA2, @CAMPOT1, @CAMPOT2,
@KEYNO, @STATUS
IF @@FETCH_STATUS <> 0
BEGIN
SET @SCREAFOREIGN =
@SCREAFOREIGN + ' )'
SET @PARTE2= @PARTE2
+ ' )'
SET @SCREAFOREIGN =
@SCREAFOREIGN + @PARTE2
END
ELSE
BEGIN
IF @FRNACTUAL =
@NOMBREFOREIGN
BEGIN
SET @SCREAFOREIGN
= @SCREAFOREIGN + ', '
SET @PARTE2 =
@PARTE2 + ', '
END
ELSE
BEGIN
SET @SCREAFOREIGN
= @SCREAFOREIGN + ')'
SET @PARTE2 =
@PARTE2 + ' )'
SET @SCREAFOREIGN
= @SCREAFOREIGN + @PARTE2
END
END

END

IF COMUN.DBO.FNC_BIT_UNO(@ESTADO, 13) = 1
SET @SCREAFOREIGN = @SCREAFOREIGN
+ ' ON DELETE CASCADE '

IF COMUN.DBO.FNC_BIT_UNO(@ESTADO, 14) = 1
SET @SCREAFOREIGN = @SCREAFOREIGN
+ ' ON UPDATE CASCADE '

IF COMUN.DBO.FNC_BIT_UNO(@ESTADO, 11) = 1
SET @SCREAFOREIGN = @SCREAFOREIGN
+ ' NOT FOR REPLICATION '

IF COMUN.DBO.FNC_BIT_UNO(@ESTADO, 9) = 1
SET @SCREAFOREIGN = @SCREAFOREIGN
+ ' ALTER TABLE ' + @TABLA_INI + ' NOCHECK CONSTRAINT ' +
@FRNACTUAL
ELSE
SET @SCREAFOREIGN = @SCREAFOREIGN
+ ' ALTER TABLE ' + @TABLA_INI + ' CHECK CONSTRAINT ' +
@FRNACTUAL

INSERT INTO ##CREABORRAFOREIGN VALUES
(@SBORRAFOREIGN, @SCREAFOREIGN)

END
CLOSE C_FOREIGNS
DEALLOCATE C_FOREIGNS





DECLARE @SBORRAINDICE VARCHAR(2550)

DECLARE @SNOMBRE VARCHAR(250)
DECLARE @STIPO VARCHAR(3)

DECLARE C_FOREIGNS CURSOR FOR
SELECT * FROM ##CREABORRAFOREIGN

OPEN C_FOREIGNS

FETCH NEXT FROM C_FOREIGNS INTO @SBORRAFOREIGN,
@SCREAFOREIGN
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @SBORRAFOREIGN
EXEC (@SBORRAFOREIGN)
FETCH NEXT FROM C_FOREIGNS INTO @SBORRAFOREIGN,
@SCREAFOREIGN
END

CLOSE C_FOREIGNS
DEALLOCATE C_FOREIGNS



DECLARE C_INDICES CURSOR FOR
SELECT * FROM ##CREABORRAINDICES

OPEN C_INDICES

FETCH NEXT FROM C_INDICES INTO @SBORRAINDICE,
@SCREAINDICE
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @SBORRAINDICE
EXEC (@SBORRAINDICE)
FETCH NEXT FROM C_INDICES INTO @SBORRAINDICE,
@SCREAINDICE
END

CLOSE C_INDICES
DEALLOCATE C_INDICES


UPDATE SYSCOLUMNS SET COLLATIONID = 61480
WHERE COLLATIONID <> NULL OR COLLATIONID <> 61480


DECLARE C_INDICES CURSOR FOR
SELECT * FROM ##CREABORRAINDICES

OPEN C_INDICES

FETCH NEXT FROM C_INDICES INTO @SBORRAINDICE,
@SCREAINDICE
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @SCREAINDICE
EXEC (@SCREAINDICE)
FETCH NEXT FROM C_INDICES INTO @SBORRAINDICE,
@SCREAINDICE
END

CLOSE C_INDICES
DEALLOCATE C_INDICES


DECLARE C_FOREIGNS CURSOR FOR
SELECT * FROM ##CREABORRAFOREIGN

OPEN C_FOREIGNS

FETCH NEXT FROM C_FOREIGNS INTO @SBORRAFOREIGN,
@SCREAFOREIGN
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @SCREAFOREIGN
EXEC (@SCREAFOREIGN)
FETCH NEXT FROM C_FOREIGNS INTO @SBORRAFOREIGN,
@SCREAFOREIGN
END

CLOSE C_FOREIGNS
DEALLOCATE C_FOREIGNS



DECLARE C_RECOMPILAR CURSOR FOR
SELECT [NAME],TYPE FROM SYSOBJECTS
WHERE TYPE = 'P' OR TYPE = 'V' OR TYPE
= 'TR'

OPEN C_RECOMPILAR

FETCH NEXT FROM C_RECOMPILAR INTO @SNOMBRE, @STIPO
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SNOMBRE = RTRIM(@SNOMBRE)
EXEC ('SP_RECOMPILE [' + @SNOMBRE + ']')
FETCH NEXT FROM C_RECOMPILAR INTO @SNOMBRE, @STIPO
END

CLOSE C_RECOMPILAR
DEALLOCATE C_RECOMPILAR

DROP TABLE ##TEMP1
DROP TABLE ##TEMP2
DROP TABLE ##TEMP3
DROP TABLE ##TEMP4
DROP TABLE ##TEMP5
DROP TABLE ##CREABORRAINDICES
DROP TABLE ##CREABORRAFOREIGN
GO
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida