[SQL] 나는 DBO에 DB 스키마를 변경하려면 어떻게
SQL나는 DBO에 DB 스키마를 변경하려면 어떻게
나는 2008 데이터베이스에 오래된 SQL 서버 (2000)에서 테이블의 무리를 가져옵니다. 모든 가져온 테이블은 예를 들어, 사용자 이름 :로 시작 jonathan.MovieData. 테이블 속성에서 그것은 DB 스키마로 조나단이 나열되어 있습니다. 내가 저장 프로 시저를 쓸 때 지금은 조나단을 포함해야합니다. 모든 테이블 이름 앞에있는 혼란된다.
어떻게 대신 조나단의 DBO로 내 모든 테이블을 변경합니까?
현재 결과 : jonathan.MovieData
원하는 결과 : dbo.MovieData
해결법
-
==============================
1.
ALTER SCHEMA dbo TRANSFER jonathan.MovieData;
ALTER SCHEMA를 참조하십시오.
일반화 된 구문 :
ALTER SCHEMA TargetSchema TRANSFER SourceSchema.TableName;
-
==============================
2.당신은 모든 talbes에 대한 ALTER SCHEMA 문 세트를 생성합니다 다음을 실행할 수 있습니다 :
당신은 모든 talbes에 대한 ALTER SCHEMA 문 세트를 생성합니다 다음을 실행할 수 있습니다 :
SELECT 'ALTER SCHEMA dbo TRANSFER ' + TABLE_SCHEMA + '.' + TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'jonathan'
그런 다음 복사 쿼리 분석기에서 문을 실행해야합니다.
여기 당신을 위해 할 것입니다 이전 스크립트입니다, 너무, 나는 개체 소유자를 변경하여 생각합니다. 하지만 2008 년에 그것을 시도하지 않았습니다.
DECLARE @old sysname, @new sysname, @sql varchar(1000) SELECT @old = 'jonathan' , @new = 'dbo' , @sql = ' IF EXISTS (SELECT NULL FROM INFORMATION_SCHEMA.TABLES WHERE QUOTENAME(TABLE_SCHEMA)+''.''+QUOTENAME(TABLE_NAME) = ''?'' AND TABLE_SCHEMA = ''' + @old + ''' ) EXECUTE sp_changeobjectowner ''?'', ''' + @new + '''' EXECUTE sp_MSforeachtable @sql
이 사이트에서 얻었다.
그것은 또한 당신이 필요한 경우 저장 발동을 위해 같은 일에 대해 이야기합니다.
-
==============================
3.
USE MyDB; GO ALTER SCHEMA dbo TRANSFER jonathan.MovieData; GO
참고 : ALTER SCHEMA
-
==============================
4.MYSCHEMA에 DBO 스키마에서 테이블을 이동 :
MYSCHEMA에 DBO 스키마에서 테이블을 이동 :
ALTER SCHEMA MySchema TRANSFER dbo.MyTable
DBO 스키마 MYSCHEMA에서 테이블을 이동 :
ALTER SCHEMA dbo TRANSFER MySchema.MyTable
-
==============================
5.난 그냥 비슷한 질문이 게시 : SQL Server 2005에서 어떻게 데이터의 손실없이 테이블의 "스키마"를 변경합니까?
난 그냥 비슷한 질문이 게시 : SQL Server 2005에서 어떻게 데이터의 손실없이 테이블의 "스키마"를 변경합니까?
압라의 훌륭한 대답에 약간의 개선 ...
나는 자기-실행이 코드가하는 간부를 추가, 나는 두 테이블 및 저장 프로 시저의 스키마를 변경할 수 있도록 나는 상단에 조합을 추가 :
DECLARE cursore CURSOR FOR select specific_schema as 'schema', specific_name AS 'name' FROM INFORMATION_SCHEMA.routines WHERE specific_schema <> 'dbo' UNION ALL SELECT TABLE_SCHEMA AS 'schema', TABLE_NAME AS 'name' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA <> 'dbo' DECLARE @schema sysname, @tab sysname, @sql varchar(500) OPEN cursore FETCH NEXT FROM cursore INTO @schema, @tab WHILE @@FETCH_STATUS = 0 BEGIN SET @sql = 'ALTER SCHEMA dbo TRANSFER [' + @schema + '].[' + @tab +']' PRINT @sql exec (@sql) FETCH NEXT FROM cursore INTO @schema, @tab END CLOSE cursore DEALLOCATE cursore
내가 너무 DBDUMP을 복원했고, 스키마가 dbo가 아니라는 것을 발견 - 난 그냥 복원에 대해이 실행 결국 ... 대상 스키마를 변경하려면 SQL Server 관리 스튜디오 또는 Visual Studio 데이터 전송을 얻으려고 시간을 보냈다 일을 내가 원하는 방식을 얻기 위해 새로운 서버에 덤프.
-
==============================
6.당신은이 게시물에 여러 데이터베이스 오브젝트의 배치 변화 스키마 설명 수 :
당신은이 게시물에 여러 데이터베이스 오브젝트의 배치 변화 스키마 설명 수 :
MSSQL에있는 모든 테이블, 뷰의 스키마 및 저장 프로 시저를 변경하는 방법
-
==============================
7.방법은 개인 일을 위해 그것을 할 수 있습니다 :
방법은 개인 일을 위해 그것을 할 수 있습니다 :
ALTER 스키마 DBO 전송 jonathan.MovieData
-
==============================
8.나는 비슷한 문제가 있었다하지만 내 스키마는 백 슬래시를했다. 이 경우, 스키마 주위에 괄호를 포함한다.
나는 비슷한 문제가 있었다하지만 내 스키마는 백 슬래시를했다. 이 경우, 스키마 주위에 괄호를 포함한다.
ALTER SCHEMA dbo TRANSFER [DOMAIN\jonathan].MovieData;
-
==============================
9.쿼리 아래의 과거 SA 계정과 새 쿼리를 클릭로 열기 SQL 서버
쿼리 아래의 과거 SA 계정과 새 쿼리를 클릭로 열기 SQL 서버
다음 실행을 클릭, 그것은 SA 계정에 모든 소유 스키마 다시 롤백됩니다
alter authorization on schema::[db_datareader] to [dbo] alter authorization on schema::[db_datareader] to [db_datareader] alter authorization on schema::[db_datawriter] to [dbo] alter authorization on schema::[db_datawriter] to [db_datawriter] alter authorization on schema::[db_securityadmin] to [dbo] alter authorization on schema::[db_securityadmin] to [db_securityadmin] alter authorization on schema::[db_accessadmin] to [dbo] alter authorization on schema::[db_accessadmin] to [db_accessadmin] alter authorization on schema::[db_backupoperator] to [dbo] alter authorization on schema::[db_backupoperator] to [db_backupoperator] alter authorization on schema::[db_ddladmin] to [dbo] alter authorization on schema::[db_ddladmin] to [db_ddladmin] alter authorization on schema::[db_owner] to [dbo] alter authorization on schema::[db_owner] to [db_owner]
-
==============================
10.MS-HELP : //MS.SYaLTsTs.vya/MS.SYaLSVR.vya.en/tsyalrefya/html/0a760138-460e-410a-a31-d60af03bf2ed.htm
MS-HELP : //MS.SYaLTsTs.vya/MS.SYaLSVR.vya.en/tsyalrefya/html/0a760138-460e-410a-a31-d60af03bf2ed.htm
ALTER SCHEMA schema_name을 TRANSFER의 securable_name
from https://stackoverflow.com/questions/1146599/how-do-i-change-db-schema-to-dbo by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 PostgreSQL을 특정 컬럼을 갖는 테이블을 찾을 수 (0) | 2020.05.31 |
---|---|
[SQL] 어떻게 SQLite는 3으로 .SQL 파일을 가져 옵니까? (0) | 2020.05.31 |
[SQL] 마이크로 소프트에 의해 명명 규칙 데이터베이스? (0) | 2020.05.30 |
[SQL] 어떻게 쿼리의이 계획을 설명 해석합니까? (0) | 2020.05.30 |
[SQL] 기록이 존재하는 경우 가장 빠른 방법은 결정 (0) | 2020.05.30 |