Как запустить один и тот же параметр для 22 похожих баз данных? - PullRequest
1 голос
/ 31 мая 2019

Я собирал данные из единой базы данных, в которой хранятся данные для 22 объектов. База данных была переработана, и для каждого из имеющихся у нас объектов имеется 22 отдельные (похожие) базы данных. Как можно использовать один и тот же код и запускать его одновременно со всеми этими базами данных? Например, как я могу передать один и тот же параметр и извлечь данные из всех 22 баз данных?

1 Ответ

1 голос
/ 31 мая 2019

Вы можете использовать CURSOR для достижения ваших требований. Здесь я поместил образец сценария динамической вставки, который вы можете настроить в соответствии с вашими требованиями. Одна ручная задача состоит в том, чтобы вставить одну за другой 22 имени базы данных, используя скрипт, во временную таблицу. Возможность состоит в том, что это разовая работа, и вы можете повторно использовать сценарий, когда это потребуется.

--The first step will be creating a Table variable 
--where you will INSERT all your database names 
--for a further loop as below- 

DECLARE @DbName VARCHAR(200)
DECLARE @DatabaseList TABLE (DbName VARCHAR(200))

INSERT INTO @DatabaseList (DbName) VALUES('db_name_1')
INSERT INTO @DatabaseList (DbName) VALUES('db_name_2')
--.......................
INSERT INTO @DatabaseList (DbName) VALUES('db_name_22')

--Now you can use CURSOR to generate the loop 
--and execute your required script as shown below

DECLARE db_cursor CURSOR FOR 
SELECT DbName FROM @DatabaseList

OPEN db_cursor  
FETCH NEXT FROM db_cursor INTO @DbName  

WHILE @@FETCH_STATUS = 0  
BEGIN  

    --HERE You need to write your script That you
    --Execute for all your database. I have added
    --a sample script for your reference only

    -- You can see the Database Name inserted in the Script Dynamically from the Loop. 
    --The script could be INSERT/Update/DELETE As per requirement

    EXEC 
    (
        'INSERT INTO '+@DbName+'.dbo.<Your_table_Name_Here> 
        SELECT * FROM  master.dbo.<Your_table_Name_Here> '
    )

    --END OF Dynamic Part

    FETCH NEXT FROM db_cursor INTO @DbName 
END 

CLOSE db_cursor  
DEALLOCATE db_cursor  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...