2013-05-07 28 views
20

tôi có thông báo lỗi sau:Đăng nhập thất bại cho người sử dụng IIS AppPool myAppPool

Cannot open database "SmallBakery" requested by the login. The login failed. Login failed for user 'IIS APPPOOL\MyAppPool'

Làm thế nào có thể khắc phục điều này? Tôi đang sử dụng Windows 7 Enterprise Edition và máy chủ Sql 2012.

+0

Cho phép người dùng đó truy cập vào máy chủ sql? –

+0

Bạn có thể đăng chuỗi kết nối DB của mình không? – JackLock

Trả lời

21

Nếu bạn không thay đổi, mỗi nhóm ứng dụng có nhận dạng riêng. Trong trường hợp của bạn, chỉ cần thêm người dùng mới vào cơ sở dữ liệu của bạn SmallBakery với tên IIS APPPOOL\MyAppPool bằng cách sử dụng SQL Management Studio. Bạn tìm thấy danh sách người dùng trong subnode "Security/Users" của cơ sở dữ liệu của bạn. Điều này sẽ trông giống như thế:

enter image description here

Để thử nghiệm, cho phép người dùng là thành viên của vai trò db_owner. Nếu cách đó hoạt động, hãy xóa vai trò này và chỉ để cho nó là thành viên của db_datareaderdb_datawriter.

Bằng cách này, mỗi nhóm ứng dụng (có lẽ mỗi trang web, nếu tất cả đều sử dụng nhóm ứng dụng của riêng mình) chỉ có quyền truy cập vào cơ sở dữ liệu tương ứng.

+1

Cảm ơn !! nó rất hữu ích !! – Freddy

+1

Đã làm việc cho tôi! Cảm ơn. – RobHurd

+2

Thông tin chi tiết bổ sung trong câu trả lời sau đã giúp tôi giải quyết cùng một lỗi: http: // stackoverflow.com/a/1973895/704808 – weir

1

Tùy thuộc vào cách bạn muốn xác thực trong ứng dụng của mình. Bạn đang cố gắng sử dụng mạo danh trong ứng dụng của mình?

Điều đang xảy ra ngay bây giờ là danh tính của nhóm ứng dụng của bạn trong IIS đang được truyền khi cố truy cập cơ sở dữ liệu. Bạn có thể thay đổi danh tính của nhóm ứng dụng thành một thứ có quyền truy cập vào cơ sở dữ liệu hoặc bạn có thể thay đổi chuỗi kết nối của mình để sử dụng thông tin đăng nhập cụ thể thay vì bảo mật tích hợp.

+0

Tôi đang sử dụng chuỗi kết nối sau: connectionString = "Data Source = HAIDRWHP5005160 \ SQLEXPRESS; Initial Catalog = SmallBakery; Integrated Security = True" Trong IIS App bơi tôi có: Idendity: ApplicationPoolIdentity – Freddy

+0

Đúng vậy. Vì vậy, như tôi đã nói, bạn sẽ cần phải thay đổi Danh tính của nhóm ứng dụng thành một thứ có quyền truy cập vào cơ sở dữ liệu hoặc thay đổi chuỗi kết nối của bạn. – squillman

+1

... hoặc thêm danh tính của hồ bơi ứng dụng làm người dùng vào cơ sở dữ liệu của bạn. –

0

Kiểm tra bài đăng này. Vấn đề của bạn có vẻ giống với một vấn đề mà tôi đã gặp phải, với cùng một thông báo lỗi chính xác.

http://blogs.msdn.com/b/sqlexpress/archive/2011/12/09/using-localdb-with-full-iis-part-2-instance-ownership.aspx

+0

tôi đã nhìn thấy một cái gì đó tương tự trong http://stackoverflow.com/questions/7698286/login-failed-for-user-iis-apppool-asp-net-v4-0 – Freddy

+0

@Freddy, Như nhận xét về câu trả lời của bạn ' đề cập đến việc nói: "Nếu bạn lo ngại về an ninh, đừng làm điều này". –

0

Giống như những người khác đã nói cho đến thời điểm này, bạn cần đưa người dùng hệ thống ứng dụng của bạn (IIS AppPool \ myapppool) và thêm nó làm người dùng cơ sở dữ liệu cho cơ sở dữ liệu đó với quyền phù hợp. Lưu ý rằng điều này sẽ làm việc chỉ tìm thấy trên IIS/Server của bạn, nhưng nếu bạn có kế hoạch di chuyển ứng dụng đến một máy chủ IIS/Sql khác nhau, nó sẽ yêu cầu thay đổi trong cả SQL Server và IIS. Tôi khuyên bạn cũng nên xem xét xác thực máy chủ sql - nó có thể thuận tiện hơn cho trường hợp cụ thể của bạn.

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