Sie haben eine Mischung aus SQL und dynamischem SQL in Ihrer Abfrage für information_schema
. Auch QUOTENAME
ist in der where-Klausel nicht erforderlich und verhindert tatsächlich eine Übereinstimmung, da SQL Server column_name
speichert , nicht [column_name]
, in den Metadaten. Schließlich werde ich es in sys.columns
ändern denn auf diese Weise sollten wir Metadaten in SQL Server ableiten
. Versuchen Sie:
SELECT @colnames += ',' + name
FROM Prod.sys.columns
WHERE OBJECT_NAME([object_id]) = @objname
AND name <> CASE WHEN @objname = 'TableXx' THEN 'ExcludeCol1' ELSE '' END
AND name <> CASE WHEN @objname = 'TableYy' THEN 'ExcludeCol2' ELSE '' END;
SET @colnames = STUFF(@colnames, 1, 1, '');