Eseguire l'attach di ujn database con SQL Server Management Studio Exp...

lunedì 24 aprile 2006 - 14.46

paolopat Profilo | Junior Member

Ciao a tutti, ho installato SQL Server 2005 Express ed il tool SQL Server Management Studio Express. Con Visual Studio ho creato un nuovo Web Site ed all'interno della cartella App_Data ho creato un nuovo Database (ottenendo i due file .mdf ed .ldf). Ora vorrei usare SQL Server Management Studio Express per eseguire l'attach di questo file .mdf e gestirlo. Purtroppo nel cercare di navigare tra le cartelle ed individuare il file .mdf, la navigazione si ferma a C:\Document & Settings\User e non va oltre.....io ho il file .mdf dento Documenti\Visual Studio 2005\WebSite\Applicazione\App_data .... come mai ?

lbenaglia Profilo | Guru

>Ora vorrei
>usare SQL Server Management Studio Express per eseguire l'attach
>di questo file .mdf e gestirlo. Purtroppo nel cercare di navigare
>tra le cartelle ed individuare il file .mdf, la navigazione si
>ferma a C:\Document & Settings\User e non va oltre.....io ho
>il file .mdf dento Documenti\Visual Studio 2005\WebSite\Applicazione\App_data
>.... come mai ?

Ciao paolopat,

purtroppo non ho mai installato SSMS Express dato che lavoro esclusivamente con SQL Server 2005 Developer, Standard ed Enterprise Edition.
Ad ogni modo per effettuare l'attach di un database, puoi ricorrere al comando T-SQL CREATE DATABASE...FOR ATTACH, specificando il percorso fisico del master data file (.mdf):

CREATE DATABASE AdventureWorks ON (FILENAME = 'C:\Programmi\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdf') FOR ATTACH;

Per maggiori informazioni leggi il seguente paragrafo dei Books Online:

"CREATE DATABASE (Transact-SQL)"
http://msdn2.microsoft.com/en-us/library/ms176061.aspx

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

paolopat Profilo | Junior Member

nell'eseguire la query mi da questo errore :

Msg 5133, Level 16, State 1, Line 1
Ricerca del file "C:\Documents and Settings\Ing. Patierno\Documenti\Visual Studio 2005\WebSites\DataDemo\App_Data\Authors.mdf" nella directory non riuscita. Errore del sistema operativo: 5(Accesso negato.).

lbenaglia Profilo | Guru

>nell'eseguire la query mi da questo errore :
>
>Msg 5133, Level 16, State 1, Line 1
>Ricerca del file "C:\Documents and Settings\Ing. Patierno\Documenti\Visual
>Studio 2005\WebSites\DataDemo\App_Data\Authors.mdf" nella directory
>non riuscita. Errore del sistema operativo: 5(Accesso negato.).

La login con la quale sei connesso a Windows ha i diritti di accesso a quella directory?

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

paolopat Profilo | Junior Member

è l'unico account di windows con cui accedo...quindi credo proprio di si.

lbenaglia Profilo | Guru

>è l'unico account di windows con cui accedo...quindi credo proprio
>di si.

E con che account viene eseguito il servizio MSSQLServer?

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

paolopat Profilo | Junior Member

NT AUTHORITY\Network Service...ho provato a mettere il mio...ma mi da un errore....

lbenaglia Profilo | Guru

>NT AUTHORITY\Network Service...ho provato a mettere il mio...ma
>mi da un errore....

Prova ad impostare il LocalSystem account e riavvia il servizio.
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

paolopat Profilo | Junior Member

ora funziona correttamente, addirittura anche senza il comando che hai postato tu, mi permette di navigare fino alla cartella che contiene il database....la domanda però diventà un'altra....che cosa rappresenta l'utente LocalSystem ? Che differenza c'è con l'altro utente che era impostato ?? Ti sarei grato...

lbenaglia Profilo | Guru

>ora funziona correttamente, addirittura anche senza il comando
>che hai postato tu, mi permette di navigare fino alla cartella
>che contiene il database....la domanda però diventà un'altra....che
>cosa rappresenta l'utente LocalSystem ? Che differenza c'è con
>l'altro utente che era impostato ?? Ti sarei grato...

L'account LocalSystem ha diritti amministrativi sulla macchina locale, mentre l'account NetworkService è molto più limitato.
Quando il servizio MSSQLServer era configurato per essere eseguito con il contesto di NetworkService non aveva i permessi per accedere alla directory che conteneva il file .mdf (infatti non potevi nemmeno "browsarla").
Configurando il servizio per "girare" come LocalSystem, abbiamo aggirato la limitazione.
In alternativa potresti lasciare NetworkService assegnandogli i permessi NTFS per accedere a quella directory...

Per una descrizione dettagliata dei due account fai riferimento a questi paragrafi di MSDN:

"LocalSystem Account"
http://msdn.microsoft.com/library/en-us/dllproc/base/localsystem_account.asp

"NetworkService Account"
http://msdn.microsoft.com/library/en-us/dllproc/base/localsystem_account.asp

Ciao!

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

paolopat Profilo | Junior Member

e perchè con il mio account nono va ? ....sono l'amministratore !

lbenaglia Profilo | Guru

>e perchè con il mio account nono va ? ....sono l'amministratore!

Perché il tuo account pur appartenendo al gruppo Administrators locale non ha le permission a livello di policy per eseguire servizi.
Lo puoi verificare eseguendo lo snap-in gpedit.msc.
Seleziona "Configurazione Computer", "Impostazioni di Windows", "Impostazioni protezione", "Criteri locali", "Assegnazione diritti utente" e fai doppio click sulla policy "Accesso come servizio".
Noterai che gli utenti ASPNET e SERVIZIO DI RETE saranno abilitati ad eseguire i servizi, mentre con molta probabilità il tuo account non ci sarà.
Se proprio vuoi fare una prova inserisci il tuo account in questa policy e prova ad utilizzarlo per eseguire il servizio...

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

paolopat Profilo | Junior Member

ma da un puinto di vista della sicurezza....non è errato avviare un servizio con l'account LocalSystem ?

memmo77 Profilo | Expert

Ciao. Scusate se mi intrometto. Mi chiedevo, la stessa query:

CREATE DATABASE nomeDB
ON (FILENAME = 'C:\percorso\nomeDB.MDF')
FOR ATTACH;

Può essere usata per collegare + db con nomi differenti tra loro?

Grazie mille ciao

lbenaglia Profilo | Guru

>Ciao. Scusate se mi intrometto. Mi chiedevo, la stessa query:
>
>CREATE DATABASE nomeDB
>ON (FILENAME = 'C:\percorso\nomeDB.MDF')
>FOR ATTACH;
>
>Può essere usata per collegare + db con nomi differenti tra loro?
Ovvero? Vuoi parametrizzare il nome logico del database ed il path fisico del file MDF?
SQL Server 2005 offre l'utility command line sqlcmd.exe che tra i vari parametri permette di specificare anche variabili.
Per spiegare meglio il suo funzionamento, ti propongo il seguente esempio.

Supponiamo di avere uno script chiamato C:\>myScript.sql contenente il seguente codice:

CREATE DATABASE $(myDatabase) ON (FILENAME = '$(myPath)') FOR ATTACH;

Ora ipotizziamo di voler effettuare l'attach del database AdventureWorks all'istanza di default locale al server.
Per eseguire lo script è sufficiente aprire una shell DOS e digitare il seguente comando:

C:\>sqlcmd -E -i"C:\myScript.sql" -v myDatabase="AdventureWorks" myPath="C:\Programmi\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdf"

Il parametro -E effettua una connessione trusted (Windows Authentication) sul server locale, -i specifica il file di input e -v definisce la variabile.
Eventualmente puoi definire un file batch che richiama n volte sqlcmd specificando diversi valori per i parametri.

Come sempre puoi approfondire il discorso sui Books Online:

"sqlcmd Utility"
http://msdn2.microsoft.com/en-us/library/ms162773.aspx

"Using sqlcmd with Scripting Variables"
http://msdn2.microsoft.com/en-us/library/ms188714.aspx

>Grazie mille
Prego.

Ciao!

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

eddiebit Profilo | Newbie

Ciao a tutti,
scusate se mi intrometto ma ho lo stesso problema e non ho
capito come risolverlo. A me funzionava tutto regolarmente finchè ho installato Vista.
Ora quando tento di accedere al dsatabase mi da l'errore di cui parlavate.
Abbiate pazienza ma non capisco come impostare LocalSystem nè da dove.
Grazie mille

Eddie

lbenaglia Profilo | Guru

>scusate se mi intrometto ma ho lo stesso problema e non ho
>capito come risolverlo. A me funzionava tutto regolarmente finchè
>ho installato Vista.
>Ora quando tento di accedere al dsatabase mi da l'errore di cui
>parlavate.

Ciao Eddie,

A quale errore ti riferisci?
Puoi descrivere dettagliatamente i problemi che riscontri?
Hai fatto un upgrade da Windows XP a Windows Vista?

>Grazie mille
Prego

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

eddiebit Profilo | Newbie

Hai ragine, scusa. Sì sono passato da Xp a Vista e non riesco più a collegarmi al database.
L'errore che mi da è quello di cui parlavate un pò di post fa e cioè :
< Impossibile aprire il file fisico "C:\Progetti\MioProgetto\bin\Debug\MioDataBase.mdf" Errore del sistema operativo 5: "5(Accesso Negato) >
Ho letto i consigli che hai dato e che hanno funzionato riguardo a LocalSystem ma non so come metterli in pratica.
Tra l'altro volevo rendere disponibile il servere in rete come facevo prima e sono andato in gestione superficie di attacco abilitando la connessione tcp...però quando confermo mi dice <accesso negato>. Immagino per lo stesso problema.
Ma chi me l'ha fatto fare a passare a Vista...
Grazie mille

Eddie

skater Profilo | Newbie

Scusate se riprendo (forse) un vecchio quesito. Ho un database (preso in parte dalla rete) fatto con web developer. L'ho in parte modificato, ma per fare alcune modifiche -penso- sia obbligatorio farle da riga di comando, ovvero t-sql. Da dove si fa partire questo editor?? E' possibile farlo all'interno di web developer, oppure solo da sql management?
E, un'altra domanda... perchè sql management non mi apre il database (fatto in web developer) ???

Prego, answer me...

N.B. Le modifiche che ritengo debbano essere fatte da t-sql riguardano l'impostazione di una tabella con 2 chiavi primarie e la creazione di chiavi esterne. Ditemi se è vero, o se queste cose si possono fare anche col 'mouse'.

Grazie

lbenaglia Profilo | Guru

>Ho un database (preso in parte dalla rete) fatto con web developer.
Cos'è Web Developer?

>N.B. Le modifiche che ritengo debbano essere fatte da t-sql riguardano
>l'impostazione di una tabella con 2 chiavi primarie e la creazione
>di chiavi esterne. Ditemi se è vero, o se queste cose si possono
>fare anche col 'mouse'.
Per definizione una tabella non può avere DUE chiavi primarie, al più può avere una chiave primaria su due colonne, ma è una cosa BEN DIVERSA!!

>Grazie
Prego.

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

skater Profilo | Newbie

>Cos'è Web Developer?

web developer aka visual web developer 2005 express è uno strumento di microsoft per la creazione di siti web dinamici, supporta asp.net sia in vb che c#.

>Per definizione una tabella non può avere DUE chiavi primarie,
>al più può avere una chiave primaria su due colonne, ma è una
>cosa BEN DIVERSA!!

hai ragione!! scusa! intendevo dire su due colonne. Come è possibile farlo? ...cmq sarebbe piu opportuno spostare il mio quesito su come riuscire ad aprire questo database su sql server, piuttosto che web developer, visto che qui si parla di sql... (ora non sono sul pc sul quale lavoro, domattina ti posso trascrivere il messaggio d'errore che mi compare)

>
>>Grazie
>Prego.

AriGrazie
>
>Ciao!
ciao!!

skater Profilo | Newbie

allora, il messaggio d'errore che mi compare all'apertura del database con sql server management 2005 è:

" Nessun editor disponibile per 'c:\doc.....miofile.mdf'.
Assicurarsi che l'applicazione relativa al tipo di file (.MDF) sia installata."

Invece io riesco ad aprire senza problemi tanti altri database fatti però, direttamente con sql server manag.

grazie ancora!!

lbenaglia Profilo | Guru

>cmq sarebbe piu opportuno spostare il mio quesito su
>come riuscire ad aprire questo database su sql server, visto
>che web developer non è molto conosciuto in questo forum.. (ora
>non sono sul pc sul quale lavoro, domattina ti posso trascrivere
>il messaggio d'errore che mi compare)
Il fatto è che il tuo database è già ospite di una istanza SQL Server
Visual Web Dev (che come hai visto non conosco ) non farà altro che interrogare l'istanza SQL Server per visualizzare i database in essa contenuti.
Ora, bisogna capire quante istanze SQL Server hai installato, il loro nome e dove si trova il database che vuoi editare in SSMSE.

Dal messaggio di errore che hai riportato sembra che tu stia cercando di aprire in qualche modo il file .mdf.
Un Database è sempre costituito da almeno un master data file (.mdf) e da un transaction log (.ldf).
Per editare un database SQL Server in SSMSE, occorre prima di tutto collegarlo ad una istanza SQL Server (se non l'hai già fatto), registrare l'istanza in SSMSE e connettersi ad essa.

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

skater Profilo | Newbie

>Il fatto è che il tuo database è già ospite di una istanza SQL
>Server
>Visual Web Dev (che come hai visto non conosco ) non farà
>altro che interrogare l'istanza SQL Server per visualizzare i
>database in essa contenuti.
>Ora, bisogna capire quante istanze SQL Server hai installato,
>il loro nome e dove si trova il database che vuoi editare in
>SSMSE.

Perfetto! penso che il nocciolo sia proprio qui! io riesco infatti ad aprirlo da web developer, ma se lo apro da SSMSE (andandolo a recuperare dal suo percorso) non me lo apre.

>Dal messaggio di errore che hai riportato sembra che tu stia
>cercando di aprire in qualche modo il file .mdf.
>Un Database è sempre costituito da almeno un master data file
>(.mdf) e da un transaction log (.ldf).

Io ho entrambi i file.

>Per editare un database SQL Server in SSMSE, occorre prima di
>tutto collegarlo ad una istanza SQL Server (se non l'hai già
>fatto), registrare l'istanza in SSMSE e connettersi ad essa.


In effetti no! Non l'ho collegato a nessuna istanza di sql server!
E' possibile farlo? e come?

..nel frattempo vedo un po su web developer come gestire i database, ma penso che lo si possa fare allo stesso modo di SSMSE.


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

lbenaglia Profilo | Guru

>Perfetto! penso che il nocciolo sia proprio qui! io riesco infatti
>ad aprirlo da web developer, ma se lo apro da SSMSE (andandolo
>a recuperare dal suo percorso) non me lo apre.
Certo, come ti ho scritto prima il db deve essere agganciato ad una istanza per essere editato/utilizzato.
Dato che da web dev riesci ad aprirlo significa che è già collegato ad una istanza.
Quale? Boh, devi saperlo tu
Guarda se selezionando il nodo primario (che dovrebbe rappresentare l'istanza) esiste la possibilità di risalire alle proprietà (in genere premendo il tasto DX).

Copiati il nome del server (se è locale basta il nome macchina, localhost oppure "."), la modalità di autenticazione (Windows Authentication o SQL Server Authentication) e se sei in SQL Server Authentication la login (la password non sarà visibile, la devi conoscere tu ).

A questo punto apri SSMSE, menu View > Registered Servers, seleziona Database Engine, tasto DX, New > Server Registration... ed inserisci i dati appena copiati.

Bene, seleziona il server appena registrato, tasto DX, Connect > Object Explorer e ti verranno caricati in un tree view tutti gli oggetti del database.

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

skater Profilo | Newbie

madò.. scusami se ti sto stressando.. grazie per la precisione della risposta... ma non mi riesce... sto per odiare microsoft (..ma quanti tasti destri bisogna clikkare per delle funzioni che dovrebbero essere a vista??...vabbe, permettimi la critica!)

allora... ho fatto precisamente cio che mi hai detto, ma riesco a vedere sempre e solo i db che ho creato con sql server.

per quanto riguarda le proprietà del db in questione, esse sono (prese da web developer):

-IDENTITA'
--Nome: C:\DOCUMENTS AND SETTINGS\OPERATORE\DESKTOP\..\APP_DATA\PROVA.MDF

-CONNESSIONE
--Provider: Provider di dati .NET Framework per SQL Server
--Stato: Aperto
--Stringa di connessione: Data Source=.\SQLEXPRESS;AttachDbFilename="C:\Documents and Settings\operatore\Desktop\..\App_Data\PROVA.MDF";Integrated Security=True;User Instance=True
--Tipo: Microsoft SQL Server
--Versione: 09.00.3042

-VARIE
--Maiuscole/minuscole: False
--Percorso file primario: C:\Documents and Settings\operatore\Desktop\..\App_Data\PROVA.MDF
--Proprietario: WINXEON\operatore


...sarà forse quello 'user istance' ??


Ma invece, per scrivere t-sql su sql server, come si fa? Trovo un sacco di codici su intenet per 'create table' o 'alter table', ma dove scrivo ??

lbenaglia Profilo | Guru

>madò.. scusami se ti sto stressando.. grazie per la precisione
>della risposta... ma non mi riesce... sto per odiare microsoft
>(..ma quanti tasti destri bisogna clikkare per delle funzioni
>che dovrebbero essere a vista??...vabbe, permettimi la critica!)
Se sai quali tasti premere ti assicuro che è una banalità

>-CONNESSIONE
>--Provider: Provider di dati .NET Framework per SQL Server
>--Stato: Aperto
>--Stringa di connessione: Data Source=.\SQLEXPRESS;AttachDbFilename="C:\Documents
>and Settings\operatore\Desktop\..\App_Data\PROVA.MDF";Integrated
>Security=True;User Instance=True
Ecco qua la BOIATA che fa il tuo web dev, utilizza le user instances
Non ti spiego cosa sono (dato che googlando troverai immdiatamente la risposta) ma ti dico solo che sono IL MALE

Lancia SSMSE, connettiti all'istanza ed esegui la seguente stored procedure:

EXEC sp_attach_db @dbname = N'Nome che vuoi assegnare al tuo db', @filename1 = N'C:\DOCUMENTS AND SETTINGS\bla bla...\PROVA.MDF', @filename2 = N'C:\DOCUMENTS AND SETTINGS\bla bla...\PROVA.LDF' ;

Questa sp non fa altro che "attaccare" il database all'istanza, quindi lo vedrai comparire tra l'elenco dei tuoi database.

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

skater Profilo | Newbie

allora... ho fatto come dici.. ma mi dà questo errore:

Messaggio 5133, livello 16, stato 1, riga 1
Ricerca del file "C:\Documents and Settings\operatore\Desktop\membership_roles_api\Esempio2\autentica2\App_Data\PROVA.MDF" nella directory non riuscita. Errore del sistema operativo: 5(Accesso negato.).

dovrebbe essere lo stesso problema dei primi messaggi di questo thread.. ora dò un'occhiata se fanno anche al mio caso.. lì si parlava però di autorizzazioni d'accesso. A me invece è sempre la Windows Autentication.

ps.Ma il codice della Store Procedure che mi hai inviato va scritto in una finestra raggiungibile da:
apri sql server - connetti - tasto dx sul 'nome del server' - click su 'nuova query' (ed è li che si scrivono le stringhe e query sql?)

ciao

lbenaglia Profilo | Guru

>allora... ho fatto come dici.. ma mi dà questo errore:
>
>Messaggio 5133, livello 16, stato 1, riga 1
>Ricerca del file "C:\Documents and Settings\operatore\Desktop\membership_roles_api\Esempio2\autentica2\App_Data\PROVA.MDF"
>nella directory non riuscita. Errore del sistema operativo: 5(Accesso
>negato.).
>
>dovrebbe essere lo stesso problema dei primi messaggi di questo
>thread.. ora dò un'occhiata se fanno anche al mio caso..
Si, segui quelle istruzioni

>ps.Ma il codice della Store Procedure che mi hai inviato va scritto
>in una finestra raggiungibile da:
>apri sql server - connetti - tasto dx sul 'nome del server' -
>click su 'nuova query' (ed è li che si scrivono le stringhe e
>query sql?)
Esatto.

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

skater Profilo | Newbie

GRANDE!!! c'è l'ho fatta!!! grazie milleeeeeeee!!!!

lusiano Profilo | Newbie

Scusate ...
Potete aiutarmi a fare l'attach di un database in sqlserver 2005 avendo come sistema operativo VISTA Home Premium
L'errore che mi si presenta è il seguente
>Msg 5133, Level 16, State 1, Line 1
>Ricerca del file "C:\Documents and Settings\Utente\Documenti\Visual
>Studio 2005\WebSites\DataDemo\App_Data\Flusso.mdf" nella directory
>non riuscita. Errore del sistema operativo: 5(Accesso negato.).

Grazie anticipatamente

lbenaglia Profilo | Guru

>Potete aiutarmi a fare l'attach di un database in sqlserver 2005
>avendo come sistema operativo VISTA Home Premium
>L'errore che mi si presenta è il seguente
>>Msg 5133, Level 16, State 1, Line 1
>>Ricerca del file "C:\Documents and Settings\Utente\Documenti\Visual
>>Studio 2005\WebSites\DataDemo\App_Data\Flusso.mdf" nella directory
>>non riuscita. Errore del sistema operativo: 5(Accesso negato.).

Ciao Luciano,

Se esegui l'attach via SSMS, prova ad eseguirlo "Run as administrator"...

>Grazie anticipatamente
Prego.

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

lusiano Profilo | Newbie

Grazie Lorenzo
PREZIOSISSIMO
Ciao
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