更改具有相同列名的多个表的列类型

时间:2014-07-21 21:32:50

标签: sql tsql

我有一个数据库,可以跟踪进行更新或插入的用户以及他们为数据库中的每个表执行此操作的用户。我们需要将类型从varchar(20)更改为varchar(50)。有没有办法编写一个脚本,该脚本将深入研究具有该列名的所有表,并将其从varchar(20)更改为varchar(50)。

这是在MS SQL 2012服务器上。

1 个答案:

答案 0 :(得分:3)

以下脚本将生成用于更改列的语句。

SELECT 'ALTER TABLE ' + QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(t.name) + ' ALTER COLUMN ' + QUOTENAME(c.name) + ' NVARCHAR(50)'
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
WHERE c.name LIKE '%columniwantchanged%'