Không thể tạo phiên bản người dùng của SQL Server


8

Tôi đang sử dụng Windows 7 Beta và đang cố gắng cài đặt một ứng dụng web cục bộ. Trang web này sử dụng Microsoft SQL Server 2005 Express (SQLEXPRESS) và tệp MDB trong thư mục ~ / App_Data của trang web. Tôi đã được hướng dẫn cấu hình IIS7 để sử dụng Classic .NET AppPool cho ứng dụng web này.

Mỗi lần tải trang web, tôi nhận được lỗi sau:

Đã xảy ra lỗi khi cố gắng kết nối với Máy chủ cơ sở dữ liệu: Không thể tạo phiên bản người dùng của SQL Server do không truy xuất được đường dẫn dữ liệu ứng dụng cục bộ của người dùng. Vui lòng đảm bảo rằng người dùng có hồ sơ người dùng cục bộ trên máy tính. Kết nối sẽ được đóng lại.

Internet được đóng gói với các bài viết về chủ đề này. Sự khôn ngoan phổ biến dường như là:

  1. Định cấu hình Dịch vụ SQL Express để sử dụng tài khoản Hệ thống cục bộ .
  2. Xóa thư mục sau: C: \ Users \ username \ AppData \ Microsoft \ Microsoft SQL Server Data \ SQLEXPRESS

Cả hai bản sửa lỗi này đều không có tác động. Tôi đã sửa lại các quyền và cài đặt trong nhiều giờ nhưng không có kết quả. Bất cứ ai có thể đề nghị sửa chữa hoặc giúp tôi hiểu làm thế nào để có được thông tin chi tiết hơn về vấn đề.


IIS đang chạy theo tài khoản dịch vụ nào? Bạn đã thử tạo một tài khoản cho nó?
Brent Ozar

Câu trả lời:


13

Trong IIS trong Windows 7, Chọn nhóm ứng dụng và sau đó "cài đặt nâng cao". Trong "mô hình quy trình", tìm "Tải hồ sơ người dùng" và đặt thành đúng.

Bây giờ SQL sẽ tải dưới tài khoản nhóm ứng dụng mặc định.


1

Tôi đã có vấn đề tương tự trên máy trạm của tôi nhưng không bao giờ trên máy chủ.

Đây là một sửa chữa tạm thời tôi tìm thấy một thời gian trở lại trên web và nó dường như hoạt động:

Trong loại trình soạn thảo truy vấn: exec sp_cool 'phiên bản người dùng được bật', 1 rồi: Cấu hình lại

Sau đó khởi động lại cơ sở dữ liệu SQL Server.

tìm thấy liên kết này ngày hôm nay

và sau khi tìm kiếm nhanh trên StackOverflow /programming/281500/error-fails-to-generate-a-user-instance-of-sql-server


1

Brian,

Để điều này hoàn toàn có ý nghĩa, trước tiên hãy xem danh sách Quy trình cho tất cả người dùng trên Trình quản lý tác vụ.

w3wp.exe là quy trình nhân viên WWW mới. Nó được chạy trong một hộp cát bảo mật bằng cách sử dụng quyền của người dùng có tên DefaultAppPool.

Vào thời xưa, thay vì người dùng DefaultAppPool, đó sẽ là người dùng IUSR và IWAM (xem Tài khoản IUSR và IWAM để làm gì trong IIS? ).

Khi bạn sử dụng nhà cung cấp thành viên SQL, quy trình w3wp.exe sẽ khởi động Trường hợp người dùng SQL Server và đính kèm vào cơ sở dữ liệu được chỉ định trong chuỗi kết nối, thường là App_Data / ASPNETdb.mdf. Chạy phiên bản người dùng của SQL Server yêu cầu Hồ sơ cục bộ, để các tệp tạm thời có nơi để đi.

Các bước khắc phục sự cố:

  1. Đảm bảo quy trình w3wp.exe được chạy bởi người dùng DefaultAppPool.
  2. Đảm bảo rằng SQL Server đã kích hoạt phiên bản người dùng (xem config_value và run_value)
    exec sp_configure 'user instances enabled'
  3. Nếu không thực hiện
    sp_configure 'user instances enabled', 1
    thì: Cấu hình lại
  4. Khởi động lại SQL Server, chỉ trong trường hợp ASPNETdb.mdf được đính kèm bởi một phiên bản người dùng khác của SQL Server.
  5. Đảm bảo hồ sơ người dùng cục bộ C: \ Users \ DefaultAppPool tồn tại. Nếu không, hãy bật LocalProfile = True, điều này sẽ tạo hồ sơ cục bộ. Điều này được thực hiện trong IIS Manager, Application Pools, DefaultAppPool, Advanced Settings ...
  6. Nếu bạn có thêm vấn đề với cơ sở dữ liệu, hãy sử dụng Trình quản lý cấu hình SQL để kết nối với phiên bản người dùng và xem db đã được đính kèm chưa. Bạn cần kết nối với instance_pipe_name chính xác .
    SELECT 
    owning_principal_name, instance_pipe_name, heart_beat
    FROM
    sys.dm_os_child_instances
    
    
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.