#4 - SQL Server CE
Marco Frontini
[email protected]
Product Manager
www.softandroll.it
SQL Server 2005 Integration
SQL Server 2005 Tools
– SQL Server Management Studio
• Creare/gestire Databases SQL Mobile
• Show Plan and Hints
• Ottimizzazione
semplificata
• Enhanced Publication
• Subscription Wizard
DEMO #1
SQL Server 2005 Tools
Execution Plan & Performance Test
Versioni
• SQL Server CE 2.0
– Supporta lo sviluppo .NET con CF 1.0
– Installabile su
• Pocket PC 2000 o successivo
• Windows CE 4.1 o successivo
• No Smartphone
• SQL Server 2005 Mobile Edition (SQL CE 3.0)
– Sviluppo con .NET CF 2.0
– Installabile su
• Pocket PC 2003
• Windows Mobile 5.0
• Anche Smartphone 5.0
– Integrato con VS 2005 e SQL Server 2005
– SQL Server Mobile Database Upgrade tool (upgrade.exe)
per migrare da 1.0-2.0 a 3.0
Overview
Device Data Access
Native Stack
Managed Stack
VS 2005 C++
VB .NET / C#
OLEDB CE
ADO.NET
SQL Server CE
Data Provider
OLEDB
Provider
CLR / .NET CF
QP / Cursor Engine / ES
Storage Engine / Replication Tracking
SQL Server Mobile Edition
SQL Server 2005 Mobile Edition
Architettura Migliorata
• Storage engine
–
–
–
–
–
–
Supporto per Connessioni Multiple
Row level locking
Shares common memory pool
Auto-shrink
SqlCeEngine.Shrink
SqlCeEngine.Repair
• Query processor
– Ottimizzazione Cost-based
– Cursori Scrollable e Updatable - SqlCeResultSet
Sincronizzazione
Obiettivi
• Condividere una fonte dati comune
– Accesso multi-utente alla stessa fonte dati
• Maggiore versatilità per l’utente
– Consente agli utenti di cambiare il device e continuare ad
accedere alla stessa fonte dati
• Semplificare lo sviluppo e la logica
– La sincronizzazione diventa una sola linea di codice
– La risoluzione dei conflitti avviene sul server attraverso il
SQL Server model
Sincronizzazione
Modalità
• SQL Server Mobile Edition fornisce due modalità
di sincronizzazione
– Remote data access (RDA)
– Merge replication
• Entrambe si appoggiano ad IIS
e sqlcesa30.dll (o sscesa20.dll)
Sincronizzazione
Architettura
Application
SQL Mobile Client
Agent
HTTP
SQL Mobile Server
Agent
OLE DB
SQL Server
OLE DB
Provider
OLE DB
Internet Information
Services (IIS)
SQL Mobile Engine
Database
SQL Server
Database
Replication
•
•
•
•
•
Configurazione di IIS
SQL Server Agent
File System Share
Emulatore
Loopback Adapter
DEMO #2
Creazione di una pubblicazione
Configurazione Server-Side
Remote Data Access
Overview
• Una “connessione” via HTTP/S tra SQL Server e
SQL Server Mobile Edition
– Comunica con SQL Server senza essere “connesso”
– Salva il risultato di query eseguite su SQL Server
direttamente in SQL Server CE
• Tenendo eventualmente traccia delle modifiche (in locale)
– Rimanda le modifiche locali a SQL Server
• Il .NET Compact Framework fornisce un wrapper
managed
– SqlCeRemoteDataAccess
Remote Data Access
SqlCeRemoteDataAccess
• Ogni applicazione che usa RDA deve specificare
i parametri di connessione
– Connessione al database locale
• SQL Mobile Edition connection string
– Web server
• URL – deve includere sqlcesa30.dll (o sscesa20.dll)
• Login e password
– Proxy server
• Login e password
• Le informazioni sulla connessione remota vengono
inviatate con ogni comando eseguito
– SQL Server connection string
Remote Data Access
Pull
• Viene creata una tabella locale con schema e dati
– È possibile includere la primary key
– È possibile includere gli indici
• I dati possono arrivare da una tabella, una vista o
da una stored procedure
– Si possono (DEVONO) filtrare i dati per ridurre la
dimensione
– Viste e stored procedure possono referenziare una sola
tabella con primary key
Remote Data Access
Pull
• Tracking On
– Le modifiche locali possono essere rimandate al server
– Viene applicata una “optimistic concurrency”
(nessun lock sui dati del server)
• La tabella locale non deve esistere
– Creata dal metodo Pull
– Se la tabella esiste viene generato un errore
Remote Data Access
Pull
Public Sub RDAPull()
Dim rda As New SqlCeRemoteDataAccess
Dim ServerOledbStr As String =
“Provider=sqloledb; Data Source=dataserver;” & _
“Initial Catalog=Pubs;User Id=sa;Password=;”
rda.LocalConnectionString =
”Data Source=\My Documents\test.sdf”
‘ Set URL and IIS login/password.
rda.Pull(
“Authors”, _
“Select * from authors where state = ‘CA’”, _
ServerOledbStr, _
RdaTrackOption.TrackingOn)
End Sub
Remote Data Access
Push
• Rimanda le modifiche al server
– Tutte le modifiche dall’ultimo pull o push sono inviate
– Le modifiche sono applicate al server indiscriminatamente
• Il table tracking doveva essere “on” durante il Pull
• Se una qualsiasi modifica fallisce
– Gli errori vengono scritti nella error table
(se specificata durante il Pull)
– BatchingOn, viene fatto un roll back di tutto
– BatchingOff, viene fatto un roll back solo della modifica
che ha generato l’errore
Remote Data Access
Push
Public Sub RDAPush()
Dim rda As New SqlCeRemoteDataAccess()
Dim ServerOledbStr As String =
“Provider=sqloledb; Data Source=dataserver;” & _
“Initial Catalog=Pubs;User Id=sa;Password=;”
rda.LocalConnectionString = _
”Data Source=\My Documents\test.sdf”
‘ Set URL and IIS login/password.
rda.Push( _
“Authors”, _
ServerOledbStr, _
RdaBatchOption.BatchingOn)
End Sub
DEMO #3
Remote Data Access
Merge Replication
Overview
• Sincronizza i dati tra SQL Server e SQL Server CE
– SQL Server è il publisher
– SQL Server CE è il subscriber
• SQL Server CE riceve uno snapshot iniziale
da SQL Server
• SQL Server CE e SQL Server possono modificare i dati
– La risoluzione dei conflitti può essere personalizzata sul
server
• con SQL 2005 anche con codice managed
Merge Replication
Overview
• Le modifiche vengono sincronizzate
– Da SQL Server CE vengono inviate a SQL Server
– Da SQL Server vengono inviate a SQL Server CE
• SQL Server 2005 Management Studio
– Nuovi wizards
• Creazione del Publishers
• Creazione dei Subscribers
• Il .NET CF fornisce un wrapper managed
– SqlCeReplication
Merge Replication
Vediamo il Codice
Public Sub SyncSubscription()
Dim repl as New SqlCeReplication()
repl.InternetUrl =
"http://Server1/SQLServerCE/sqlcesa30.dll"
repl.Publisher
= “SERVER1"
repl.PublisherDatabase = “SampleServerDb"
repl.PublisherLogin
= "sa"
repl.PublisherPassword = ""
repl.Publication
= “SamplePublication"
repl.SubscriberConnectionString = _
”Data Source=\My Documents\SampleLocalDB.sdf“
repl.HostName = “User1"
repl.AddSubscription(AddOption.CreateDatabase)
repl.Synchronize()
End Sub
Merge Replication
Vediamo i Costi
• Aggiunta di alcuni triggers e stored procedures
– Aggiunge overhead
• Le tabelle replicate devono avere un campo
ROWGUIDCOL
– Permette di identificare in modo univoco un record
– Se non è già presente viene aggiunto
• Il database deve tracciare tutte le modifiche
– Alcune tabelle vengono aggiunte per tener traccia delle
modifiche
– Il database può crescere molto
Merge Replication
Minimizzare i costi per i Devices
• La chiave del successo per le applicazioni
mobile è “minimizzare la comunicazione”
– Prendere solo quello che serve
– Applicare i filtri
• SqlCeReplication.HostName e HOST_NAME()
• Ridurre la quantità di dati scambiati tra
device e server
– Riduce il tempo
– Migliora le prestazioni
– Riduce i costi (il cliente sarà grato)
DEMO #4
Merge Replication
SQL Server 2005 Mobile Edition
Sincronizzazione Migliorata
• Miglior controllo
– Multiuser synchronization
– Progress notifications
– Sottoscrizioni multiple nello stesso database
• Migliori performance (con SQL 2005)
– Download-only tables
– Partitioned groups
SQL CE Tips & Tricks
Abilitare il LOG di SQL CE Server Agent
Nel registro sotto la chiave
HKLM\Software\Microsoft\MSSQLSERVERCE\3.0\Transport
(HKLM\Software\Microsoft\MSSQLSERVERCE\Transport x SQL CE 2.0)
aggiungere una DWORD con il nome della virtual directory +
LOGGING_LEVEL
(es. C:\Inetpub\Sqlce\LOGGING_LEVEL)
I valori possibili sono:
• 0
nessun log
• 1
solo errori
• 2
errori e warnings
• 3
errori, warnings e messaggi
Viene creato un un file sqlcesa30.log (sscerepl.log x 2.0) nella virtual
directory
Con CE 3.0 è possibile vede statistiche e diagnostica via IE
• http://<sqlservername/sqlce>/sqlcesa30.dll?stats
• http://<sqlservename/sqlce>/sqlcesa30.dll?diag
Fare la scelta
Quale?
• Remote Data Access
– Miglior scalabilità sul server
• Merge Replication
– Minor tempo di sviluppo
– Sincronizzazione bi-direzionale
• Per altre informazioni su come fare la scelta
• http://msdn.microsoft.com/library/en-us/dnppcgen/
html/eff_arch_sql_servr_ce_rep.asp
Deployment
• Automatico con Visual Studio
• Manuale distribuendo i CABs corretti
– SQL CE 2.0
• sqlce.<platform>.<processor>.CAB
• sqlce.dev.<platform>.<processor>.CAB
– SQL CE 3.0
• sqlce30.<platform>.<processor>.CAB
• sqlce30.repl.<platform>.<processor>.CAB
• sqlce30.dev.ENU.<platform>.<processor>.CAB
Links utili
• SQL Server 2005 Mobile Edition
– http://msdn.microsoft.com/mobility/sqlmobile/
• Microsoft Mobility
– http://msdn.microsoft.com/mobility/
© 2005 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.
Content created by 3 Leaf Solutions
Scarica

#4 - SQL Server CE