2012-08-07 10 views
11

Utworzono raport za pomocą Crystal Reports XIr2, aby zgłosić informacje z bazy danych dla naszej aplikacji. Jest to raport z wieloma kartami, raportujący różne dane zwracane podczas uruchamiania procedury składowanej.Nie można znaleźć tabeli [nazwa tablicy] -2147189180

Szybki opis aplikacji, przez którą uruchamiany jest ten raport - jest to aplikacja napisana w VB6, po załadowaniu aplikacji pojawia się monit o podanie nazwy użytkownika i hasła, które są skonfigurowane na serwerze SQL jako loginy SQL, więc po zalogowaniu się do aplikacji uwierzytelniasz się przed bezpieczeństwem serwera SQL.

Raport działa absolutnie dobrze w programie Crystal Reports, jednak mam dziwne zachowanie w tym raporcie, gdy jest uruchamiany z poziomu naszej aplikacji w witrynie klienta. Działa dobrze dla wszystkich użytkowników z dostępem do bazy danych na poziomie "sa", ale powoduje następujący błąd po uruchomieniu jak każdy inny użytkownik;

Error message

Gdybym połączyć się z serwerem bazy danych bezpośrednio jako użytkownik, który pobiera powyższy błąd w aplikacji, uruchamianie procedur przechowywanych ręcznie działa bez żadnych błędów.

Jeśli podaję użytkownika, który otrzymuje błąd w naszych uprawnieniach aplikacji na serwerze SQL, błąd przestaje się dziać.

Sprawdziłem wszystkie powiązane uprawnienia do wykonywania dla danej procedury składowanej, ale jak stwierdzono, jeśli łączę się z serwerem SQL ręcznie i wykonuję procedurę, nie dostaję błędu z powyższego łącza.

Jeśli użytkownik, który otrzymuje ten błąd, uruchamia kolejny raport przed tym raportem, działa, jednak jeśli po otrzymaniu tego błędu wygeneruje raport, wszystkie raporty przestaną działać i będą wymagać ponownego uruchomienia aplikacji.

Wszelkie pomysły proszę?

+0

Proszę otworzyć raport w programie Crystal i znajdź tabelę, której dotyczy problem, w Eksploratorze pól. Kliknij prawym przyciskiem myszy na stole i wybierz "Ustaw położenie źródła danych ...". Rozwiń drzewo pod tabelą, której dotyczy problem, i wyświetl jego właściwości. Kto jest właścicielem? – Dorian

+0

@XToro właścicielem jest dbo –

+0

Czy procedura składowana wykonuje w ogóle jakiekolwiek PISANIE w bazie danych? Czy jest to po prostu uruchomiony 'Wyrażenie'? Zakładając, że masz dostęp do serwera SQL; we właściwościach bazy danych> Uprawnienia, czy użytkownik lub role próbujące uruchomić procedurę mają jakieś uprawnienia? – Dorian

Odpowiedz

1

Proponuję upewnić się, że domyślny schemat mapowania użytkownika dla bazy danych jest ustawiony na dbo dla użytkowników zgłaszających problem. Polecam również użycie do tego ról bazy danych.

0

Nadawanie uprawnień do wykonywania nie zawsze się kończy - Czasami trzeba sprawdzić możliwe bloki uprawnień obiektów wewnątrz. Kiedy mówisz, że użyłeś loginu użytkownika, aby uruchomić procedurę ręcznie, czy jest również pewne, że poświadczenia użytkownika są tym, czego używasz do łączenia się z bazą danych?

Być może można użyć bardziej uniwersalną SQL login, że aplikacja będzie używać - (! Tylko sugestia :)) W ten sposób nie będą musieli śledzić uprawnień dla wielu użytkowników