Welcome to Sign in | Help
in Search

Sincronizare SQLServer Express

Last post 10-26-2009, 8:03 PM by BGeo. 60 replies.
Page 3 of 5 (61 items)   < Previous 1 2 3 4 5 Next >
Sort Posts: Previous Next
  •  08-23-2007, 12:24 PM 2530 in reply to 2529

    Re: Sincronizare SQLServer Express

    Ai cumva un serviciu numit 'receptor' si in alta baza de date pe calculatorul target? Asigurate ca acest serviciu exista in numai una din bazele de date. Verificat ca numele contractului este exact la fel, numele servicilor/contractelor/mesajelor sint totdeauna case-sensitive, indiferent de ce colattion exista in server/baza de date.

    In ultima instanta, potzi sa faci drop la serviciul 'receptor' si creeaza-l din nou direct cu contractul [repl1].


    http://rusanu.com
  •  08-23-2007, 1:29 PM 2533 in reply to 2530

    Re: Sincronizare SQLServer Express

    este exact repl1 comenzile le-a dat pe target ca mai sus.Sa fie cumva din cauza ca targetu e sqlexpress?
    Secolul XXI ori va fi religios ori nu va fi deloc
  •  08-23-2007, 2:51 PM 2538 in reply to 2533

    Re: Sincronizare SQLServer Express

    Nu, n-are de-a face cu SqlExpress.

    Daca e posibil, conecteaza-te la http://www.codeplex.com/SQLSrvSrvcBrkr si downloadeaza scriptul numit 'SSB Info Collector' (din pagina cu 'releases'). Acest script colecteaza informatzii legate dde SSB intr-un output XML. Ruleaza script-ul asta pe ambele masini implicate si trimite-mi output-urile. Asigurate ca output-ul XML nu este trunchiat de SQL Server Management Studio (sau ce folosesti tu sa rulezi query-uri)


    http://rusanu.com
  •  08-24-2007, 8:36 AM 2541 in reply to 2538

    Re: Sincronizare SQLServer Express

    Am reinnoit brokeru pe ambele baze comenzile

    select * from sys.transmission_queue

    SELECT CAST(message_body AS XML), * FROM replicare

    rulatre pe amblele baze sender si receiver nu returneaza nimic.

    Cred ca nu se activeaza pe reciever procedura cand se insereaza un mesaj in coada.

    Am definit asa coada pe receptor

    CREATE QUEUE [dbo].[replicare] WITH STATUS = ON , RETENTION = OFF , ACTIVATION ( STATUS = ON , PROCEDURE_NAME = [dbo].[repl_insert] , MAX_QUEUE_READERS = 5 , EXECUTE AS N'dbo' ) ON [PRIMARY]

    cred ca aici e greseala eu vreau ca dupa ce se proceseaza mesajul sa se stearga din coada

    Multumesc mult dinnou


    Secolul XXI ori va fi religios ori nu va fi deloc
  •  08-24-2007, 8:55 AM 2542 in reply to 2541

    Re: Sincronizare SQLServer Express

    Mesajele tale trebuie sa fie in queue-ul dbo.replicare (potzi verifica cu un SELECT) si trebuiesc receptionate cu un RECEIVE. Daca procedura ta activata nu receptioneaza mesajele, nu va mai fi activata.

    http://rusanu.com
  •  08-24-2007, 9:02 AM 2543 in reply to 2542

    Re: Sincronizare SQLServer Express

    select * from replicare pe receptor nu imi returneaza nimic deci nu sunt mesaje in coada.

    Asta este procedura care se activeaza cand intra un mesaj in coada

    ALTER PROCEDURE [dbo].[repl_insert]

     

    AS

    BEGIN

    -- SET NOCOUNT ON added to prevent extra result sets from

    -- interfering with SELECT statements.

    declare @conversation uniqueidentifier

    declare @msg varchar(max),@msgtype varchar(10)

    SET NOCOUNT ON;

    ;receive top(1) @conversation=conversation_handle,@msgtype=message_type_name,@msg=message_body from replicare

    if (@msgtype='insertie')

    insert into tbl_boy select * from boys(@msg)

    -- Insert statements for procedure here

    end conversation @conversation

    END


    Secolul XXI ori va fi religios ori nu va fi deloc
  •  08-24-2007, 10:55 AM 2545 in reply to 2543

    Re: Sincronizare SQLServer Express

    Probabil ca procedura activata a rulat si a consumat mesajele atunci. Ar trebuii sa pui un BEGIN TRANSACTION/COMMIT in procedurapentru a asigura consistenta. Deasemenea, verifica ca @conversation este NOT NULL pentru ca potzi fi activat si sa gasesti queue-ul gol (alta procedure tzi-a 'furat' mesajul).

    Uitate in ERROLOG sau in application eventlog (eventvwr.exe) ca sa vezi daca procedura activata a raportat vreo eroare.


    http://rusanu.com
  •  08-24-2007, 11:26 AM 2546 in reply to 2545

    Re: Sincronizare SQLServer Express

    pai daca a RULAT AR fi tb sa am in tabela tbl_boy pe receiver inregistrari.\

    Opinia ca sunt doua variante ori nu s-a activat procedura cand a ajuns mesajul in coada ori nu a putut face insertul ala si in cazul asta in ce loguri m-as putea uita ,m-am uitat in event viwer la application dar nu am vazut nimic.

    Multumesc


    Secolul XXI ori va fi religios ori nu va fi deloc
  •  08-24-2007, 11:45 AM 2547 in reply to 2546

    Re: Sincronizare SQLServer Express

    AM desciperit unde e buba procedura se executa intradevar dar o ia pe ramura else adik message_type nu e insertie.SI pe receiver in tabela care trebuie s-o reeplice am inregistarea cu 'nu e bine' in loc de ce am inserat pe sender.

    if (@msgtype='insertie')

    insert into tbl_boy select * from boys(@msg)

    -- Insert statements for procedure here

    else

    insert into tbl_boy values('nu e bine',-1,-1)

    end conversation @conversation

    END

    O sa postez si trigerrul de insert pe sender in care initiez dialogul si trimit mesajul de inserare poate ma poti lamuri de ce @msgtype nu are valoarea insertie cand mesajul ajunge pe receptor

     

    ALTER TRIGGER [dbo].[sendinserturi]

    ON [dbo].[tbl_boy]

    AFTER INSERT

    AS

    BEGIN

    declare @dialoghandle uniqueidentifier

    declare @inserturi xml

    set @inserturi=(select * from inserted for xml raw('boy'),root('boys'))

    -- SET NOCOUNT ON added to prevent extra result sets from

    -- interfering with SELECT statements.

    SET NOCOUNT ON;

    begin dialog conversation @dialoghandle from service sender to service 'receptor' on contract repl1 WITH ENCRYPTION = OFF

    -- Insert statements for trigger here

    ;send on conversation @dialoghandle message type insertie(@inserturi)

    END

    Multumesc dinnou


    Secolul XXI ori va fi religios ori nu va fi deloc
  •  08-24-2007, 11:55 AM 2548 in reply to 2547

    Re: Sincronizare SQLServer Express

    Potzi face un PRINT sau insert into tbl_boy @msgtype ca sa vezi exact ce message type name ai receptionat. Daca nu e 'insertie' ar putea fi NULL (daca nu ai receptionat nimic) sau 'http://schemas.microsoft.com/SQL/ServiceBroker/Error' sau 'http://schemas.microsoft.com/SQL/ServiceBroker/EndDialog'
    http://rusanu.com
  •  08-24-2007, 12:11 PM 2549 in reply to 2548

    Re: Sincronizare SQLServer Express

    AM facut insert @msgtype pe receptor si intradevar @msgtype este null in loc sa aiba valoarea 'insertie' dar nu inteleg de ce.

    Ba mai mult am creat o tabela mesaje pe receptor cu o coloana xml in care am facut in procedura de replicare

    insert into mesaje values(@msg)

    Este null si acest camp. 

    Eu pe sender cand am trimis mesajul am facut asa:

    ;send on conversation @dialoghandle message type insertie(@inserturi)

    Nu inteleg ce se intampla daca sunt amandoua nule atunci de ce se lanseaza procedura

    Unde anume am gresit mai vreau sa creez in contractul repl1q si tipurile de mesaje stergere si actualizare?

    Multumesc


    Secolul XXI ori va fi religios ori nu va fi deloc
  •  08-24-2007, 2:48 PM 2550 in reply to 2549

    Re: Sincronizare SQLServer Express

    Deactiveaza procedura activata ALTER QUEUE ... WITH ACTIVATION (STATUS = OFF) apoi trimite un nou mesaj si verifica ce se afla in queue.
    http://rusanu.com
  •  08-24-2007, 3:12 PM 2551 in reply to 2550

    Re: Sincronizare SQLServer Express

    asta da select * from replicare

    1 0 12 5628A4E5-3A52-DC11-AC20-0013723DF0DA 5728A4E5-3A52-DC11-AC20-0013723DF0DA 0 receptor 65536 repl1 65537 insertie 65537 X 0xFFFE3C0062006F00790073003E003C0062006F0079002000460069007200730074004E0061006D0065003D0022006400660064006600640066002200200043006F0075006E007400650072003D00220030002200200059006500610072003D0022003800380022002F003E003C002F0062006F00790073003E00


    Secolul XXI ori va fi religios ori nu va fi deloc
  •  08-27-2007, 10:10 AM 2561 in reply to 2551

    Re: Sincronizare SQLServer Express

    Deci in queue ai mesajul care-l asteptzi, de tip 'insertie'. Daca variabila care o testezi tu este NULL inseamna ca codul tau din procedura activata este incorect.
    http://rusanu.com
  •  08-27-2007, 10:57 AM 2562 in reply to 2561

    Re: Sincronizare SQLServer Express

    de acord asta e codul

    ALTER PROCEDURE [dbo].[repl_insert]

     

    AS

    BEGIN

    -- SET NOCOUNT ON added to prevent extra result sets from

    -- interfering with SELECT statements.

    declare @conversation uniqueidentifier

    declare @msg varchar(max),@msgtype varchar(10)

    SET NOCOUNT ON;

    begin transaction

    ;receive top(1) @conversation=conversation_handle,@msgtype=message_type_name,@msg=message_body from replicare

    if (@msgtype='insertie')

    insert into tbl_boy select * from boys(@msg)

    -- Insert statements for procedure here

    else

    insert into tbl_boy values(@msgtype,-1,-1)

    insert into mesaje values(@msg)

    commit

    end conversation @conversation

    END

    Imi poti spune si mie unde am gresit te rog.

    Dupa mintea mea procedura asta se lanseaza in executie cand intra ceva in coada si in momentul ala cu ;recieve eu preiau msgtyoe si msg si inserez in tabela tbl_boy pt replicare .Nu inteleg de ce receive imi returneaza null-uri la msgtype si msg -ce anume am gresit,ca nu-mi dau seama.

    Multumesc


    Secolul XXI ori va fi religios ori nu va fi deloc
Page 3 of 5 (61 items)   < Previous 1 2 3 4 5 Next >
View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems