Mam kłopotliwy problem po zmianie nazwy komputera zdalnego serwera obsługującego lokalną instancję SQL Server.
Zasadniczo serwer zdalny został przeniesiony z jednej witryny do drugiej. Aby to ułatwić, utworzyłem kopię zapasową starej bazy danych i przywróciłem nową nazwę, usuwając dane, dzięki czemu można je wykorzystać jako świeżą bazę danych dla oprogramowania klienckiego. Zmieniłem także nazwę komputera, ponieważ zawsze robimy to, aby zidentyfikować każdy serwer według numeru strony.
Do bazy danych można dobrze podłączyć oprogramowanie klienckie, a ja mogę zalogować się bezpośrednio do SQL Server w porządku. Jednak jedno z moich zadań agenta programu SQL Server kończy się niepowodzeniem z błędem w dzienniku zdarzeń:
Zaplanowane zadanie programu SQL Server „Nocne resetowanie” (0x4F76FDFFF6DFFE4EA0DE4A70252AD3BD) - Status: Nieudane - Wywołane: 2012-02-07 08:10:05 - Komunikat: Zadanie nie powiodło się. Nie można ustalić, czy właściciel (Site-19 \ Admin) zadania Nightly Reset ma dostęp do serwera (powód: Nie można uzyskać informacji o grupie / użytkowniku Windows NT „Site-19 \ Admin”, kod błędu 0x534. [SQLSTATE 42000] ( Błąd 15404)).
Teraz „Site-19” to stara nazwa komputera, która została zmieniona, a serwer zresetowany. Łączę się ręcznie przy użyciu „Site-28”, nowego numeru witryny, i pokazuje mi to jako połączenie z SQL Server z Site-28 \ Admin. Jednak gdy patrzę na właściwości zadania Agenta, pokazuje właściciela jako Site-19 \ Admin, a kiedy próbuję przeglądać użytkowników, aby go zmienić, Site-28 \ Admin nie pojawia się jako opcja , tylko Site-19 \ Admin. Jeśli utworzę skrypt z nowego zadania i ręcznie zmienię właściciela na „Site-28 \ Admin”, nowe zadanie zostanie utworzone za pomocą właściciela „Site-19 \ Admin”.
Przeglądając sys.servers (lub przez sp_helpserver), mam tylko jeden wpis: bieżącą nazwę komputera. Jednak SELECT @@ SERVERNAME zwraca oryginalną nazwę komputera programistycznego (dwie zmiany nazwy wcześniej).
Krótko mówiąc, nie mogę uruchomić tego ważnego zadania SQL Server Agent, ponieważ należy ono do użytkownika, który już nie istnieje, i nie mogę wymyślić, jak to zmienić lub utworzyć jako właściwy użytkownik.
źródło
Odpowiedzi:
Kiedy dodałeś nową nazwę serwera za pomocą sp_addserver, pamiętasz o dołączeniu oznaczenia „lokalnego”. To ten tag aktualizuje metadane dla @@ SERVERNAME. Więcej informacji.
źródło
@@ServerName
nie została zaktualizowana, dopóki nie zrestartowałem SQL ServeraZnalazłem odpowiedź wczoraj z pomocą mojego przyjaciela. Musiałem zalogować się przez SSMS z użytkownikiem innym niż login Windows, którego próbowałem użyć, usunąć stary login i ponownie dodać mój login Windows. Potem mogłem poprawnie przenieść własność zadania, SQL mógł pobrać dane użytkownika z systemu Windows i wszystko było w porządku na całym świecie.
źródło
SELECT 'use ' + DB_NAME(database_id) + ';EXEC sp_changedbowner ''sa'';' FROM sys.databases where DB_NAME(database_id) like 'MyDbs%';
. Potem mogłem porzucić złe logowanieUżywam następujących do zidentyfikowania problemów i zbudowania poprawnej instrukcji drop i add, jeśli otrzymasz WSZYSTKIE OK, to nie musisz nic robić, w przeciwnym razie musisz uruchomić polecenia.
źródło
Miał podobny problem: zmienił nazwę hosta komputera, na którym działa SQL Server i SQL Server Agent. Zadania zostały przypisane do. Po utworzeniu tymczasowego użytkownika / logowania do SSMS za pomocą tego nowego tymczasowego użytkownika / upuść i utwórz nazwę logowania (public i sysadmin privs!) / Ponownie przypisz zadania do tego ponownie utworzonego logowania. Wszystko było w porządku. Może mógłbyś manipulować tabelą systemową, aby odzwierciedlić tę samą zmianę; ale powyższa metoda nie jest tak ryzykowna.
źródło