Les cuento mi problema:
No tengo mucha experiencia con SQL y quiera saber si es posible ejecutar consulta a varias bases de datos en un solo script, les muestro mi script
Código SQL:
Ver originalUSE master
GO
IF OBJECT_ID ('CREA_ARRAY_TMP', 'P') IS NOT NULL
DROP PROCEDURE CREA_ARRAY_TMP
GO
IF EXISTS (
SELECT *
FROM SYS.TABLES P
WHERE P.NAME = 'PAPELERA'
)
DROP TABLE Papelera
GO
CREATE PROCEDURE CREA_ARRAY_TMP
AS
SELECT NAME INTO PAPELERA
FROM sys.DATABASES
WHERE NAME LIKE 'DATA%'
GO
CREA_ARRAY_TMP
IF OBJECT_ID ('ACTUALIZA_BD', 'P') IS NOT NULL
DROP PROCEDURE ACTUALIZA_BD
GO
CREATE PROCEDURE ACTUALIZA_BD
AS
DECLARE @VARIABLE NVARCHAR(256),
@DATA CHAR(7),
@ROW CHAR(6)
SET @ROW = (SELECT COUNT(*) FROM PAPELERA)
WHILE @ROW > 0
BEGIN
SET @DATA = (SELECT TOP 1 NAME FROM PAPELERA)
SET @VARIABLE = 'USE ' + @DATA
EXECUTE(@VARIABLE)
--Aui ponemos el codigo a actualizar en todas las bases de datos
--ALTER TABLE COA
--ALTER column DIRECCION varchar(150);
--Hasta aqui
SET @VARIABLE = 'USE master'
EXECUTE(@VARIABLE)
SET @ROW=@ROW-1
DELETE FROM PAPELERA WHERE NAME = @DATA
END
GO
ACTUALIZA_BD
GO
DROP PROCEDURE CREA_ARRAY_TMP
DROP PROCEDURE ACTUALIZA_BD
Básicamente lo que hace es:
Extrae todas las bases de datos que empiezan con DATA y lo almacena en una tabla papelera
luego con un bucle quiero ir cambiando de base de datos y ejecutando la consulta para todas las bases de datos, este mismo código lo utilizo para eliminar tablas temporales y me funciona perfectamente pero aquí no.
Muchas gracias, espero que alguien me pueda ayudar Saludos.