sobota, 23 października 2010

zmiana hasła sa

Wielokrotnie czytam o problemach administratorów którzy dostali w spadku SQL Serwer bez hasła SA i usunięta grupą BUILTIN\Administrators.
Sprawa nieciekawa ale jeżeli mamy uprawnienie do zatrzymania serwisu sqlservr.exe to można zrobić następujące czynności, dotyczy SQL 2005 i nowszych.

Składniki:
SQL Server którego hasło SA chcemy zmienić (SQL1)
SQL Server potrzebny do zamiany, może to być inna maszyna lub instancja na tym samym serwerze, musimy na nim mieć prawa SA (SQL2)

Uwagi:
Wszystko co robisz, robisz na własną odpowiedzialność, nie ponoszę konsekwencji za wynikłe problemy. Koniecznie zrób kopię bazy master przed zabawą.

Zatrzymujemy serwis SQL Serwer (SQL1) , możemy to zrobić np. przez SQL Server Configuration Managera.



Robimy kopię bazy master w moim przypadku jest w
C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\

C:\>mkdir TEST

C:\>cd TEST

C:\TEST>copy "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\master.mdf" "C:\TEST\master.mdf"
        1 file(s) copied.

C:\TEST>copy " C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\mastlog.ldf" "C:\TEST\mastlog.ldf"
        1 file(s) copied.

Kopiujemy pliki na drugi serwer (SQL2) i wykonujemy attach


CREATE DATABASE [rk_master] ON
( FILENAME = N'C:\TEST\master.mdf' ),
( FILENAME = N'C:\TEST\mastlog.ldf' )
 FOR ATTACH

Zatrzymujemy serwis (SQL2) i uruchamiamy go w trybie single-user mode



Łączymy się do SQL2 w trybie administratora DAC(dedicated administrator connections)



Zmieniamy hasło

update rk_master.sys.sysxlgns
set pwdhash =PWDENCRYPT ('newpass')
where sid = 0x01
-------------
Warning: System table ID 42 has been updated directly in database ID 1 and cache coherence may not have been maintained. SQL Server should be restarted.

Restartujemy serwis SQL Server, uruchamiając go w normalnym trybie (bez „–m”) i odłączamy bazę rk_master

USE master
GO
EXEC master.dbo.sp_detach_db @dbname = N'rk_master'
GO

Kopiujemy pliki bazy master na SQL1 do C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA i uruchamiamy serwis SQL Server

Sprawdzamy czy można się połączyć

sqlcmd -U sa -P newpass



W przypadku SQL Server 2000 jest jeszcze prościej nie trzeba uruchamiać SQL2 w trybie single-user mode ani korzystać z DAC
Wystarczy zmiana konfiguracji i update

sp_configure 'allow updates', 1
go
RECONFIGURE WITH OVERRIDE
GO
UPDATE rk_master..sysxlogins
set password =PWDENCRYPT ('newpass')
where sid = 0x01
GO
sp_configure 'allow updates', 0
go
RECONFIGURE WITH OVERRIDE
GO






Brak komentarzy:

Prześlij komentarz