2010-06-19 54 views

Trả lời

67

Chúng là từ đồng nghĩa với nhau và có thể được sử dụng ngớ ngẩn.

Trong .Net, có một lớp được gọi là SqlConnectionStringBuilder rất hữu ích để xử lý các chuỗi kết nối SQL Server sử dụng thuộc tính an toàn loại để tạo các phần của chuỗi. Lớp này giữ một danh sách nội các từ đồng nghĩa để nó có thể lập bản đồ từ một giá trị khác:

 
+----------------------+-------------------------+ 
| Value    | Synonym     | 
+----------------------+-------------------------+ 
| app     | application name  | 
| async    | asynchronous processing | 
| extended properties | attachdbfilename  | 
| initial file name | attachdbfilename  | 
| connection timeout | connect timeout   | 
| timeout    | connect timeout   | 
| language    | current language  | 
| addr     | data source    | 
| address    | data source    | 
| network address  | data source    | 
| server    | data source    | 
| database    | initial catalog   | 
| trusted_connection | integrated security  | 
| connection lifetime | load balance timeout | 
| net     | network library   | 
| network    | network library   | 
| pwd     | password    | 
| persistsecurityinfo | persist security info | 
| uid     | user id     | 
| user     | user id     | 
| wsid     | workstation id   | 
+----------------------+-------------------------+ 

(Biên soạn với sự giúp đỡ từ Reflector)

Có các lớp học tương tự khác để đối phó với ODBCOleDb kết nối các chuỗi, nhưng tiếc là không có gì cho các nhà cung cấp cơ sở dữ liệu khác - tôi cho rằng onus nằm trong thư viện của nhà cung cấp để cung cấp một triển khai như vậy.

+0

Ghi chú bên cho các khán giả tương lai về điều này: Kết nối đáng tin cậy không hoạt động đối với tôi trong Sql Server 2014. Mặc dù vậy, tính năng Bảo mật tích hợp sẽ được thực hiện! – statue

+4

Trên SQL Express 2014 Tôi đang sử dụng trust_connection và đang hoạt động ... hãy lưu ý rằng underscorec vui lòng và bạn phải sử dụng "yes" thay vì "true" khi sử dụng trust_connection –

9

Chúng giống nhau.

Thật không may, có một số biến thể như thế này, bao gồm:

Server/Data Source

Cơ sở dữ liệu/Initial Catalog

Tôi không chắc chắn về nguồn gốc của các biến thể, tôi giả sử một số có nghĩa là chung chung (không phải là trung tâm cơ sở dữ liệu để chuỗi kết nối của bạn trông rất giống nhau nếu kết nối với RDBMS và kết nối với dịch vụ thư mục, v.v.)

+0

Thuật ngữ 'danh mục' là một phần của danh pháp cơ sở dữ liệu quan hệ và không đề cập đến bất kỳ điều gì ngoài RDBMS. Nó được giải thích khá tốt trong câu trả lời SO này: http://stackoverflow.com/questions/7022755/whats-the-difference-between-a-catalog-and-a-schema-in-a-relational-database – ProfK

2

Vì vậy, một chút sau, tôi phát hiện ra nguồn gốc của xung đột tên. Một bộ mã thông báo đã được ODBC sử dụng và một bộ khác được định nghĩa cho OLEDB. Đối với Sql Server vì lý do di sản, họ vẫn hỗ trợ cả hai thay thế lẫn nhau.

Trusted_Connection = true là ODBC và Bảo mật tích hợp = SSPI là OLEDB.

+1

http://www.connectionstrings.com/sql-server dường như nói hoặc là làm việc cho OLEDB. Bạn có tài nguyên khác không? – Aligned

1

Trong trường hợp của tôi, tôi đã phát hiện ra sự khác biệt giữa "Trusted_Connection" và "Integrated Security". Tôi đang sử dụng Microsoft SQL Server 2005. Ban đầu tôi đã sử dụng Windows logon (Integrated Security = SSPI). Nhưng khi tôi thay thế xác thực Windows bằng xác thực máy chủ SQL thêm ID người dùng và mật khẩu, thay thế SSPI bằng "Sai" không thành công. Nó trả về một "nhiều bước OLE DB hoạt động tạo ra lỗi". Tuy nhiên, khi tôi thay thế "Integrated Security = False" bởi "Trusted_Connection = no", nó đã hoạt động.

+0

Nếu bạn đang sử dụng xác thực SQL Server và bạn chỉ định id người dùng và mật khẩu bạn không cần phải đề cập đến "bảo mật tích hợp" hoặc "trust_connections". – grahamesd

Các vấn đề liên quan