1
이름을 바꾸려면 특정 접두사로 시작하는 모든 테이블을 반복해야합니다. 내가 시도한 코드는 아래에 있지만 두 결과 중 하나가 끝나거나 SSMS를 충돌 (가끔)하거나 각 테이블에 대해 아래에 오류 메시지가 표시됩니다. 나는 밖으로 시도해 보았습니다. dbo
.개체 한정자를 사용하여 모든 테이블 반복 및 이름 바꾸기 MSSQL
누구나 내가 뭘 잘못하고 있는지 또는이 일을 더 좋은 방법을 제안 할 수 있습니까? 여기
No item by the name of 'dbo.prefix_TableName' could be found in the current database 'DatabaseName', given that @itemtype was input as '(null)'.
declare @oq nvarchar(max) = N'prefix_'
declare @cmd nvarchar(max)
select @cmd = a from (
select 'EXEC sp_rename ''' + TABLE_NAME + ''', ''' + REPLACE(TABLE_NAME, @oq, N'') + ''' '
from INFORMATION_SCHEMA.TABLES
for xml path('')
) t(a)
exec sp_executesql @cmd
없이
SET NOCOUNT ON;
USE [DatabaseName];
DECLARE @oq NVARCHAR(5), @tableName NVARCHAR(128), @newTableName NVARCHAR(128);
SET @oq = N'prefix_';
/*
find and rename all tables
*/
DECLARE [tableCursor] CURSOR FOR
SELECT [TABLE_NAME] FROM INFORMATION_SCHEMA.TABLES
WHERE [TABLE_TYPE] = 'BASE TABLE' AND [TABLE_NAME] LIKE @oq + '%'
ORDER BY [TABLE_NAME];
OPEN [tableCursor]
FETCH NEXT FROM [tableCursor] INTO @tableName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @newTableName = REPLACE(@tableName, @oq, N'');
EXEC('EXEC sp_rename ''dbo.' + @tableName + ''', ''' + @newTableName + '''');
END
CLOSE [tableCursor];
DEALLOCATE [tableCursor];
while 루프 내에 FETCH 문 하나가 누락되었습니다. – Squirrel
Thanks @Squirrel ... 그 것이 문제였습니다. 그걸 답으로 써야합니다. –