MS SQL Server 2008- MySQL에서 마이그레이션 할 때의 혼란 :“테이블에서 XYZ 선택”

StackOverflow https://stackoverflow.com/questions/611850

문제

그래서 나는 여기서 혼란 스러워요.

데이터베이스를 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에서 더 중요하지만 여전히 거기에 있습니다. 응용 프로그램에서 중요한 차이가 아니지만 여전히 알고 가치가 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top