sql - 확인 - 에서 참조 하고 있으므로 drop schema 할 수 없습니다
SQL 쿼리에 대한 기본 스키마 설정 (4)
setuser를 시도하십시오. 예
declare @schema nvarchar (256)
set @schema=(
select top 1 TABLE_SCHEMA
from INFORMATION_SCHEMA.TABLES
where TABLE_NAME='MyTable'
)
if @schema<>'dbo' setuser @schema
스키마 이름을 미리 지정하지 않고 이름만으로 테이블을 참조 할 수 있도록 쿼리의 스키마를 설정하는 방법이 있습니까?
예를 들어, 다음과 같이하고 싶습니다.
Use [schemaName]
select * from [tableName]
이와 반대로 :
select * from [schemaName].[tableName]
나는 이것을 수행하는 "쿼리 당"방법이 있다고 생각하지 않는다. (스키마가 아닌 데이터베이스 를 지정하기 위해 use
키워드를 use
수 있지만 나중에 go
명령을 실행해야하는 것과는 기술적으로 별개의 쿼리입니다.)
SQL 서버에서 정규화 된 테이블 이름의 형식은 다음과 같습니다.
[데이터베이스]. [스키마]. [테이블]
SQL Server Management Studio에서 묻는 모든 기본값을 구성 할 수 있습니다.
기본
database
를 사용자 단위 (또는 연결 문자열)로 설정할 수 있습니다.보안> 로그인> (오른쪽 클릭) 사용자> 속성> 일반
사용자마다 기본
schema
를 설정할 수 있습니다 (단, 항상 기본값 인dbo
를 사용하는 경우에도 연결 문자열에서 구성 할 수 있다고는 생각하지 않습니다).보안> 로그인> (오른쪽 클릭) 사용자> 속성> 사용자 매핑> 기본 스키마
즉, 스키마에 dbo
를 사용 dbo
두통이 가장 적을 것입니다.
빠른 구글 이이 페이지 를 가리켰다. SQL Server 2005부터는 ALTER USER 문을 사용하여 사용자의 기본 스키마를 설정할 수 있다고 설명합니다. 불행하게도, 그것은 당신이 그것을 영구적으로 변경한다는 것을 의미한다. 그래서 당신이 스키마들 사이를 전환 할 필요가 있다면, 당신은 저장 프로 시저 또는 문장들의 묶음을 실행할 때마다 그것을 설정해야 할 것이다. 또는 here 설명 된 기술을 사용할 수 있습니다.
SQL Server 2000 또는 이전 버전을 사용하는 경우이 페이지 에서는 사용자와 스키마가 동일하다는 것을 설명합니다. 스키마 이름 앞에 테이블 이름을 추가하지 않으면 SQL Server는 먼저 현재 사용자가 소유 한 테이블을보고 dbo가 소유 한 테이블을보고 테이블 이름을 확인합니다. 다른 모든 테이블의 경우 schema \ user를 앞에 붙여야합니다.
필자가 때때로 tablenames를 많이 필요로 할 때 INFORMATION_SCHEMA 시스템 테이블에서 스키마를 더한 값을 얻습니다. value
select TABLE_SCHEMA + '.' + TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME in
(*select your table names*)