Trong trường hợp ai đó có vấn đề.
Khi đính kèm cơ sở dữ liệu bằng chuỗi kết nối có chứa AttachDBFile
với SQLEXPRESS
, tôi nhận thấy kết nối này là độc quyền đối với ứng dụng ASP.NET đang sử dụng cơ sở dữ liệu. Kết nối đã chặn quyền truy cập vào tất cả các quy trình khác ở cấp tệp khi được thực hiện với System.Data.SqlClient
làm nhà cung cấp.
Để đảm bảo kết nối được chia sẻ với các quá trình khác thay vì sử dụng cơ sở dữ liệu ghi rõ tên cơ sở dữ liệu trong chuỗi kết nối của bạn Ví dụ hoặc kết nối chuỗi:
Data Source=.\SQLEXPRESS;DataBase=PlaCliGen;User ID=XXX;password=ZZZ; Connect Timeout=30
, nơi PlaCliGen
là tên (hoặc tên logic) mà máy chủ SQLEXPRESS biết cơ sở dữ liệu.
Bằng cách kết nối với cơ sở dữ liệu với AttachDBFile, hãy cung cấp đường dẫn đến tệp .mdf (namely : replacing DataBase = PlacliGen by AttachDBFile = c:\vs\placligen\app_data\placligen.mdf)
Tệp được kết nối độc quyền và không có quy trình nào khác có thể kết nối với cơ sở dữ liệu.
ah ok, bây giờ tôi nhận được nó: Tôi đã xóa tham số UserInstance = true khỏi chuỗi kết nối và có vẻ như hoạt động tốt. Và những gì về tham số AttachDbFileName? Nguy hiểm với cái đó là gì? – frenchie
Tại sao bạn chỉ muốn đính kèm cơ sở dữ liệu trong khi chương trình của bạn đang sử dụng nó? Nếu bạn đính kèm cơ sở dữ liệu * vào máy chủ SQL của bạn * thì bạn có thể truy cập nó thông qua Management Studio hoặc các chương trình khác bất cứ lúc nào. Bạn đang đạt được gì bằng cách chỉ gắn nó vào thời gian chạy trong khi bạn đang tích cực phát triển? Nếu đó là về sử dụng tài nguyên, bạn có thể tự dừng dịch vụ SQL Server. –
Tôi không biết lệnh đang làm gì. Ngay bây giờ, tôi có điều này: Data Source =. \ SQLEXPRESS; AttachDbFilename = | DataDirectory | \ MySiteDB.mdf. Làm thế nào tôi nên viết lại nó để tôi tránh làm các tập tin đính kèm vào thời gian chạy và thay vì đi thẳng đến máy chủ SQL? Tôi đính kèm tệp DB vào máy chủ SQL bằng cách đính kèm nó trong phòng quản lý. Cái này tốt không? – frenchie