2009-09-01 9 views
17

Ten post na wiki opisuje zarówno problem, jak i rozwiązanie. Chciałem opublikować to dla innych, którzy mogą mieć podobne problemy, ponieważ nie mogłem znaleźć niczego konkretnego, aby rozwiązać ten problem gdzie indziej.Problemy z ODBC w SQL 2000 -> 2005 Upgrade

Niedawno zaktualizowaliśmy naszą bazę danych SQL Server 2000 do SQL Server 2005. Jedna z baz danych na serwerze jest zapleczem dla bazy danych MS Access. Baza danych MS Access używa kwerend tranzytowych, za pośrednictwem ODN bez interfejsu ODBC w celu połączenia z serwerem SQL.

Przykładem ciągu połączenia DSN-mniej przedstawiono poniżej:

ODBC; DRIVER=SQL Server;SERVER=servername;APP=Microsoft® Access (Pass Through 
    Query);DATABASE=databasename;Network=DBMSSOCN;ConnectionTimeout=20; 
    Trusted_Connection=Yes 

Po uaktualnieniu, okazało się, że użytkownicy nie byli w stanie uruchomić zapytania pass-through i były coraz wyświetlony następujący komunikat o błędzie:

ODBC - połączenie 'SQL Server Zmarnowana

Ten początkowo wydawał się problem z uprawnieniami, ponieważ podniesienie przełączników logowania SQL serwera do roli serwera sysadmin złagodziło problem (ale oczywiście nie jest to świetne rozwiązanie).

Po odzyskaniu logowań z roli sysadmin stwierdziliśmy, że podczas łączenia się z serwerem SQL za pośrednictwem Management Studio, logowanie może wykonać zapisane procedury. Tego samego loginu nie można uzyskać z poziomu MS Access. Wskazuje to na coś, co robił MS Access podczas próby wykonania procedur przechowywanych - a nie problemów z uprawnieniami.

Wpadliśmy ślad na serwerze przy użyciu Profiler, a ten pokazał się MS Access próbuje wykonać następujące polecenia przed przechowywane wykonanie proc:

DBCC TRACEON(208) 

wyglądał na niepowodzenie przy tego polecenia przed przechowywane wykonanie procedury. Badania w sieci wykazały, że DBCC TRACEON (208) jest równoważny użyciu polecenia "SET QUOTED IDENTIFIERS ON" i że w SQL 2005 zastrzeżenie do uruchomienia tej komendy DBCC zostało odwołane.

Po dalszych badaniach znaleźliśmy odniesienia do MS Query o podobnym problemie oraz, że składnik APP ciągu połączenia powinien zostać zmieniony z "Zapytania MS" na coś innego.

W przeczuciu zmieniliśmy nasz składnik APP ciągu połączenia ODBC, a MS Access nie próbował już wykonywać polecenia DBCC TRACEON (208) przed wykonaniem procedury składowanej.

Po dalszych badań, możemy śledzone problemu do symbolu „copyright” zawarty w składniku aplikacji:

APP=Microsoft® Access (Pass Through Query) 

Usuwając symbol praw autorskich, wszystko było dobrze z połączeniem, a aplikacja działało jak wcześniej w SQL 2000.

Mam nadzieję, że to pomoże każdemu, kto ma podobny problem.

+0

Doskonała robota w rozwiązywaniu problemów i poświęcenie czasu na opublikowanie. Założę się, że masz mniej włosów niż podczas pierwszego pojawienia się tego problemu ... –

+0

Dzięki za podzielenie się tym. Czy możesz podzielić to na pytanie i odpowiedź? Zapewniłoby to lepsze projektowanie SO. –

+0

Czy to jest odpowiedź? Jeśli tak, zaznacz to! – djangofan

Odpowiedz

1

Czy to nie jest zarejestrowany znak towarowy?

Wierzę, że trafiłeś na jednym z mechanizmów ochrony serwera sql 2005 przeciwko atakom opartym na odbycie. Ponieważ w Internecie nie ma nic o tym, jest to prawdopodobnie coś, co MS działało wewnętrznie.

+0

Tak, możesz mieć rację, gdy symbol jest zastrzeżonym znakiem towarowym, a nie symbolem praw autorskich. To był jeden lub drugi, ale zarejestrowane znaki towarowe lepiej pasują i usunąłem je teraz z połączeń, więc nie mogę wrócić i sprawdzić. Twoje zdrowie – Jayden

Powiązane problemy