Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

vấn đề với AttachDbFilename là gì

Sử dụng User Instance nghĩa là SQL Server đang tạo một bản sao đặc biệt của tệp cơ sở dữ liệu đó để chương trình của bạn sử dụng. Nếu bạn có hai chương trình khác nhau sử dụng cùng một chuỗi kết nối đó, chúng sẽ nhận được hai bản sao hoàn toàn khác nhau của cơ sở dữ liệu. Điều này dẫn đến một nhầm lẫn, vì mọi người sẽ kiểm tra cập nhật dữ liệu bằng chương trình của họ, sau đó kết nối với một bản sao khác của cơ sở dữ liệu của họ trong Management Studio và phàn nàn rằng bản cập nhật của họ không hoạt động. Điều này sẽ đưa họ qua một loạt các bước đuổi ngỗng hoang đầy thiếu sót để cố gắng khắc phục sự cố sai.

Bài viết này đi sâu hơn về cách sử dụng tính năng này, nhưng chú ý đến lưu ý đầu tiên: User Instance tính năng đã không được dùng nữa . Trong SQL Server 2012, các lựa chọn thay thế được ưu tiên là (theo thứ tự này, IMHO):

  1. Tạo hoặc đính kèm cơ sở dữ liệu của bạn vào một phiên bản SQL Server thực. Sau đó, chuỗi kết nối của bạn sẽ chỉ cần chỉ định tên phiên bản, tên cơ sở dữ liệu và thông tin đăng nhập. Sẽ không có sự kết hợp nào vì Management Studio, Visual Studio và (các) chương trình của bạn sẽ kết nối với một bản sao duy nhất của cơ sở dữ liệu.

  2. Sử dụng SqlLocalDb để phát triển địa phương. Tôi tin rằng tôi đã chỉ cho bạn bài viết này ngày hôm qua:"Bắt đầu với SQL Server 2012 Express LocalDB."

  3. Sử dụng SQL Server Compact. Tôi ít thích tùy chọn này nhất vì chức năng và cú pháp không giống nhau - vì vậy nó không nhất thiết phải cung cấp cho bạn tất cả các chức năng mà cuối cùng bạn sẽ muốn triển khai. Phiên bản thu gọn cũng không được dùng nữa, vì vậy sẽ có điều đó.

Tất nhiên nếu bạn đang sử dụng phiên bản SqlLocalDb không phải là một tùy chọn - vì vậy bạn nên tạo một cơ sở dữ liệu thực và sử dụng nó một cách nhất quán. Tôi chỉ đề cập đến tùy chọn Compact để hoàn thiện - Tôi nghĩ rằng đó có thể là một ý tưởng tồi tệ như việc sử dụng AttachDbFileName .

CHỈNH SỬA: Tôi đã viết blog về điều này ở đây:

  • Thói quen xấu:Sử dụng AttachDBFileName


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhận AVG bỏ qua giá trị Null hoặc Zero

  2. Trả lại các hàng theo thứ tự chính xác mà chúng đã được chèn

  3. Cách trả về số lượng hàng trong kết quả truy vấn trong SQL Server

  4. Liệt kê các tài khoản được liên kết với cấu hình thư cơ sở dữ liệu trong SQL Server

  5. Cách tốt nhất để tự động tạo câu lệnh INSERT cho bảng SQL Server là gì?