MS SQL Server 2008- MySQL에서 마이그레이션 할 때의 혼란 :“테이블에서 XYZ 선택”
-
03-07-2019 - |
문제
그래서 나는 여기서 혼란 스러워요.
데이터베이스를 MySQL에서 MS SQL Server 2008로 마이그레이션해야합니다. SQL Maestros의 "MS SQL Data Wizard"앱을 통해 데이터를 전송했습니다. MySQL 데이터베이스 "GK"에서 데이터+구조를 가져 와서 MS SQL Express 인스턴스의 데이터베이스 "GK"로 복사했습니다.
그러나 MS SQL 인스턴스에 연결하고 SQL 쿼리를 실행하려고하면 실행할 때만 결과를 얻을 수 있습니다. "select * from gk.TABLENAME
" 또는 "select * from gk.gk.TABLENAME
"... 내가 실행하면"select * from TABLENAME
"실행 후"use gk
", 나는 얻다:
오류 : 유효하지 않은 개체 이름 'tablename'
SQLSTATE : S0002
오류 코드 : 208
이것을 "정상적으로"어떻게 행동하게합니까? 즉, 테이블을 찾기 위해 어떤 데이터베이스/스키마를 명시 적으로 알릴 필요가 없도록 특정 데이터베이스에 연결합니까?
업데이트:SQL Data Wizard App에 의해 생성 된 구조를 지정해야합니다. SQL Server Management Studio의 객체 브라우저 트리를 살펴보면 다음과 같습니다.
[HOSTNAME]\SQLEXPRESS (SQL Server ...)
|-- Databases
|-- System Databases
|-- gk
|...
|-- Tables
|-- TABLE1
|-- TABLE2
|-- TABLE3
... 등등.
감사. -단
해결책
사용자의 로그인 속성 대화 상자에는 사용자의 기본 스키마를 설정할 수있는 "사용자 매핑"페이지가 있습니다. "GK"( "GK"데이터베이스에서)로 설정하면 테이블을 완전히 자격을 갖지 않고 쿼리를 쓸 수 있습니다.
다른 팁
당신이 아직하지 않은 경우 이것을 시도하십시오.
USE gk
GO
SELECT * FROM tablename
마법사가 "GK"라는 데이터베이스를 만든 다음 "GK"라는 스키마에 모든 테이블을 넣었습니다.
테이블이 명명 된 스키마 (즉, "dbo"의 기본 스키마 외에 무언가)에 존재하는 경우 스키마를 쿼리 할 때 항상 스키마를 지정해야합니다.
참고 : 일부 상황에서는 스키마/소유자를 명시 적으로 지정하지 않으면 중요한 성능 페널티가 있습니다. 이전 버전의 SQL에서 더 중요하지만 여전히 거기에 있습니다. 응용 프로그램에서 중요한 차이가 아니지만 여전히 알고 가치가 있습니다.