Toto je nedostatek v SQL Serveru. Pouhá existence xml sloupce v tabulce brání tomu, aby se účastnila distribuovaných dotazů (např. dotazů přes propojené připojení k serveru). To je zmíněno v této „vyřazené“ dokumentaci. Zdá se, že v dokumentaci aktuální verze o tom není žádná zmínka.
Dříve existovaly relevantní zprávy o chybách na Microsoft Connect, ale to je nyní „vyřazeno“ ve prospěch fór pro zpětnou vazbu Azure. Tato položka zpětné vazby je uzavřena instrukcí „Odešlete zpětnou vazbu přímo z dokumentace k produktu“, což by bylo v pořádku, kdyby to dokumentace k produktu skutečně zmiňovala. Tato další položka zpětné vazby zahrnuje komentář migrovaný z Connectu a má stav 'Neplánováno'.
Jedna z chybových zpráv Connect, která dříve existovala, poskytla dvě řešení:
Vytvořte [a] pohled bez sloupců XML na vzdáleném serveru a dotazujte se.
Ve vašem příkladu by to zahrnovalo přidání pohledu do
MyDatabase
vypadá to takto:CREATE VIEW V_T_B AS SELECT Id FROM T_B;
Poté můžete pomocí odkazu zadat dotaz na tento pohled a získat
Id
data. Všimněte si, že něco jakoSELECT Id FROM ( SELECT Id FROM T_B ) T_B;
není práce.
Použijte předávací dotaz ve formuláři
SELECT * from OPENQUERY (... )
Tato metoda má tu výhodu, že nevyžaduje žádnou změnu ve zdrojové databázi; Nevýhodou je, že již není možné používat standardní čtyřdílné pojmenování pro lokální i propojená data. Dotaz by vypadal takto
SELECT Id FROM OPENQUERY(DATA02, 'SELECT Id FROM T_B') T_B;
Všimněte si, že pokud skutečně děláte chcete xml data, bude tato metoda (spolu s přetypováním do a z jiného než xml datového typu) vyžadována :
SELECT Id, CAST(Stuff AS XML) Stuff FROM OPENQUERY(DATA02, 'SELECT Id, CAST(Stuff AS nvarchar(max)) Stuff FROM T_B') T_B;
Všimněte si, že chyba byla poprvé hlášena v SQL Server 2005 a zůstává neopravena v SQL Server 2017. Dosud jsem nebyl schopen zkontrolovat SQL Server 2019.