Các trường hợp được đặt tên và mặc định là gì? Sự khác biệt giữa chúng là gì? Tại sao chúng được sử dụng?
Các trường hợp được đặt tên và mặc định là gì? Sự khác biệt giữa chúng là gì? Tại sao chúng được sử dụng?
Câu trả lời:
Theo Microsoft liên quan đến tên vs mặc định
Các ứng dụng khách kết nối với một phiên bản của Microsoft SQL Server 2005 để hoạt động với cơ sở dữ liệu SQL Server. Mỗi phiên bản SQL Server được tạo thành từ một tập hợp các dịch vụ riêng biệt có thể có các cài đặt duy nhất. Cấu trúc thư mục, cấu trúc đăng ký và tên dịch vụ đều phản ánh tên đối tượng cụ thể mà bạn xác định trong khi thiết lập.
Một thể hiện là một thể hiện mặc định, không tên hoặc nó là một thể hiện được đặt tên. Khi SQL Server 2005 được cài đặt trong phiên bản mặc định, nó không yêu cầu máy khách chỉ định tên của cá thể để tạo kết nối. Khách hàng chỉ phải biết tên máy chủ.
Một thể hiện được đặt tên được xác định bởi tên mạng của máy tính cộng với tên thể hiện mà bạn chỉ định trong khi cài đặt. Máy khách phải chỉ định cả tên máy chủ và tên thể hiện khi kết nối.
Theo mặc định, SQL Server cài đặt trong phiên bản mặc định trừ khi bạn chỉ định tên đối tượng. Tuy nhiên, SQL Server Express luôn cài đặt trong một phiên bản được đặt tên trừ khi bạn buộc cài đặt mặc định trong khi thiết lập.
Ngoài ra, bạn chỉ có thể cài đặt một mặc định (ví dụ không tên) nhưng bạn có thể cài đặt nhiều phiên bản được đặt tên.
Nhiều phần mềm của bên thứ ba thường sẽ sử dụng một thể hiện có tên mặc định mặc dù họ có thể không đề cập đến nó. Lý do rõ ràng từ các câu trả lời ở trên, các phiên bản tiêu chuẩn cài đặt một phiên bản không tên theo mặc định trong khi phiên bản Express cài đặt một phiên bản được đặt tên theo mặc định.
Điều quan trọng là phải biết về sự khác biệt từ phối cảnh này bởi vì nếu bạn có 2 hoặc 3 Máy chủ DB đang chạy, bạn có thể không bao giờ kết nối với phiên bản phù hợp. Bởi vì phần mềm của bên thứ ba đang tìm kiếm phiên bản mặc định trong khi bạn nghĩ rằng đó là phiên bản SQLEXPRESS mà nó đang cố gắng kết nối. Nó có thể tăng đáng kể thời gian khắc phục sự cố của bạn, nếu bạn không biết cách kết nối với một trường hợp được đặt tên và không được đặt tên.
Vì vậy, nếu bạn muốn kết nối với Phiên bản được đặt tên hoặc chưa được đặt tên, hãy sử dụng các nguyên tắc sau.
MY-MACHINE-NAME\SQLEXPRESS /* named version - correct */
MY-MACHINE-NAME /* unnamed version (default instance) - correct */
MY-MACHINE-NAME\MSSQLSERVER /* unnamed version (default instance) - Wrong */
Lưu ý rằng mặc dù một thể hiện mặc định có tên, nhưng nó không thể được tham chiếu bằng tên của nó!
Ngoài lời giải thích mà Brett G đã đăng, đây là một số lý do tại sao nên sử dụng chúng:
Tất cả các loại lý do để sử dụng chúng. Không có nghĩa là nó luôn luôn là một ý tưởng tốt, mặc dù: P
Một sự khác biệt thực tế khác: SQL2005 trở lên cho phép bạn cài đặt 16 phiên bản trở lên cho mỗi hệ thống. Vì cấp phép là cho mỗi CPU vật lý , mỗi lần cài đặt máy chủ SQL ( chứ không phải cho mỗi phiên bản!), Điều này có nghĩa là bạn có thể chạy tới 16 phiên bản SQL Server 2005 mà không phải trả nhiều hơn một xu so với trước đây.
Cho rằng giấy phép CPU có thể chạy tới $ 15000 (!) Trên mỗi ổ cắm, đây là điều bắt buộc đối với các cài đặt lớn với, ví dụ, 16 lõi và bộ nhớ 256GB.
Một trong những lý do tốt nhất là tách biệt cơ sở dữ liệu. Nếu bạn đang phát triển ứng dụng của riêng mình và đóng gói SQL Express với nó, thì việc cài đặt nó vào ví dụ của nó là hợp lý. Cộng với việc cung cấp cho người dùng tùy chọn chỉ định cài đặt SQL hiện có nếu họ hiểu điều đó.
Nếu bạn có một cơ sở dữ liệu quan trọng mà bạn muốn đảm bảo không có ai khác có quyền truy cập, thì nó có thể đi vào ví dụ của chính nó với ủy quyền bảo mật rất hạn chế. Giả sử đó là DB dự đoán của bạn và sau đó sao chép sang DB báo cáo trên cùng một máy chủ ** chỉ được đọc cho mọi người. Mặc dù ít có khả năng lỗi người dùng (quản trị viên), người dùng sẽ vô tình có quyền truy cập vào DB sản xuất, bằng cách giới hạn người thực sự có thể cập nhật các nhóm bảo mật trên ví dụ sản xuất cho một số người.
** thực hành tốt nói để làm cho máy chủ báo cáo trở thành một máy riêng biệt, nhưng tôi chỉ làm điều này như một ví dụ.