Использование COLLATE DATABASE_DEFAULT при запросе UNION, когда заголовки таблицы неизвестны? - PullRequest
0 голосов
/ 26 октября 2018

В настоящее время я использую код вида

SELECT * FROM ##Temp1
UNION
SELECT * FROM ##Temp2

, который (поскольку временные таблицы заполняются из таблиц в 2 разных базах данных, каждая из которых использует разные параметры сортировки) приводит к сообщению об ошибке

Cannot resolve the collation conflict between "Latin1_General_CI_AS" and "SQL_Latin1_General_CP1_CI_AS" in the UNION operation.

До сих пор, когда я сталкивался с такой ошибкой, я использовал метод COLLATE DATABASE_DEFAULT, который был возможен, потому что заголовки, содержащиеся в таблицах, были постоянными.

Однако,Теперь я столкнулся с конфликтом сопоставления между двумя таблицами, где заголовки таблиц не являются постоянными.Как я могу решить эту проблему?

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

...