Fare un attach db via codice

giovedì 18 dicembre 2008 - 09.08

bord86 Profilo | Newbie

Ciao a tutti..sto tentando di fare l'attach di un db in sql server 2005 express..
Vi dico già che il database viene scaricato via ftp da web in una cartella sui documenti dell'utente (il db è per singolo utente).

Per fare l'attach uso la seguente stringa di connessione :
Provider=SQLNCLI;Server=.\SQLExpress;AttachDbFilename={0};Database=MyDB;Trusted_Connection=Yes;

Questo il messaggio di errore:
"Errore del sistema operativo: 5(Accesso negato.)"

Leggendo in un vecchio thread ho visto che l'utente con cui gira il servizio di sql server non ha i permessi per accedere alla cartella.
Modificando i permessi infatti funziona tutto...soltanto che non posso richiedere ad un utente di fare questa operazione..come posso fare?

Grazie in anticipo.

Martino

lbenaglia Profilo | Guru

>Leggendo in un vecchio thread ho visto che l'utente con cui gira
>il servizio di sql server non ha i permessi per accedere alla
>cartella.
>Modificando i permessi infatti funziona tutto...soltanto che
>non posso richiedere ad un utente di fare questa operazione..come
>posso fare?

Ciao Martino,

Copia il db in una directory in cui l'utente con il quale viene eseguito il servizio MSSQLServer abbia le necessarie permission (la directory predisposta a contenere i data file ed il t-log è C:\Programmi\Microsoft SQL Server\MSSQL10.<nome istanza>\MSSQL\DATA).

>Grazie in anticipo.
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

bord86 Profilo | Newbie

Ciao Lorenzo, grazie per la velocità della risposta..
A questo punto la mia domanda però diventa: come faccio a reperire via codice il nome della cartella?
non c'è proprio altro modo?avevo dato la possibilità all'utente di scegliere dove salvare il db..mi dispiacerebbe toglierla..

Grazie di nuovo
Martino

lbenaglia Profilo | Guru

>A questo punto la mia domanda però diventa: come faccio a reperire
>via codice il nome della cartella?
Tutti i path si trovano nel registry:
HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10.<nome istanza>\Setup

>non c'è proprio altro modo?avevo dato la possibilità all'utente
>di scegliere dove salvare il db..mi dispiacerebbe toglierla..
Beh, se la lasci rischi che poi l'attach non funzioni per la mancanza dei permessi.
Hai due strade:

1) Posizioni i db nella dir di default;
2) Se l'utente sceglie una dir a sua scelta, dovrai assegnare le permission di full control per l'account utilizzato dal servizio SQL Server nel caso non esistano.

>Grazie di nuovo
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

bord86 Profilo | Newbie

>2) Se l'utente sceglie una dir a sua scelta, dovrai assegnare
>le permission di full control per l'account utilizzato dal servizio
>SQL Server nel caso non esistano.

E questo non si può fare via codice suppongo....o sbaglio?

lbenaglia Profilo | Guru

>E questo non si può fare via codice suppongo....o sbaglio?
Non è un problema di SQL Server, devi chiedere a un dev

Soluzione brutta, sporca, maledetta ma veloce, è cambiare l'account del servizio MSSQLServer con un amministratore locale della macchina...
E' altamente sconsigliato per motivi di security, però funziona.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5