2015-06-03 4 views
0

Мне нужно написать запрос, который:Повторяющиеся записи во всех базах данных на основе имени столбца и значение этого имени столбца

  1. находит все экземпляры имени столбца во всех базах данных
  2. дублирует все записи, содержащие это имя столбца, изменяющие значение имени столбца на основе значения для имени этого столбца.

Так входы будет ColumnName, ColumnNameValue, ColumnNameNewValue

Я нашел этот запрос здесь http://sqlserverplanet.com/dba/find-column-in-all-databases, которая возвращает первую часть запроса мне нужно, но я не уверен, о том, как идти о делать часть 2 ...

EDIT:

с частью 2, что я хочу сделать, это найти все записи, которые совпадают с Id и дублировать их в той же таблице с другой Id

Так, например, у меня есть эта таблица:

column1 column2 
1   aaa 
2   bbb 
2   ccc 
3   ddd 

Я хочу сценарий, чтобы найти все таблицы, которые содержат «column1» (это делается в части 1), а затем найти все записи, которые имеют значение «1» для column1, и дублировать записи с новым идентификатором «99», так что результат будет

column1 column2 
1   aaa 
2   bbb 
2   ccc 
3   ddd 
99   bbb 
99   ccc 
+0

Проблема с получением помощи для № 2 заключается в том, что вы не объяснили, что вы пытаетесь сделать. Попробуйте объяснить, что вы хотите сделать более четко, и мы можем помочь. –

ответ

0

у вас есть два варианта, запрос информации схемы с каждой базой данных, а затем объединение результатов вместе

select * from db1.information_Schema.columns 
union all 
select * from db2.information_Schema.columns 

или использовать недокументированные функции sp_MSforeachdb

EXEC sp_MSforeachdb 'select * from information_Schema.columns' 

Конечно, будучи документированы, это может измениться, перестать работать или не работать правильно, чтобы начать с, так что вам нужно будет принять этот риск.

Смежные вопросы