2010-01-05 4 views
6

모든 테이블에 같은 문자 집합이 접두사로있는 데이터베이스가 있습니다. 이것은 한 번에 수백 개의 다른 테이블이있는 애완 동물 프로젝트를 위해 설정된 공유 데이터베이스에 있었기 때문에 수행되었습니다. 응용 프로그램 및 데이터베이스는 이제 해당 단계에서 벗어나 자체 준비가 완료 될 준비가되었습니다. 각 테이블의 접두사를 제거하고 싶습니다. 각 테이블을 개별적으로 마우스 오른쪽 단추로 클릭하고 이름을 바꾸는 것보다 쉬운 방법이 있습니까?데이터베이스의 모든 테이블 이름 바꾸기

+1

새 테이블에 대한 새로운 명명 스키마를 사용하여 새 데이터베이스를 만들고 데이터를 선택했습니다. –

+0

이걸 한번보세요 - "테이블 및 저장 프로 시저의 대량 이름 바꾸기"http://stackoverflow.com/questions/1098585/mass-renaming-of-tables-and-stored-procedures – Bratch

답변

2

전체 데이터베이스를 스크립팅하고 스크립트에서 문자열 바꾸기를 수행하고 새 데이터베이스에서 실행 한 다음 데이터를 가져올 수 있습니다. 물론 이것은 교체 할 문자열을 얼마나 잘 일치시킬 수 있는지에 달려 있습니다. 응용 프로그램에 해당 변경 사항을 적용해야 할 수도 있습니다. 테스트 데이터베이스에서 항상 이와 같은 방식으로 시도해 볼 수 있습니다.

도 이것 좀보세요 - Mass Renaming of Tables and Stored Procedures

한 가지 방법은 약간의 비용이, 다른 하나는 내 제안과 유사하다.

+0

@Bratch +1 나가 말한 것을 말하는의 매우 더 좋은 방법. – Hogan

+1

@Hogan 그래,하지만 다르다.실제로 메타 데이터를 수정하는 스크립트를 작성하는 것과 같은 대답이 들립니다. 나는 스크립트를 작성해야한다는 말은 아니며 데이터베이스를 SQL 명령 (오른쪽 클릭, 작업, 스크립트 생성)으로 스크립트 만하면됩니다. 접두어를 찾기/바꾸기 및 바꾸기를 수행 한 다음 새 데이터베이스에서 수정 된 SQL을 실행하십시오. 뷰와 sprocs의 테이블에 대한 모든 참조의 이름이 바뀝니다. db 스크립트에 의해 생성 된 SQL을 간략히 살펴보면 제대로 작동하는지 알 수 있습니다. – Bratch

4

메타 정보를보고 변경하기 위해 스크립트를 작성할 수는 있지만 모든 SP와 매개 변수가있는 쿼리가 손상되지는 않습니까?

+1

모든 것을 망칠 것입니다 - 뷰 등등. 만약에 무엇이든에 SCHEMABINDING가 있으면, 저것은 첫번째로 다루어야 할 것이다. ... –

0

먼저 테이블 이름 매개 변수가있는 저장 프로 시저를 작성하고 문자열 구문 분석 및 ALTER TABLE을 사용하여 지정된 테이블에서 접두사를 제거하십시오.

그런 다음 sp_MSforeachtable을 사용하여 각 테이블에 대해 해당 프로 시저를 호출하십시오.

는 참고 :이에서 http://weblogs.sqlteam.com/joew/archive/2007/10/23/60383.aspx

9
select 'exec sp_rename @objname=' + name + ', @newname=' + replace(name ,'prefixedchars', '') 
from sysObjects 
where type = 'U' 

결과가있을 것입니다 뭔가 같은 :

exec sp_rename @objname=prefixedcharsTable1, @newname=Table1 
exec sp_rename @objname=prefixedcharsTable2, @newname=Table2 
exec sp_rename @objname=prefixedcharsTable3, @newname=Table3 
etc... for each table in your db 

새 쿼리 창 및 실행에 그 문을 복사하기 만하면됩니다.

주의 사항은 다음과 같이

  • 당신은주의 메시지가 표시됩니다 : Caution: Changing any part of an object name could break scripts and stored procedures.
  • 당신은 어떤 저장 프로 시저, 함수, 뷰, 트리거의 테이블 이름을 변경해야합니다.
+0

이름 바꾸기 스크립트가 실행되기 전에 볼 수 있기 때문에 이것은 훌륭한 솔루션입니다. –

0

"마우스 오른쪽 버튼으로 클릭, 이름 바꾸기"관점 (참조, 절차,보기 등의 이름을 변경하지 않음)에서 순수하게 - 약간 섞으십시오. 테이블의 목록 가져 오기 : 이맥스 (또는 당신의 마음에 드는 정규식 라인 편집기)에

select name from sys.Tables 

사본과 과거와 정규식 라인 교체 실행 검색 \(xyz.*\)SP_RENAME 'xyz\1', '\1'; 이 푸와 테이블 xyzFoo을 repalces로 교체합니다. 선을 다시 SQL Server에 붙여 넣은 다음 실행하십시오.

관련 문제