SQL Server 연결 문자열에서 "초기 카탈로그"의 요점은 무엇입니까?


91

내가 본 모든 SQL Server 연결 문자열은 다음과 같습니다.

Data Source=MyLocalSqlServerInstance;Initial Catalog=My Nifty Database;
    Integrated Security=SSPI;

초기 카탈로그 설정이 필요합니까? (내가 작업중인 앱이 그것 없이도 작동하는 것처럼 보이기 때문에 분명히 아닙니다.)

그럼, 그게 뭔데?


31
흠, 내 앱이 내가 만든 모든 테이블을 마스터에 넣는 것을 방금 발견했습니다. 죄송합니다. 내 질문에 대한 답을 방금 배웠을 수도 있습니다.
Ryan Lundy

답변:


53

연결 문자열에있는 사용자 이름이 둘 이상의 데이터베이스에 액세스 할 수있는 경우 연결 문자열을 연결할 데이터베이스를 지정해야합니다. 사용자가 사용할 수있는 데이터베이스가 하나만 있으면 문제가되지 않는다는 것이 맞습니다. 그러나 이것을 연결 문자열에 넣는 것이 좋습니다.


10
사실이 아닙니다. 로그인에 기본 데이터베이스에 대한 권한이 없을 수 있습니다. 따라서 연결시 데이터베이스 컨텍스트를 변경해야합니다
gbn

-ConnectionStringName 매개 변수를 사용하여 지정하는 경우 Entity Framework에 필요하므로 확실히 좋은 방법이지만 필요할 때도 있습니다!
James G

이 답변을 바꿔 주시겠습니까? 두 번 읽은 후에도 여전히 이해가되지 않습니다.
thatWiseGuy

33

연결할 때 데이터 소스 의 초기 데이터베이스 입니다.

명확성을 위해 편집 :

SQL Server 인스턴스에 여러 데이터베이스가 있고 기본 데이터베이스를 사용하지 않으려는 경우 사용할 데이터베이스를 지정하는 방법이 필요합니다.


1
첫 번째 부분이 정확합니다. 두 번째 부분은 올바르지 않습니다. 계정을 만들 때 초기 카탈로그가 지정되지 않은 경우 사용할 기본 데이터베이스가 할당됩니다. 일반적으로 마스터로 기본 설정됩니다 (알 수없는 이유로).
GrayWizardx 2009

"기본적으로"라고 말하면 단순히 개체 이름에서 데이터베이스를 한정하지 않을 때를 의미합니다. 어쨌든 나는 내 대답을 명확히했습니다.
Andy West

나는 Andy의 설명을 좋아한다. 사실 그의 코멘트는 도움이된다. 그것은 내가하면 것을 의미하지는 않습니다 어떻게 내 개체 이름에 모든 데이터베이스 자격, 다음 초기 카탈로그가 중요 / 무관으로하지 않습니다?
The Red Pea

12

초기 카탈로그를 설정하면 해당 연결에서 실행되는 쿼리가 기본적으로 사용할 데이터베이스를 설정할 수 있습니다. 여러 데이터베이스가있는 서버에 대한 연결에 대해 이것을 설정하지 않으면 대부분의 경우 쿼리를 실행하려는 데이터베이스를 명시 적으로 선언하기 위해 모든 쿼리에 USE 문이 있어야합니다. 초기 카탈로그 설정은 기본 데이터베이스를 명시 적으로 선언하는 좋은 방법입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.