Не совсем уверен, что вы хотите здесь, так как не так много деталей, но почти уверен, что вы можете сделать что-то подобное. Это сгенерирует все операторы вставки, которые вам нужно выполнить. Вы можете вставить это в переменную и выполнить через динамический sql или просто скопировать и вставить для запуска. Не совсем уверен, где находится связанный сервер по отношению к тому, что вы выполняете свой запрос.
declare @ColumnName sysname = 'exampleColumn'
select 'select * into ' + quotename(object_name(object_id)) + ' from [LinkServer].[Database].[Schema].' + quotename(object_name(object_id)) + ' where ' + QUOTENAME(@ColumnName) + ' is not null;'
from sys.columns
where name = @ColumnName
- EDIT -
Чтобы создавать локальные таблицы только для удаленных таблиц, в которых есть хотя бы одна строка, в которой столбец не равен нулю, просто добавьте EXISTS перед выбором. Вот так.
select 'IF EXISTS(select * from [LinkServer].[Database].[Schema].' + quotename(object_name(object_id)) + ' where ' + QUOTENAME(@ColumnName) + ' is not null) select * into ' + quotename(object_name(object_id)) + ' from [LinkServer].[Database].[Schema].' + quotename(object_name(object_id)) + ' where ' + QUOTENAME(@ColumnName) + ' is not null;'
from sys.columns
where name = @ColumnName