Toon posts:

[VB.NET] Repliceren op PDA

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hai,

ik ben aan het proberen het volgende werkend te krijgen: het repliceren van een database vanuit SQL Server 2000 naar SQL Server CE op een PDA. Ik heb al het benodigde ingesteld en kan vanaf mijn PDA naar de map met de database-publication browsen. Hij is dus toegankelijk.

code:
1
2
3
4
5
6
7
8
9
10
repl = New SqlCeReplication
repl.InternetUrl = "http://psvhja/ReplDemo/sscesa20.dll"
repl.InternetLogin = ""
repl.InternetPassword = ""
repl.Publisher = "PSVHJA"
repl.Publication = "titles"
repl.PublisherDatabase = "pubs"
repl.SubscriberConnectionString = "Data Source = \Program Files\Enquete-appl\Repliceren.sdf"
repl.Subscriber = "ReplDemo"
repl.Synchronize()


Deze code loopt goed tot repl.Synchronize. Dan krijg ik een foutmelding 'SQLCeException'. Google leverde niets op en ook foutcode -2147467259 helpt mij niet verder.

Kan iemand hier suggesties doen waar de oorzaak zou kunnen liggen, zodat ik die kan nakijken...

De volgende punten zijn volgens mij correct:
- de naam van de publication: titles
- de naam van de dbase waaruit de publication komt: pubs
- interneturl (werkt, is bereikbaar)
- internetlogin/password: anoniem (en dat werkt)
- locatie van het sdf-bestand.
- de map waarin de publicatie staat is gedeeld en voor iedereen volledig toegankelijk.

Het enige waar ik zelf 'bedenkingen' bij heb is of de PDA weet waar de publicatie exact staat. Want die staat niet namelijk direct in de map http://psvhja/ReplDemo/ maar dieper: http://psvhja/ReplDemo/Unc/PSVHJA_pubs_titles/20050309081808/ en dan een hele rits bestanden...

Hellup :)

  • whoami
  • Registratie: December 2000
  • Laatst online: 20:40
Afgezien van jouw probleem:
Denk je dat het een goed idee is om de DB te laten repliceren vanaf een PDA ? Als je eens verder denkt: stel dat je een DB wijziging moet doen, hoe ga je dat dan doen ?
Als je een DB wijziging moet doen die je niet kunt doen via de speciaal voorziene SP's in SQL Server, dan moet je je replicatie afbreken, je DB wijziigingen doen, en je replicatie terug opztten.
Dit is niet zo'n probleem als je maar één PDA hebt die moet gesynchroniseerd worden, maar 't wordt wel een probleem als je er meerdere hebt... Je zult er dan nl moeten voor zorgen dat jouw DB op de server volledig up to date is vooraleer je de DB wijzigingen gaat doen.

Over je error: ben je wel zeker dat jouw connectionstring goed is ? In de MSDN zie ik dit:
code:
1
repl.SubscriberConnectionString = "Provider=Microsoft.SQLSERVER.OLEDB.CE.2.0;Data Source=\\ssce.sdf";


Welke Message krijg je trouwens in de exception ? Of heeft die Exception ook nog een InnerException waar je meer info kunt uithalen?

[ Voor 10% gewijzigd door whoami op 09-03-2005 08:52 ]

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 20:40
Hmm, in de MSDN zelf is er niet veel te vinden over die class; heb ik het goed als ik zeg dat je met die class iedere keer zelf je replicatie opzet, en je iedere keer een nieuwe snapshot oid afhaalt ?

https://fgheysels.github.io/


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Misschien kun je eens een try .. catch om die repl.Synchronize() heen zetten, daarmee de Exception afvangen die je krijgt en die vervolgens leesbaar maken door de Message ervan op te vragen...? Dan hebben we/heb jij wat meer info waar je iets mee kunt.
Voorbeeldje in
C#:
1
2
3
4
5
6
7
8
try
{
  repl.Synchronize();
}
catch (Exception ex)
{
  MessageBox.Show(ex.Message);
}

[ Voor 10% gewijzigd door OZ-Gump op 09-03-2005 08:58 ]

My personal website


Verwijderd

Topicstarter
whoami schreef op woensdag 09 maart 2005 @ 08:54:
Hmm, in de MSDN zelf is er niet veel te vinden over die class; heb ik het goed als ik zeg dat je met die class iedere keer zelf je replicatie opzet, en je iedere keer een nieuwe snapshot oid afhaalt ?
- IIS verzorgt de toegang naar een map die geshared is voor iedereen.
- SQL Server zet in die map een publication van een database
- SQL Server Ce haalt die publication op en zet hem in een sdf-bestand op de PDA.

Dus idd, wat je zegt klopt wel ja :)

Later is het de bedoeling dat er op de PDA wijzigingen in de dbase worden aangebracht en dat die wijzigingen in een merge-replication worden doorgegeven aan SQL Server. Maar das pas later.

-edit-
Ik heb een try-catch er omheen staan (maar ff weggehaald in mijn post). Dankzij de catch weet ik de errorMessage: SqlCeException. Lekker veelzeggend he :( Verdere informatie, behalve dat nummer, heb ik niet.

[ Voor 13% gewijzigd door Verwijderd op 09-03-2005 08:59 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 20:40
Wat ik ook zie in de MSDN is dat ze dit nog doen:
code:
1
2
// Create the Local SSCE Database subscription
            repl.AddSubscription(AddOption.CreateDatabase);

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 20:40
Verwijderd schreef op woensdag 09 maart 2005 @ 08:58:
Ik heb een try-catch er omheen staan (maar ff weggehaald in mijn post). Dankzij de catch weet ik de errorMessage: SqlCeException. Lekker veelzeggend he :( Verdere informatie, behalve dat nummer, heb ik niet.
Normaal gezien moet je toch de Message van de Exception kunnen uitlezen, daar staat toch wat meer info in ?
Of anders bekijk je eens de InnerException

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ja, ook ik heb createdatabase erbij staan. En dat werkt: de sdf wordt aangemaakt, op de juiste plek.

oErr.Message = "SqlCeException"
InnerException = nothing
HResult = -2147467259
Native error = 28507
Source = "Microsoft SQL Server 2000 Windows CE Edition"

Errorcollection.count is overigens 3... Hoe kan ik de eigenschappen van die 3 fouten bekijken?

Erg bedankt iedereen hier :) Ik word hier echt gek van. Ben ook nog niet zo gewend aan programmeren dus ben nog licht ontvlambaar :)

  • whoami
  • Registratie: December 2000
  • Laatst online: 20:40
Misschien helpt dit je wel verder:

klik

klik

[ Voor 25% gewijzigd door whoami op 09-03-2005 09:25 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
Nee, sorry. Het gaat allemaal over hoe je replicatie opzet en dat weet ik wel. Nu wil ik weten wat die fout inhoudt zodat ik kan zoeken naar een oplossing.

Ik ga nu proberen een andere versie SQL Server CE te installeren. Wie-weet...

Verwijderd

Topicstarter
...En nog steeds geen succes.
Ik had deze handleiding doorlopen maar blijf dus met die error zitten.

Weet iemand een soortgelijke handleiding waarin een voorbeeld-replication helemaal wordt opgezet?

Verwijderd

Topicstarter
Uiteindelijk is het me toch gelukt. Heb alles heel duidelijk en secuur, stap voor stap doorlopen. Ik weet niet wat ik precies verkeerd had gedaan maar nu werkt het. Mooi hoor, om het zo te zien werken :)

Nu nog kijken hoe ik kan voorkomen dat ALLE gegevens worden gesynchroniseerd. Want eigenlijk wil ik voor 1 tabel alleen een 'push'-replication doen: alle gegevens vanuit de PDA naar SQL Server en nooit andersom.

-edit-
of is dat nou een pull-replication? :? Ligt er maar aan he...

[ Voor 10% gewijzigd door Verwijderd op 15-03-2005 14:11 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 20:40
Dan zal je - denk ik - gewoon 2 aparte publications moeten hebben.

https://fgheysels.github.io/

Pagina: 1