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 original
USE 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.