このスクリプトは、動的SQLとカタログビューを使用して作成できますsys.tables
。
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql += CHAR(13) + CHAR(10)
+ 'EXEC sp_rename N''' + SCHEMA_NAME([schema_id])
+ '.' + name + ''', N''' + REPLACE(name, 'tblXYZ123-', 'td')
+ ''',N''OBJECT'';'
FROM sys.tables
WHERE name LIKE 'tblXYZ123-%';
PRINT @sql;
-- EXEC sp_executesql @sql;
必要に応じてカーソルを使用することもできますが、私は上記の方が好きです。スクリプトを実行する前に、スクリプトを印刷してプレビューできます。たとえば、次のようになります。
DECLARE @t SYSNAME, @f NVARCHAR(511);
DECLARE c CURSOR LOCAL STATIC READ_ONLY FORWARD_ONLY
FOR SELECT name, SCHEMA_NAME(schema_id) + '.' + name
FROM sys.tables WHERE name LIKE 'tblXYZ123-%';
OPEN c;
FETCH NEXT FROM c INTO @t, @f;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @t = REPLACE(@t, 'tblXYZ123-', 'td');
EXEC sp_rename @f, @t, N'OBJECT';
FETCH NEXT FROM c INTO @t, @f;
END
CLOSE c;
DEALLOCATE c;