6

Tôi đang sử dụng SQL Server 2008 R2 Express và chế độ "Xác thực Máy chủ SQL và Windows" trong cơ sở dữ liệu của tôi. Tôi có thể mở cơ sở dữ liệu sử dụng Enterprise Manager, nhưng khi tôi chạy ứng dụng aspx của tôi, tôi nhận được:Lỗi SQL Server 2008 R2 Express: Không thể mở cơ sở dữ liệu "PersonnelPro" được yêu cầu bởi thông tin đăng nhập. Đăng nhập không thành công

Cannot open database "PersonnelPro" requested by the login. The login failed.

chuỗi kết nối web.config của tôi là:

<add name="dbString" 
    connectionString="Provider=sqloledb;Data Source=AREA51\SQLEXPRESS;Initial Catalog=PersonnelPro;User Id= ****;Password= ****" />` 

Tôi tìm kiếm web và SO, nhưng không thể tìm được giải pháp. Bất kỳ ý tưởng gì sẽ gây ra vấn đề này?

Cập nhật:
Nhìn vào file log SQL ("C: \ Program Files \ Microsoft SQL Server \ MSSQL10_50.SQLEXPRESS \ MSSQL \ Log"), tôi tìm thấy điều này:

2012-12-21 05:58:00.97 Logon  Error: 18456, Severity: 14, State: 38. 
2012-12-21 05:58:00.97 Logon  Login failed for user 'PersonnelPro'. Reason: Failed to open the explicitly specified database. [CLIENT: <named pipe>] 

web này ứng dụng là bởi một công ty bên thứ 3. Vì vậy, về mặt kỹ thuật, tôi chỉ cần cấu hình tệp web.config của mình và nó sẽ hoạt động.

+1

Những nơi đầu tiên tôi bắt đầu sẽ xóa 'Provider = sqloledb;' và kiểm tra tên người dùng và mật khẩu của bạn. – Khan

+0

Nhà cung cấp = sqloledb được cung cấp bởi nhà cung cấp ứng dụng (họ đã ngừng hoạt động). Tên người dùng và mật khẩu đã được xác minh (vì tôi đã sao chép uid & pwd từ tệp web.config, dán nó vào Enterprise Manager và nó hoạt động). – DotNetRookie

+0

@JefferyKhan khi tôi xóa "Provider = sqloledb" Tôi nhận được lỗi đọc: Nhà cung cấp OLE DB không được chỉ định trong ConnectionString. Một ví dụ sẽ là, 'Nhà cung cấp = SQLOLEDB;'. – DotNetRookie

Trả lời

2

Xóa dấu cách sau ký hiệu '=' cho Id người dùng và Mật khẩu. Tôi nghĩ rằng nó đang được hiểu là một phần của giá trị.

Cập nhật:

Thông báo lỗi mới bạn được đăng (Không thể mở cơ sở dữ liệu quy định một cách rõ ràng.) Có thể có nghĩa là một trong hai điều:

  • Các DB với tên đó không tồn tại hoặc sai chính tả.
  • Người dùng bạn đang cố gắng đăng nhập không có quyền truy cập vào DB. Bạn có thể kiểm tra điều này bằng cách chạy exec sp_helpuser 'username' trong DB.
+0

Tôi đã xóa không gian, nhưng vẫn nhận được cùng một thông báo lỗi. – DotNetRookie

+0

Tên DB là lỗi đánh máy. – DotNetRookie

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