Điểm của “Danh mục ban đầu” trong chuỗi kết nối SQL Server là gì?


91

Mọi chuỗi kết nối SQL Server tôi từng thấy trông giống như sau:

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

Tôi có cần cài đặt Danh mục ban đầu không? (Rõ ràng là không, vì ứng dụng tôi đang làm việc dường như hoạt động mà không có nó.)

Vậy thì, nó để làm gì?


31
Rất tiếc, tôi vừa phát hiện ra rằng ứng dụng của tôi đặt tất cả các bảng đã tạo của tôi ở chế độ chính. Giáo sư. Tôi có thể vừa học được câu trả lời cho câu hỏi của mình.
Ryan Lundy

Câu trả lời:


53

Nếu tên người dùng nằm trong chuỗi kết nối có quyền truy cập vào nhiều hơn thì một cơ sở dữ liệu bạn phải chỉ định cơ sở dữ liệu mà bạn muốn chuỗi kết nối kết nối. Nếu người dùng của bạn chỉ có một cơ sở dữ liệu có sẵn thì bạn đã đúng rằng điều đó không quan trọng. Nhưng bạn nên đặt điều này vào chuỗi kết nối của mình.


10
Không hoàn toàn đúng. Đăng nhập có thể không có quyền trên cơ sở dữ liệu mặc định. Vì vậy, bạn cần thay đổi ngữ cảnh cơ sở dữ liệu khi kết nối
gbn 23/12/09

Điều này là bắt buộc đối với Entity Framework nếu bạn chỉ định sử dụng tham số -ConnectionStringName, vì vậy chắc chắn là phương pháp tốt nhưng cũng có lúc cần thiết!
James G

Bạn có thể vui lòng viết lại câu trả lời này không? Tôi vẫn không hiểu sau khi đọc qua hai lần.
thatWiseGuy

33

Đây là cơ sở dữ liệu ban đầu của nguồn dữ liệu khi bạn kết nối.

Đã chỉnh sửa cho rõ ràng :

Nếu bạn có nhiều cơ sở dữ liệu trong phiên bản SQL Server của mình và bạn không muốn sử dụng cơ sở dữ liệu mặc định, bạn cần một số cách để chỉ định cơ sở dữ liệu nào bạn sẽ sử dụng.


1
Phần đầu tiên là chính xác. Phần thứ hai không đúng. Khi bạn tạo tài khoản, nó được gán một cơ sở dữ liệu mặc định sẽ được sử dụng nếu danh mục ban đầu không được chỉ định. Điều này thường được mặc định là chính (vì một số lý do không xác định).
GrayWizardx

Khi tôi nói "theo mặc định", ý tôi chỉ đơn giản là khi bạn không đủ điều kiện cho cơ sở dữ liệu trong tên đối tượng của mình. Trong mọi trường hợp, tôi đã làm rõ câu trả lời của mình.
Andy West

Tôi thích sự làm rõ của Andy, trên thực tế, nhận xét của anh ấy rất hữu ích; không thực hiện nó ngụ ý rằng nếu tôi làm đủ điều kiện mỗi cơ sở dữ liệu trong tên đối tượng của tôi, sau đó các Initial Catalog không phải là quan trọng / không liên quan?
The Red Pea

12

Đặt Danh mục ban đầu cho phép bạn đặt cơ sở dữ liệu mà các truy vấn chạy trên kết nối đó sẽ sử dụng theo mặc định. Nếu bạn không đặt điều này cho kết nối với máy chủ trong đó có nhiều cơ sở dữ liệu, trong nhiều trường hợp, bạn sẽ được yêu cầu có câu lệnh USE trong mọi truy vấn để khai báo rõ ràng cơ sở dữ liệu nào bạn đang cố gắng chạy truy vấn. Cài đặt Danh mục ban đầu là một cách tốt để khai báo cơ sở dữ liệu mặc định một cách rõ ràng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.