Sorunuzdaki gibi statik sorgular için, tablo adlarının ve sütun adlarının statik olması gerekir.
Dinamik sorgular için tam SQL'i dinamik olarak oluşturmalı ve yürütmek için sp_executesql kullanmalısınız.
Farklı veritabanlarının aynı tabloları arasındaki verileri karşılaştırmak için kullanılan bir komut dosyası örneği:
statik sorgu:
SELECT * FROM [DB_ONE].[dbo].[ACTY]
EXCEPT
SELECT * FROM [DB_TWO].[dbo].[ACTY]
çünkü kolayca tha adını değiştirmek istiyorum table
ve schema
ben bu dinamik sorgu oluşturduk:
declare @schema varchar(50)
declare @table varchar(50)
declare @query nvarchar(500)
set @schema = 'dbo'
set @table = 'ACTY'
set @query = 'SELECT * FROM [DB_ONE].['+ @schema +'].[' + @table + '] EXCEPT SELECT * FROM [DB_TWO].['+ @schema +'].[' + @table + ']'
EXEC sp_executesql @query
Dinamik sorgular dikkate alınması gereken birçok ayrıntıya sahip olduğundan ve bakımı zor olduğundan, okumanızı tavsiye ederim: Dinamik SQL'in laneti ve bereketleri