Я работаю над проектом, целью которого является переименование всех имен таблиц и имен столбцов в базе данных sql с одного языка на другой. Я собрал все имена локальных таблиц в таблицу ltbl_TableNames и хочу добавить все столбцы этих таблиц в таблицу с именем ltbl_TableColumns.
Я также хочу, чтобы каждый столбец таблицы имел ссылку на имя своей таблицы. Например, в таблице «Продажи» есть столбец «Сумма». Таблица «Продажи» имеет идентификатор «10000». Я хочу добавить этот идентификатор в столбец с именем TableName_ID для целей связывания. Возможно ли это сделать без особых хлопот?
Отказ от ответственности: я думаю о процессе переименования. Я только хочу собрать имена столбцов со ссылкой на имя их родительской таблицы.
Заранее спасибо за ответы.
Процесс переименования вещей не моя сторона бизнеса. Я хочу только собрать столбцы в таблице со ссылкой на имя их родительской таблицы. Все остальное исправляет кто-то другой. )
Просто запросите таблицы метаданных sys.tables и sys.columns.
Все таблицы и все их столбцы уже перечислены в ИНФОРМАЦИОННОЙ СХЕМЕ docs.microsoft.com/en-us/sql/relational-databases/… Зачем это повторять?
Немного практики ради, а еще я этого не знал, хех. Сообщает ли информационная схема, частью какой таблицы являются разные столбцы?
да. оно делает. Ознакомьтесь с документом docs.microsoft.com/en-us/sql/relational-databases/…
Пожалуйста, предоставьте некоторые входные данные и ожидаемые результаты для вашего случая.


Вы можете использовать sys.tables для получения списка table name в вашей базе данных.
Точно так же для column name вы можете использовать information_schema.columns, так как это даст записи с table name.
Из приведенных выше 2-х записей вы можете легко сделать нужный вам результат.
;WITH CTABLE AS
( SELECT * FROM SYS.TABLES WHERE TYPE_DESC = 'USER_TABLE' )
, COLUMNNAME AS
( SELECT * FROM INFORMATION_SCHEMA.COLUMNS )
SELECT * INTO NEWTABLE FROM
(SELECT CTABLE.NAME AS TABLENAME , COLUMNNAME.COLUMN_NAME, COLUMNNAME.COLUMN_NAME + '_' + CAST(CTABLE.OBJECT_ID AS VARCHAR(15)) AS NEW_COLUMNNAME
FROM CTABLE INNER JOIN COLUMNNAME ON CTABLE.NAME = COLUMNNAME.TABLE_NAME ) AS D
Вы можете попробовать это для вашего результата.
Все имена таблиц и все столбцы :) Единственный жизнеспособный способ, который я вижу, это Visual Studio + SSDT -> Рефакторинг -> Переименовать объект. В зависимости от сложности (таблица/представления/хранимая процедура) это может быть несколько изменений в одном столбце, и вы пытаетесь переименовать все - the.agilesql.club/2016/09/…