66

내가 본 모든 SQL Server 연결 문자열은 다음과 같습니다.SQL Server 연결 문자열에서 "초기 카탈로그"의 요점은 무엇입니까?

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

초기 카탈로그 설정이 필요합니까? (분명히, 내가하지 않고 일하는 것처럼 보이는 애플 리케이션 이후로.)

그럼, 그게 뭐야?

+24

흠, 방금 만든 앱이 모든 만든 테이블을 마스터에 저장한다는 것을 발견했습니다. 죄송합니다. 나는 내 질문에 대한 답을 방금 배웠을 것이다. –

답변

38

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

+7

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

+0

-ConnectionStringName 매개 변수를 사용하여 지정하면 Entity Framework에 필요합니다. 따라서 확실히 좋은 방법이지만 필요할 때도 필요합니다! –

29

연결시이 데이터 소스는 initial database입니다. 선명도에 대한

편집

: 당신은 당신의 SQL Server 인스턴스에 여러 데이터베이스가 있고 기본 데이터베이스를 사용하지 않으려면

, 당신은 당신이 사용하고자하는 하나를 지정 할 수있는 방법이 필요합니다.

+1

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

+0

"기본적으로"라고 말하면 개체 이름으로 데이터베이스를 한정하지 않을 때를 의미합니다. 어쨌든 내 대답을 분명히했습니다. –

8

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