Gagal membuat contoh pengguna SQL Server

8

Saya menggunakan Windows 7 Beta dan mencoba menginstal aplikasi web secara lokal. Situs web ini menggunakan Microsoft SQL Server 2005 Express (SQLEXPRESS) dan file MDB di folder ~ / App_Data situs web tersebut. Saya diperintahkan untuk mengkonfigurasi IIS7 untuk menggunakan Classic .NET AppPool untuk aplikasi web ini.

Setiap kali situs web dimuat, saya menerima kesalahan berikut:

Terjadi kesalahan saat mencoba menyambung ke Server Database: Gagal membuat contoh pengguna SQL Server karena kegagalan dalam mengambil jalur data aplikasi lokal pengguna. Pastikan pengguna memiliki profil pengguna lokal di komputer. Koneksi akan ditutup.

Internet penuh dengan artikel yang ditulis tentang hal ini. Kebijaksanaan yang berlaku tampaknya:

  1. Konfigurasikan Layanan SQL Express untuk menggunakan akun Sistem Lokal .
  2. Hapus direktori berikut: C: \ Users \ username \ AppData \ Microsoft \ Microsoft SQL Server Data \ SQLEXPRESS

Tidak satu pun dari perbaikan ini yang memberikan dampak. Saya telah bermain-main dengan izin dan pengaturan selama berjam-jam tetapi tidak berhasil. Adakah yang bisa menyarankan perbaikan atau membantu saya memahami cara mendapatkan informasi lebih rinci tentang masalah tersebut.

Gabe Sumner
sumber
Akun layanan apa yang dijalankan oleh IIS? Sudahkah Anda mencoba membuat akun untuk itu?
Brent Ozar

Jawaban:

13

Di IIS di bawah Windows 7, Pilih kumpulan aplikasi dan kemudian "pengaturan lanjutan." Di bawah "model proses" temukan "Muat Profil Pengguna" dan setel ke true.

SQL sekarang harus memuat di bawah akun kumpulan aplikasi default.

Ereck Johan
sumber
1

Saya memiliki masalah yang sama di workstation saya tetapi tidak pernah di server.

Ini adalah perbaikan sementara yang saya temukan beberapa waktu lalu di web dan sepertinya berhasil:

Dalam jenis editor kueri: exec sp_configure 'instance pengguna diaktifkan', 1 lalu: Konfigurasi ulang

Kemudian restart database SQL Server.

menemukan tautan ini hari ini

dan setelah pencarian cepat di StackOverflow /programming/281500/error-failed-to-generate-a-user-instance-of-sql-server

Brian Boatright
sumber
1

Brian,

Agar semua ini masuk akal, pertama lihat daftar Proses untuk semua pengguna di Task Manager.

w3wp.exe adalah proses pekerja WWW baru. Ini dijalankan di kotak pasir keamanan menggunakan izin pengguna yang disebut DefaultAppPool.

Di masa lalu, alih-alih pengguna DefaultAppPool, itu akan menjadi pengguna IUSR dan IWAM (lihat Apa akun IUSR dan IWAM di IIS? ).

Ketika Anda menggunakan penyedia keanggotaan SQL, proses w3wp.exe akan memulai SQL Server User Instance dan melampirkan ke database yang ditentukan dalam string koneksi, umumnya App_Data / ASPNETdb.mdf. Menjalankan user-instance dari SQL Server membutuhkan Profil Lokal, sehingga file sementara memiliki tempat untuk pergi.

Langkah-langkah pemecahan masalah:

  1. Pastikan proses w3wp.exe dijalankan oleh pengguna DefaultAppPool.
  2. Pastikan SQL Server mengaktifkan instans pengguna (lihat config_value dan run_value)
    exec sp_configure 'user instances enabled'
  3. Jika tidak exec
    sp_configure 'user instances enabled', 1
    maka: Konfigurasi ulang
  4. Mulai ulang SQL Server, kalau-kalau ASPNETdb.mdf dilampirkan oleh contoh pengguna yang berbeda dari SQL Server.
  5. Pastikan profil pengguna lokal C: \ Users \ DefaultAppPool direktori ada. Jika tidak, nyalakan LocalProfile = True, ini akan membuat profil lokal. Ini dilakukan di IIS Manager, Application Pools, DefaultAppPool, Pengaturan Lanjut ...
  6. Jika Anda memiliki masalah lebih lanjut dengan database, gunakan SQL Configuration Manager untuk menghubungkan ke instance pengguna dan melihat apakah db telah dilampirkan. Anda harus terhubung ke instance_pipe_name yang benar .
    SELECT 
    owning_principal_name, instance_pipe_name, heart_beat
    FROM
    sys.dm_os_child_instances
    
    
teyc
sumber