Avatar billede hlt Juniormester
26. oktober 2009 - 22:02 Der er 16 kommentarer og
1 løsning

Login fejler

Hej,
Jeg har en database, som er blevet flyttet fra en server til en anden. Det har medført at jeg har været nødt til at oprette en ny bruger til denne database. Det gør jeg igennem Microsoft SQLserver management studio. det går også nogenlunde. Jeg er ikke så bekendt med det, men det er da lykkedes mig. Nu er problemet at hver gang jeg så detacher den fra SQLserver management studio, så virker brugeren ikke mere, og jeg får en fejl med at brugeren ikke kan logge ind.
Er der nogen derude som har prøvet det og måske er rimelige inde i SQLserver management studio. Hvad mangler jeg i at få brugeren til at virke permanent, også selvom jeg detacher databasen fra programmet.
Mvh
Henrik
Avatar billede Syska Mester
26. oktober 2009 - 22:07 #1
1. Hvorfor vil du detach din database ? Så er der jo ingen der kan tilgå den ? Sikker på du vil detach den igen eller er det menignen den ikke skal være tilgængelig ?

2. Brugeren default database er sikkert den Database du detacher ... så kan ske at være derfor han ikke kan logge på ... ved ikke om det er problemet, men måske.

// ouT
Avatar billede janus_007 Nybegynder
27. oktober 2009 - 00:24 #2
Brugerne forsvinder altid når man detacher eller rettere deres SID'er bliver unmapped og derved skal du oprette brugerne igen. Det kan ikke undgåes, men det er også lidt underligt at du detacher?
Avatar billede Syska Mester
27. oktober 2009 - 00:29 #3
ja, men hvorfor bliver SID slettet ? er det hvis det er default på den DB ? En SID kan vel have flere DB'er, så i min verden giver det da ingen mening hvis de bliver slettet.

Må være et meget specielt scanarie hvor det sker ... synes da ikke min egen brugere da jeg legede tidligere med det, og detachede og attached igen, gav nogen problemer, jeg skulle bare sætte default bruger for DB'en igen ...

Men jeg er langt fra ekspert, og der kan jo have været andre ting inde over som har gjort at det jeg lavede virkede :-)

// ouT
Avatar billede hlt Juniormester
27. oktober 2009 - 00:37 #4
hej,
Jamen jeg har flere databaser med forskellige brugere på, og jeg har detachet dem alle efter jeg har oprettet nye brugere i databasen. og de virker alle sammen, undtagen den ene.
Men jeg er heller ingen haj, men jeg troede ikke at man skulle have SQLserver management studio kørende hele tiden. Jeg mente kune at det var noget der skulle køres hvis man skal lave ændringer på en database. Men som jeg skrev tidligere, er jeg helt ny i det program. Jeg tror jeg har haft kigget på det en gang tidligere.
Avatar billede Syska Mester
27. oktober 2009 - 00:44 #5
Nej, Sql Server Management Studio skal ikke køre hele tiden ... du kan roligt lukke det ned igen.

Dvs du har problemer med en database efter du har Attached den igen ?
Avatar billede hlt Juniormester
27. oktober 2009 - 08:06 #6
ja det er rigtigt. Det jeg mente var, at jeg jo attacher en database i SQL server management studio for at kunne lave ændringer. Når ændringerne er færdige detacher jeg den fra programmet igen. Og det er her jeg efter at have oprettet en ny bruger på, har problemer med at logge ind via websiden.

Og det har virket fint med de andre. Dog har jeg lidt problemer med at slette gamle brugere. der kommer hele tiden beskeder om forskellige relationer der er. Og dem kan man heller ikke slette.

Men jeg tænkte på om man ikke kan bruge datamappen under de enkelte websites? Der behøver man ikke sætte brugere op. der er ikke andet en problemer med de brugere i databasen. Nu har jeg været uheldig at par gange at min server er gået ned, efter en opdatering og at jeg derfor har været nødt til at skifte server. Med det resultat at brugerne ikke virker på den nye server. Derfor har jeg så været nødt til at oprette nye brugere hver gang.
Avatar billede Syska Mester
27. oktober 2009 - 08:28 #7
Hej,

Du skal ikke detach den, efter du har oprettet brugere ... så kan de ikke tilgå deres database.

Jeg kender intet til at ligge databasen i App_Data mappen, men det giver uden tvivl dårligere performance i sidste ende. Database er kommet for at blive, så du kan lige så godt lære at sætte det op ... det er jeg ret sikker på at dine brugere vil blive glade for i længden.

Den plejer at give en fejl om hvad der er galt når du vil slette en bruger ... men hvis den gamle bruger stadig findes, hvorfor kan dine brugere så ikke bare beholde den ?

// ouT
Avatar billede hlt Juniormester
27. oktober 2009 - 09:04 #8
Fordi denne bruger er så åbenbart ikke oprettet på serveren. Ihvertfald er jeg nødt til først at oprette en bruger under security i SQLserver manager programmet. Om det så er en bruger på serveren ved jeg ikke. Jeg kan ikke se disse brugere nogen steder. Når brugeren er oprettet her, kan jeg så gå ind og oprette denne bruger under databasen. her er jeg så nødt til at vælge den gamle brugers schema. Om det er den rigtige måde at gøre det på er jeg i tvivl om, men jeg har ikke så meget styr på database brugere og slet ikke SQLserver manager.Og jeg har så lige set at det drejer sig om alle brugere og databaser. Så snart jeg detacher dem fra SQLserver manager, så virker brugerens login ikke mere. Men jeg kan godt lukke SQL manager ned bare jeg ikke detacher databaserne.

jeg troede ikke at dette program var nødvendigt for at kunne kører databaserne på serveren. jeg troede egentligt bare at det var et hjælpe program til at redigere allerede oprettede databaser.
Avatar billede Syska Mester
27. oktober 2009 - 09:14 #9
Sql Manager er et hjælpe program.

Hvis du detacher dine databaser virker de ikke mere, de skal være attached. Det har både jeg og janus_007 skrevet, men virker som om du springer over den sætning hele tiden. :-)

Du kan godt lukke SQL manageren og alt vil virke, det er som du selv siger kun et hjælpe værktøj ... og intet andet. SQL Serveren virker selvom om det ikke er startet.
Avatar billede hlt Juniormester
27. oktober 2009 - 10:04 #10
nej nej, jeg er med på at sql serveren virker uden det. man kan bare ikke bruge de oprettede brugere, hvis man ikke bruger hjælpeprogrammet. Det jeg ikke forstår er at hvis det er et hjælpeprogram, hvorfor virker databaserne så ikke uden at man har oprettet brugere igennem hjælpeprogrammet. Og hvis man ikke bruger dette program, hvad bruger man så til at holde styr på brugere. Så selvom det er et hjælpeprogram, virker det som om at man skal bruge det for at kunne have brugere på databaserne.
Og hvis jeg virker lidt tung i det, så er det fordi det er helt nyt for mig at skulle bruge dette program. Og jeg er kommet lidt skævt ind i det. Jeg har ikke tid til at sætte mig så meget ind i det. Jeg har x antal websites som er gået ned, så det skal gå lidt hurtigt med at få dem op. Det ville jo være rart at man kunne sidde og teste lidt så man kunne se hvad der skal gøres for at få det til at virke.
Avatar billede janus_007 Nybegynder
29. oktober 2009 - 00:10 #11
hlt, jeg tror jeg ved hvad du laver.. du attacher til db'en vha. en connection string alá:
Server=.\SQLExpress;AttachDbFilename=c:\mydbfile.mdf;Database=dbname; Trusted_Connection=Yes;

Det som vi foreslår du gør er nu blot at have en SQL-server kørende, det er nu ikke så omfangsrigt som det lyder (den kører faktisk alligevel ;) ) Og du så blot som du hidtil har gjort, administrere databasen igennem Management Studio og holde den attachet til filsystemet.
Når du detacher en db så fjerner du så at sige forbindelsen imellem den og servicen og lukker databasen ned, dvs. den blot ligger som en "død" fil (mdf og ldf) og du skal derfor attache igen for at få kontakt til den.

Anyway... istedet for at attache igennem connection string, så skal du blot åbne en connection/ logge ind og du har fuld adgang til db'en.

Altså noget alá:
Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False;

Lad være med at tænke på Management Studio som et hjælpeprogram, det er absolut hele "nerven" til databaseadministration og selvom du har din webapplikation kørende kan du sagtens "connecte" igennem Management Studio og se hvad der sker mht. inserts/ updates osv. :)
Fuldstændig som buzzz siger, altså bare brug det som et værktøj, det behøver ikke køre.

http://www.connectionstrings.com/sql-server-2005

SID forsvinder hvis du har oprettet brugere udover sysadmins, dvs. disse skal så sletts i db og oprettes igen. En øvelse man sjældent laver, fordi man sjældent detacher ;)
Avatar billede hlt Juniormester
29. oktober 2009 - 08:58 #12
Tak for jeres svar. Jeg har nu haft tid til at sidde og rode lidt rundt med programmet. Og jeg må sige, at jo mere jeg får kigget, jo begejstret bliver jeg. Jeg har siden jeg skrev sidst fundet ud af en del ting. Bla. hvorfor jeg ikke kunne få lov til at slette gamle brugere. Og nu virker det jo meget simpelt. Sådan er det jo.

og det er jo ikke noget problem at lade dem være attachet til programmet.

Jeg har haft forsøgt at connecte via en connectionstring som du skriver, men jeg kunne ikke få det til at virke. og det var derfor at jeg syntes det var mærkeligt at man faktisk var nødt til at bruge et hjælpeprogram for at få adgang til databaser. det virkede ikke logisk på mig. Men men, alting er blevet klarere. Og jeg tror ikke jeg kan eller vil gøre det på andre måder. Det må alt andet lige være mere optimalt at gøre det på denne måde.
En anden ting som jeg også syntes var mærkeligt. Jeg synes at have læst at SQLexpress databasen skulle være en afløser for access. men om det er rigtigt ved jeg ikke.
Men så undrede det mig at man ikke bare kunne forbinde til databaserne.
Ihvertfald tusind tak for jeres hjælp. Er det ok hvis jeg giver jer begge point?
Avatar billede hlt Juniormester
29. oktober 2009 - 10:13 #13
Nu har jeg så et nyt spørgsmål. Jeg har oprettet en ny database. Jeg har oprettet en bruger på SQL serveren. Men når jeg forsøger at oprette den samme bruger i databasen, så får jeg en fejl om at brugeren allerede har et login under et andet navn: "the login allready has an account under a different username".

Men det er nøjagtig samme fremgangsmåde som jeg har brugt med oprettelse af brugere i de gamle databaser. Den eneste forskel er at jeg her har oprettet databasen i SQL manager programmet.
Hvad gør jeg forkert?
Avatar billede janus_007 Nybegynder
30. oktober 2009 - 00:02 #14
SQL Express er en "rigtig" database, altså helt på lig fod med SQL-Server Enterprise Edition som er flagskibet hos Microsoft og som efterhånden slår Oracle med flere baner. Hvis du ikke har hørt om Oracle så er de pionerer indenfor relationelle databaser, bla. RDB - senere RDBMS, altså relationelle database management systemer. (Oracle købte RDB og byggede videre)
Både Oracle og Microsoft SQL-server er i stand til at håndtere millioner er transaktioner i sekundet (afhængig af hardware naturligvis).

SQL-express er kun neddroslet på antal GB (4GB), 1GB RAM og 1 CPU som den kan sluge ifht. eks.vis Enterprise Editionen.

Access er opbygget omkring en Jet Database Engine, noget som Microsoft selv udviklede, men pga. mange problemer blev den kun anvendt i Access. SQL-serveren har Microsoft også selv udviklet, men er altså som at sammenligne papirsflyvere med rumraketter :)

Om SQL Express direkte er en afløsning for Access.. hmmm det kan man jo godt sige, men en sandhed med modifikationer.
Avatar billede janus_007 Nybegynder
30. oktober 2009 - 00:09 #15
hej hlt

Det nemmeste... på db-serveren (altså ikke under databaser) skal du oprette en user, men først skal du gå ind i databasen og slette de brugere som du gerne vil give adgang. Dvs. du opretter en user på serveren og giver rettigheder for at tilgå databasen.

Tænk på det sådan... en bruger skal logge ind på serveren.. denne bruger skal oprettes på sql serveren. Denne bruger skal også kunne tilgå nogle databaser og det er det du skal give adgang til ligeså.

Altså.. du kan ikke have en bruger på sql-serveren og så samtidigt oprette den samme bruger i databasen.

Giver det mening?
Avatar billede hlt Juniormester
30. oktober 2009 - 08:37 #16
hej igen,
Det var mig der havde skrevet det forkert. Det var også sådan jeg havde gjort. Først oprettet en bruger på serveren, og siden hen givet den samme bruger adgang til databasen.
men det var netop det der fejlede.
Jeg fandt så ud af hvorfor, ved at kigge på nogen af de andre databaser. Af en eller anden årsag, var denne bruger blevet ejer af databasen da jeg oprettede databasen. men ved at kigge på de andre databaser, fandt jeg ud af at man skal sætte ejerskabet til dbo. Og så kunne jeg godt oprette brugeren i databasen.

men I skal have tusind tak for jeres hjælp. Det er rart at man kan få hjælp her inde på eksperten. specielt når man bevæger sig ud i noget hvor man er helt novice. og så på "live" databaser, skal det jo helst gå smertefrit.

Smider du også et svar, buzzzz. så får I begge point, hvis det er ok.
Avatar billede janus_007 Nybegynder
31. oktober 2009 - 01:03 #17
Der er en forklaring på alt :)
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
Computerworld tilbyder specialiserede kurser i database-management

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



IT-JOB