Avatar billede fredslund Nybegynder
29. juni 2003 - 11:23 Der er 30 kommentarer og
1 løsning

Problemer med databaseadgang

Hej Eksperter!

Jeg har lavet en lille webapplikation i Visual Studio, som jeg gerne vil have knyttet en Access-database til. Det har jeg gjort i form af OleDbDataAdapter, OleDbConnection og et DataSet, men når jeg forsøger at køre webapplikationen, får jeg en fejl i følgende linie:

oleDbDataAdapter1.Fill(brugerSet1);

Fejlen lyder:

Microsoft Jet-databasemotoren kan ikke åbne filen "C:\Inetpub\wwwroot\Forum\webtjepDB.mdb". Den er allerede åbnet med udelt adgang af en anden bruger, eller du skal have tilladelse til at vise dataene.

Jeg er imidlertid sikker på, at databasen ikke er åbnet idet jeg forsøger at køre applikationen, - i hvert fald ikke åbnet af mig!!!

Håber - I kan hjælpe mig!
Avatar billede mads.rode Nybegynder
29. juni 2003 - 11:50 #1
Lige umiddelbart kan der ikke være så meget andet galt. Men du kan se om din accessbase stadig er åben, hvis der er en file som hedder *.ldb. Det er en buffer som access bruger.
Hvis den er der kan du prøve at genstarte og hvis den stadig er der prøv at omdøbe den.
Avatar billede fredslund Nybegynder
29. juni 2003 - 12:27 #2
I min søgning har jeg fundet følgende, som måske rummer noget af forklaringen, - jeg kan bare ikke finde ud af at gøre noget ved det (og bemærk, at jeg bruger en access-database!:

"Under installationen af Visual  Studio .NET blev der oprettet en windows user ved navn ASPNET. Den windows account benyttes også til at tilgå data i din SQL Server database. Hvis der under installationen af Visual Studio .NET ikke er givet tilladelse til at denne user kan tilgå data i din SQL Server database må du selv give tilladelsen. Hvis der ikke er givet tilladelse kaster ovenstående sætning en SqlException. Du kan vælger at addere ASPNET useren til den eller de databaser du vil give adgang til. Du kan selvfølgelig også helt slå sikkerheds check fra på din database."

Det er fundet på http://developer.homepage.dk
Avatar billede odegaard Nybegynder
29. juni 2003 - 12:42 #3
Det er ikke aktuelt da du ikke bruger SQL Server.

Det er ret sandsynligt at du i dine programmeringsforsøg har fået åbnet databasen, men ikke lukket den igen. Husk altid at kalde MyOleDbConnection.Close() når du er færdig med at hente data. Dette gælder OGSÅ hvis der opstår en fejl. Derfor skal du altid benytte try/catch til at fange fejl i DB processeringen, så du er sikker på at du får lukket DB'en igen.
Avatar billede mads.rode Nybegynder
29. juni 2003 - 12:48 #4
For at være helt sikker laves en try/catch/finally

try
{
  db.Open();
  dataAdapter.Fill(dataset);
}
catch
{
  MessageBox.Show("Der skete en fejl");
}
finally
{
  db.Close();
}
Avatar billede fredslund Nybegynder
29. juni 2003 - 13:19 #5
Jeg har prøvet ovenstående, - og det får siden til at køre, idet fejlen i databaseforbindelsen bliver fanget! - Men desværre løser det ikke problemet, - nemlig at der er en fejl, - og jeg har stadig ikke nogen forbindelse til databasen - af samme årsag som tidligere....

Kan det skyldes, at jeg har brugt nogle af de drag-and-drop komponenter der findes i toolboxen, - og er det udelukket, at det rent faktsik skyldes en eller anden ASPNET-bruger??
Avatar billede mads.rode Nybegynder
29. juni 2003 - 13:33 #6
I stedet for at køre med en direkte sti, har du så prøvet med en ODBC-datakilde.
Det vil også give dig mulighed for at ligge databasen et andet sted på serveren hvor den ikke kan ses udefra.

Det kan ikke være nogle af componenter du bruger. Jeg vil dog lige sige at jeg plejer at bruge en SqlConnection og SqlDataAdapter.
Avatar billede odegaard Nybegynder
29. juni 2003 - 13:36 #7
Man kan da stadig ligge databasen uden for www-roden! ODBC er langsomt. OleDb er klart at foretrække, og så kræves det heller ikke at udbyderen skal betales for at sætte en odbc op.
Avatar billede fredslund Nybegynder
29. juni 2003 - 13:40 #8
Bruger du SqlConnection og SqlDataAdapter til en access-database? - Jeg har prøvet med ODBC-reference, - det giver stort set samme fejlmeddelelse!
Avatar billede mads.rode Nybegynder
29. juni 2003 - 13:47 #9
Nu bruger jeg ikke normalt access, men ja det ville jeg gøre i gennem en ODBC.
Men lige meget hvad så burde det kunne køre med en OleDb.

<<odegaard>>
Jeg ville aldrig bruge en access hvis det skulle være hurtigt. Men som jeg regner med er dette nok til test og derfor bruges en access.
Avatar billede odegaard Nybegynder
29. juni 2003 - 14:00 #10
Der er jo ingen grund til at gøre noget langsomt endnu langsommere. ODBC er gammel teknologi, forlængst erstattet af fx. OleDb
Avatar billede nielslbeck Nybegynder
29. juni 2003 - 14:41 #11
Prøv at give ASPNET brugeren fulde rettigheder til databasen i filsystemet (går ud fra, du bruger NTFS). Så skulle det virke :-)
Avatar billede odegaard Nybegynder
29. juni 2003 - 14:58 #12
nielsbeck: Eftersom ASPNET brugeren default har fuld adgang til wwwroot, og databasen allerede ligger i C:\Inetpub\wwwroot\Forum\ er dette næppe et problem.
Avatar billede mads.rode Nybegynder
29. juni 2003 - 15:04 #13
odegaard:
Kunne du ikke skrive i et lidt pænere sprog, det kan godt virke lidt nedsættende. Jeg har ikke et problem med det, men nu når vi forsøger at hjælpe hinanden, kan man godt tale ordenligt.
Avatar billede odegaard Nybegynder
29. juni 2003 - 15:31 #14
mads: Hvor er det lige at jeg skriver nedsættende?
Jeg forsøger at hjælpe en med at løse et problem. Det har jeg aldrig før hørt skulle være nedsættende.
Avatar billede mads.rode Nybegynder
29. juni 2003 - 15:42 #15
odegaard:
Hvis du er uenig så bare glem det.
Avatar billede sekhmet_ds Nybegynder
29. juni 2003 - 23:15 #16
ASPNET brugeren har ikke default fuld adgang til wwwroot...havde det i hvert fald hverken på min XP eller 2003 server (desuden er det næppe nogen god idé at ligge din DB under wwwroot).
Avatar billede odegaard Nybegynder
29. juni 2003 - 23:30 #17
sorry... ja jeg kom hvis til at skrive fuld adgang. Det jeg mente var blot læseadgang, hvilket skulle være nok til en almindelig query.
Avatar billede nielslbeck Nybegynder
29. juni 2003 - 23:38 #18
Ja... det er også nok til en almindelig query - men hvis databasen allerede er åben af en anden proces er det ikke nødvendigvis nok!
Avatar billede wivel Nybegynder
30. juni 2003 - 14:31 #19
Er din database passwordprotected eller åben via Access selv kan du få det problem du beskriver.
Avatar billede fredslund Nybegynder
03. juli 2003 - 23:26 #20
Problemet er løst, måske lidt kluntet, - men det virker! - Jeg har givet ASPNET-brugeren administratorrettigheder, - men ville vel formodentlig kunne nøjes med at give den rettigheden til at "læse alle ikke personlige filer"??

nielsbeck får pointene i denne omgang, men I andre får nu også tak for hjælpen!
Avatar billede nielslbeck Nybegynder
03. juli 2003 - 23:29 #21
Hmm... ja, det lyder jo ikke som den optimale løsning :-( Det var ikke nok at give ASPNET-brugeren fuld adgang til databasen på disken?
Avatar billede fredslund Nybegynder
03. juli 2003 - 23:32 #22
Jeg er ikke helt sikker på, at jeg ved hvad du mener! - Hvor kan jeg styre rettigheder til disken? - (For du mener vel ikke, at det er i selve databasen jeg skal give adgang... - det har jeg nemlig prøvet - uden held)?
Avatar billede nielslbeck Nybegynder
03. juli 2003 - 23:34 #23
Højreklik på databasen ude i Explorer, vælg Properties, vælg fanebladet Security. Find derefter ASPNET-brugeren og marker Allow for punktet Full Control...
Avatar billede fredslund Nybegynder
03. juli 2003 - 23:38 #24
Hvad gør jeg mon forkert, - når jeg kun kan se faneblade med Generelt og Dokumentinfo?? - Der er ikke noget faneblad med Security eller lign.?
Avatar billede nielslbeck Nybegynder
03. juli 2003 - 23:41 #25
Okay... så har du slået "Use simple filesharing" til... ved ikke lige hvad det hedder i en dansk Windows, så du får det lige på engelsk :-) Du skal op i Tools i Exploreren, vælg Folder Options og så fanebladet View. Nederst i Advanced Settings finder du "Use simple filesharing", som du fjerner hakket i. Nu vil du kunne se fanebladet Security, når du er inde i properties for en fil.
Avatar billede fredslund Nybegynder
03. juli 2003 - 23:54 #26
Tak for det, det var en god forklaring! - Jeg har nu sat rettighederne for VS(Visual Studio) til "Fuld Kontrol", men nu får jeg fejlmeddelelsen "Filen kan ikke låses" - altså en anden besked end tidligere...??
Avatar billede nielslbeck Nybegynder
03. juli 2003 - 23:57 #27
Rettighederne for VS.NET? Det er rettighederne for databasefilen (C:\Inetpub\wwwroot\Forum\webtjepDB.mdb) der skal ændres, så ASPNET-brugeren har Fuld Kontrol...
Avatar billede fredslund Nybegynder
04. juli 2003 - 00:05 #28
Jamen det er også det jeg har gjort (tror jeg..- ASPNET-brugeren hedder bare noget andet, når jeg er inde under Sikkerheds-fanen.. - og det gør de andre brugere også!!!)??

Nu kan jeg faktisk få det til at virke, hvis jeg vel at mærke giver "fuld kontrol" til hele mappen - hvori databasen ligger. - Det virker ikke, når jeg blot forsøger at give "fuld kontrol" til selve databasen...???
Avatar billede nielslbeck Nybegynder
04. juli 2003 - 00:07 #29
Hedder noget andet - mystisk!

Okay, lyder lidt sjovt - men hvis bare det virker :-)
Avatar billede fredslund Nybegynder
04. juli 2003 - 00:09 #30
Ja? - Men, pyt.. - det virker, og jeg har lært noget! - Tak for hjælpen!
Avatar billede nielslbeck Nybegynder
04. juli 2003 - 00:10 #31
Helt okay :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester