Avatar billede nolle_k Nybegynder
27. september 2000 - 13:43 Der er 13 kommentarer og
1 løsning

Flere logins!

Hej!


Jeg er i den situation at jeg har en database, hvor de forskellige logins skal have adgang til forskellige ting. Det vil sige at det ene login kun skal kunne kalde GetThis og GetThat storedprocedurene og det andet login kun skal kunne kalde GetThisAndTaht stored procedure!

Problemet er bare, at hvis det login, der prøver at få fat i den stored procedure ikke selv har oprettet den stored procedure i tidernes morgen, er den stored procedure ikke synlig. Det sige direkte at den stored procedure ikke findes!! Meget mystisk!


Hvad gør jeg galt eller hvad skal jeg gøre for at kunne styre dette!
Avatar billede tigerdyr Nybegynder
28. september 2000 - 15:25 #1
JAMEN du har vel oprettet både tabeller og SP\'s med en dbo authenticated user ???
Derved har du undgået at lave en broken chain...
Med en dbo user gør du som du plejer (Query analyzer)
GRANT EXECUTE ON din_SP TO din_user_eller_gruppe_eller_role

Det vigtigste er dog at huske at det SKAL være en non-broken chain i dine objekter (dvs. samme bruger der hele vejen igennem har oprettet de objekter der benyttes)
Avatar billede nolle_k Nybegynder
28. september 2000 - 15:55 #2
Den påstår stadigvæk, altså SQL servereb, at den ikke kan finde den Stored Procedure selvom, jeg har kørt GRANT EXECUTE som du skrev!!

Avatar billede tigerdyr Nybegynder
28. september 2000 - 20:20 #3
Jamen, har du også sikret dig at de(n) bruger(e) der har oprettet de stored procedures du har problemer med ALLE har været med i dbo (DataBase Owner) ???
Hvis ikke, opstår problemet pga. en broken object chain, hvilket så godt som ikke kan løses med SP\'s...

Har du prøvet at EXEC din_sp som administrator af SQL Serveren ?? (og derved sikkert dbo)
Avatar billede tigerdyr Nybegynder
28. september 2000 - 20:21 #4
(og fået tjekket at den rent faktisk eksisterer i den database du bruger)...

Hvilket minder mig om, bruger du den korrekte database når du prøver at give execute right til din SP ??
Eg. prøv at skrive:
USE din_database
GO

forest i det script du udfører i Query manageren...
Avatar billede nomiz Nybegynder
28. september 2000 - 20:24 #5
læs nu mit spørgsmål vedr. half-life med overskriften dos - windows hjææælp!
Avatar billede nolle_k Nybegynder
29. september 2000 - 09:50 #6
Hvor finder jeg det spørgsmål!!
Avatar billede nolle_k Nybegynder
29. september 2000 - 10:01 #7
Jeg har gjort følgende!!

Oprettet en database, kald denne DB! Oprettet to logins (L1 og L2) der begger har rettigheder som Database Owner i DB. L1 har oprettet alle Tabeller og Stored Procedures i DB.
L1 og L2 er oprettet som User i DB!!

Jeg har prøvet at give L2 Execute rettigheder for en stored procedure men for stadigvæk besked på at denne ikke findes??? Det løses ved at L2 oprette den pågældende stored procedure hvilket jeg ikke er interesseret i!





Avatar billede tigerdyr Nybegynder
29. september 2000 - 13:47 #8
Det lyder virkeligt skummelt... hvis L1 er dbo i DB og L1 har oprettet både entiteter og Stored Procedures, burde L1 også uden problemer kunne give L2 rettigheder til din SP.

Tjek lige en gang til om L1 er med i db_owner fixed database role...

Hvis det er i orden, så åben query analyzer i master databasen og udfør dette script:

USE DB
GO
GRANT L2 EXECUTE ON GetThisAndThat
GO

(udskift selvfølgelig L2, GetThisAndThat samt DB med de korrekte betegnelser)

Hvad siger den så ???
Avatar billede nolle_k Nybegynder
29. september 2000 - 13:52 #9
Hvis jeg skriver

USE TimeIT3
GO
GRANT EXECUTE ON CheckPassword TO TimeIT
GO


Skrives der

The command(s) completed successfully.

og jeg kan også se at TimeIT login\'et har fået retighed til at ekskveres den stored procedure CheckPassword ved at gå ind i den stored procedure og vælge Permissions!

Her er der sat Hak ud for EXEC!!

Alligevel siger SQL serveren at den stored procedure ikke findes!

Avatar billede tigerdyr Nybegynder
29. september 2000 - 14:04 #10
Huh ??...
Dvs. i query analyzeren godkendes scriptet uden fejl, nå du tildeler rettigheder ??
Og i Enterprise Manageren kan du se at rettighederne er tildelt korrekt ??
Men når du prøver at eksekvere din SP fejler den med en besked om at den ikke findes ???
Hmm... hvor og hvordan eksekverer du din SP ??
Avatar billede nolle_k Nybegynder
29. september 2000 - 14:08 #11
Det gør jeg i et objekt jeg har lavet i VB!

\'Set Type of call -> Stored Procedure call
  Command.CommandType = adCmdStoredProc
  \'Set name of stored procedure
  Command.CommandText = ProcName
  \'Get the Parameters
  Command.Parameters.Refresh
   
   
  \'The return value is not counted as a parameter
  If (Command.Parameters.Count - 1 <> NumOfParams) Then
    MakeErr ErrorNumbers_WrongNumberOfParam, \"TimeITDBO::iRecordSet.CallStoredProcedure\", , \"in \" & CStr(ProcName)
  Else
    \'If (NumOfParams = 1) Then
    \'  Command.Parameters(1) = Parameters
    \'ElseIf NumOfParams > 1 Then
      For i = LBound(Parameters) To UBound(Parameters)
        \'Skip the Return parameter in Stored Procedure
        \'Therefor + 1 in the Command.Parameters
        Command.Parameters(i + 1).Value = Parameters(i)
        Command.Parameters(i + 1).Direction = adParamInput
      Next i
    \'End If
   
    Command.CommandTimeout = 0
    If (m_AsyncMode) Then
      Command.Execute , , adAsyncExecute
    Else
      On Error Resume Next
      Set m_SyncRecordSet = Command.Execute(, , adCmdStoredProc)
      Err.Clear
      \'On Error GoTo ErrHandl:
    End If
       
  End If
 
Avatar billede tigerdyr Nybegynder
29. september 2000 - 21:16 #12
Så stiv er jeg desværre ikke lige til VB, men prøv lige at se om den virker i SQL Servers query manager, hvis den virker der (med L2 brugeren) skal problemet findes i VB.
Avatar billede nolle_k Nybegynder
02. oktober 2000 - 20:29 #13
Klart!

Jeg prøver!
Avatar billede nolle_k Nybegynder
02. oktober 2000 - 20:30 #14
Det var faktisk ikke meningen at du skulle have de point før jeg var klar på om jeg havde fundet en løsning! Men sådan går det jo når man er fumlefingret! *GGG*
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