Untuk kueri statis, seperti yang ada di pertanyaan Anda, nama tabel dan nama kolom harus statis.
Untuk kueri dinamis, Anda harus membuat SQL lengkap secara dinamis, dan menggunakan sp_executesql untuk menjalankannya.
Berikut adalah contoh skrip yang digunakan untuk membandingkan data antara tabel yang sama dari database yang berbeda:
permintaan statis:
SELECT * FROM [DB_ONE].[dbo].[ACTY]
EXCEPT
SELECT * FROM [DB_TWO].[dbo].[ACTY]
karena saya ingin dengan mudah mengubah nama table
dan schema
saya telah membuat permintaan dinamis ini:
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
Karena pertanyaan dinamis memiliki banyak detail yang perlu dipertimbangkan dan sulit untuk dipertahankan, saya sarankan Anda membaca: Kutukan dan berkah dari SQL dinamis