Salve a tutti,
sto cercando di creare un mirror tra due database di 2 server sql05.
Ho ormai letto un bel po di documentazione anche se non sono proprio un dba...ma al giorno d'oggi bisogna saper fare tutto :(:(.
Descrivo brevemente la configurazione.
Ho 2 server
sql05dev01 e sql05dev02 che non fanno parte di un dominio ma stanno in workgroup.
Ho creato in server uno un database con la procedura guidata chiamandolo TestMirror_01. Ho eseguito il backup FULL, ho copiato il bak nel server 02 ed ho eseguito il ripristino utilizzando il norecovery. In questo modo il database sta nello stato "ripristino in corso..."
Consultando i book online ho studiato che per server che non sono "trastati" è possibile effettuare il mirror di database solamente con l'utilizzo di certificati. Ho cominciato quindi a leggere documentazione in merito a questa configurazione. Sono arrivato finalmenta al codice t-sql che mi permette di creare la master key, il certificato, e l'endpoint per la comunicazione.
Ho quindi eseguito sul server principal il seguente codice
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'pippo';
GO
USE master;
CREATE CERTIFICATE sql05dev01_cert
WITH SUBJECT = 'Certificato Server Principal SQL05DEV01',
START_DATE = '2007/11/01', EXPIRY_DATE = '2020/01/01';
GO
CREATE ENDPOINT Endpoint_Mirroring
STATE = STARTED
AS TCP (
LISTENER_PORT=7024
, LISTENER_IP = ALL
)
FOR DATABASE_MIRRORING (
AUTHENTICATION = CERTIFICATE sql05dev01_cert
, ENCRYPTION = REQUIRED ALGORITHM RC4
, ROLE = ALL
);
GO
Ho ricevuto un primo messaggio di errore relativo all'algoritmo. Dato che uso windows 2000 server ho utilizzato il tipo RC4.
Credendo che sarebbe andato tutto bene ho rilanciato il comando e mi da il seguente messaggio.
Messaggio 7862, livello 16, stato 1, riga 14
Esiste già un endpoint del tipo richiesto. È supportato un solo endpoint di questo tipo. Utilizzare ALTER ENDPOINT oppure eliminare l'endpoint esistente, quindi eseguire l'istruzione CREATE ENDPOINT.
Messaggio 7807, livello 16, stato 1, riga 14
Errore ('0x800700b7') durante il tentativo di registrare l'endpoint 'Endpoint_Mirroring'.
Ho provato allora ad eliminare l'endpoint eseguendo questo comando
DROP ENDPOINT Endpoint_Mirroring
Messaggio 1088, livello 15, stato 103, riga 27
Impossibile trovare l'oggetto "Endpoint_Mirroring" perché non esiste oppure l'utente non dispone delle autorizzazioni necessarie.
Mi sono chiesto se anche per l'utente administrator dovesse essere garantito il permesso per la gestione degli endpoint. Cosi ho lanciato il seguente comando
USE master;
GRANT TAKE OWNERSHIP ON ENDPOINT::Endpoint_Mirroring TO Administrator
WITH GRANT OPTION;
GO
Stesso messaggio di errore.
Messaggio 15151, livello 16, stato 1, riga 28
Impossibile trovare l'oggetto 'Endpoint_Mirroring' di tipo endpoint, perché inesistente o perché non si dispone dell'autorizzazione.
A questo punto mi sono chiesto se esisteva un comando per vedere l'elenco degli endpoint esistenti...tanto per capirci qualcosa. Ho trovato su internet la seguente sintassi
SELECT * FROM sys.endpoints
che mi ha restituito il seguente risultato
Dedicated Admin Connection 1 1 2 TCP 2 TSQL 0 STARTED 1
TSQL Local Machine 2 1 4 SHARED_MEMORY 2 TSQL 0 STARTED 0
TSQL Named Pipes 3 1 3 NAMED_PIPES 2 TSQL 0 STARTED 0
TSQL Default TCP 4 1 2 TCP 2 TSQL 0 STARTED 0
TSQL Default VIA 5 1 5 VIA 2 TSQL 0 STARTED 0
Mirroring 65536 1 2 TCP 4 DATABASE_MIRRORING 0 STARTED 0
Mi sembra che sia presente il nome.
Vorrei capire a questo punto come fare :P.
Vi ringrazio anticipatamente per l'aiuto.
Saluti,
Luca.