Top Banner
#4 - SQL Server CE Marco Frontini [email protected] Product Manager www.softandroll.it
31
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: #4 - SQL Server CE Marco Frontini marco.frontini@softandroll.it Product Manager .

#4 - SQL Server CE

Marco [email protected]

Product Managerwww.softandroll.it

Page 2: #4 - SQL Server CE Marco Frontini marco.frontini@softandroll.it Product Manager .

SQL Server 2005 IntegrationSQL Server 2005 Tools

– SQL Server Management Studio• Creare/gestire Databases SQL Mobile• Show Plan and Hints• Ottimizzazione

semplificata• Enhanced Publication• Subscription Wizard

Page 3: #4 - SQL Server CE Marco Frontini marco.frontini@softandroll.it Product Manager .

Execution Plan & Performance Test

DEMO #1 SQL Server 2005 Tools

DEMO #1 SQL Server 2005 Tools

Page 4: #4 - SQL Server CE Marco Frontini marco.frontini@softandroll.it Product Manager .

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

Page 5: #4 - SQL Server CE Marco Frontini marco.frontini@softandroll.it Product Manager .

OverviewDevice Data Access

Native Stack Managed Stack

SQL Server Mobile Edition

CLR / .NET CFCLR / .NET CF

SQL Server CE SQL Server CE Data ProviderData Provider

ADO.NETADO.NET

VB .NET / C#VB .NET / C#VS 2005 C++VS 2005 C++

OLEDB CEOLEDB CE

OLEDB OLEDB ProviderProvider

QP / Cursor Engine / ESQP / Cursor Engine / ES

Storage Engine / Replication TrackingStorage Engine / Replication Tracking

Page 6: #4 - SQL Server CE Marco Frontini marco.frontini@softandroll.it Product Manager .

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

Page 7: #4 - SQL Server CE Marco Frontini marco.frontini@softandroll.it Product Manager .

SincronizzazioneObiettivi

• 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

Page 8: #4 - SQL Server CE Marco Frontini marco.frontini@softandroll.it Product Manager .

SincronizzazioneModalità

• 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)

Page 9: #4 - SQL Server CE Marco Frontini marco.frontini@softandroll.it Product Manager .

OL

E D

B

SQL Mobile Client SQL Mobile Client AgentAgent

SincronizzazioneArchitettura

HTTP OLE DB

ApplicationApplication

SQL Mobile Engine

DatabaseDatabaseSQL ServerSQL ServerDatabaseDatabase

SQL Server SQL Server OLE DBOLE DBProviderProvider

SQL Mobile ServerSQL Mobile ServerAgentAgent

Internet Information Internet Information Services (IIS)Services (IIS)

Page 10: #4 - SQL Server CE Marco Frontini marco.frontini@softandroll.it Product Manager .

Replication

• Configurazione di IIS• SQL Server Agent• File System Share• Emulatore• Loopback Adapter

Page 11: #4 - SQL Server CE Marco Frontini marco.frontini@softandroll.it Product Manager .

Configurazione Server-Side

DEMO #2 Creazione di una pubblicazione

DEMO #2 Creazione di una pubblicazione

Page 12: #4 - SQL Server CE Marco Frontini marco.frontini@softandroll.it Product Manager .

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

Page 13: #4 - SQL Server CE Marco Frontini marco.frontini@softandroll.it Product Manager .

Remote Data AccessSqlCeRemoteDataAccess

• 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

Page 14: #4 - SQL Server CE Marco Frontini marco.frontini@softandroll.it Product Manager .

Remote Data AccessPull

• 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

Page 15: #4 - SQL Server CE Marco Frontini marco.frontini@softandroll.it Product Manager .

Remote Data AccessPull

• 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

Page 16: #4 - SQL Server CE Marco Frontini marco.frontini@softandroll.it Product Manager .

Remote Data AccessPull

Public Sub RDAPull()Public Sub RDAPull() Dim rda As New Dim rda As New SqlCeRemoteDataAccessSqlCeRemoteDataAccess Dim ServerOledbStr As String = Dim ServerOledbStr As String = “ “Provider=sqloledb; Data Source=dataserver;” & _Provider=sqloledb; Data Source=dataserver;” & _ “ “Initial Catalog=Pubs;User Id=sa;Password=;”Initial Catalog=Pubs;User Id=sa;Password=;”

rda.LocalConnectionString = rda.LocalConnectionString = ” ”Data Source=\My Documents\test.sdf”Data Source=\My Documents\test.sdf” ‘ Set URL and IIS login/password.

rda.Pull(rda.Pull( “ “Authors”, _Authors”, _ “ “Select * from authors where state = ‘CA’”, _Select * from authors where state = ‘CA’”, _ ServerOledbStr, _ServerOledbStr, _ RdaTrackOption.TrackingOn)RdaTrackOption.TrackingOn)End SubEnd Sub

Page 17: #4 - SQL Server CE Marco Frontini marco.frontini@softandroll.it Product Manager .

Remote Data AccessPush

• 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

Page 18: #4 - SQL Server CE Marco Frontini marco.frontini@softandroll.it Product Manager .

Remote Data AccessPush

Public Sub RDAPush()Public Sub RDAPush() Dim rda As New SqlCeRemoteDataAccess()Dim rda As New SqlCeRemoteDataAccess()

Dim ServerOledbStr As String = Dim ServerOledbStr As String = “ “Provider=sqloledb; Data Source=dataserver;” & _Provider=sqloledb; Data Source=dataserver;” & _ “ “Initial Catalog=Pubs;User Id=sa;Password=;”Initial Catalog=Pubs;User Id=sa;Password=;”

rda.LocalConnectionString = _rda.LocalConnectionString = _””Data Source=\My Documents\test.sdf”Data Source=\My Documents\test.sdf”

‘ Set URL and IIS login/password. rda.Push( _rda.Push( _ “ “Authors”, _Authors”, _ ServerOledbStr, _ServerOledbStr, _ RdaBatchOption.BatchingOn)RdaBatchOption.BatchingOn)End SubEnd Sub

Page 19: #4 - SQL Server CE Marco Frontini marco.frontini@softandroll.it Product Manager .

DEMO #3 Remote Data Access

DEMO #3 Remote Data Access

Page 20: #4 - SQL Server CE Marco Frontini marco.frontini@softandroll.it Product Manager .

Merge ReplicationOverview

• 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

Page 21: #4 - SQL Server CE Marco Frontini marco.frontini@softandroll.it Product Manager .

Merge ReplicationOverview

• 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

Page 22: #4 - SQL Server CE Marco Frontini marco.frontini@softandroll.it Product Manager .

Merge ReplicationVediamo il Codice

Public Sub SyncSubscription()Public Sub SyncSubscription() Dim repl as New SqlCeReplication()Dim repl as New SqlCeReplication() repl.InternetUrl = repl.InternetUrl = "http://Server1/SQLServerCE/sqlcesa30.dll""http://Server1/SQLServerCE/sqlcesa30.dll" repl.Publisher = “SERVER1"repl.Publisher = “SERVER1" repl.PublisherDatabase = “SampleServerDb"repl.PublisherDatabase = “SampleServerDb" repl.PublisherLogin = "sa"repl.PublisherLogin = "sa" repl.PublisherPassword = ""repl.PublisherPassword = "" repl.Publication = “SamplePublication"repl.Publication = “SamplePublication" repl.SubscriberConnectionString = _repl.SubscriberConnectionString = _

””Data Source=\My Documents\SampleLocalDB.sdf“Data Source=\My Documents\SampleLocalDB.sdf“

repl.HostName = “User1"repl.HostName = “User1" repl.AddSubscription(AddOption.CreateDatabase)repl.AddSubscription(AddOption.CreateDatabase) repl.Synchronize()repl.Synchronize()End SubEnd Sub

Page 23: #4 - SQL Server CE Marco Frontini marco.frontini@softandroll.it Product Manager .

Merge ReplicationVediamo 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

Page 24: #4 - SQL Server CE Marco Frontini marco.frontini@softandroll.it Product Manager .

Merge ReplicationMinimizzare 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)

Page 25: #4 - SQL Server CE Marco Frontini marco.frontini@softandroll.it Product Manager .

DEMO #4 Merge Replication

DEMO #4 Merge Replication

Page 26: #4 - SQL Server CE Marco Frontini marco.frontini@softandroll.it Product Manager .

SQL Server 2005 Mobile EditionSincronizzazione Migliorata

• Miglior controllo– Multiuser synchronization– Progress notifications– Sottoscrizioni multiple nello stesso

database

• Migliori performance (con SQL 2005)– Download-only tables– Partitioned groups

Page 27: #4 - SQL Server CE Marco Frontini marco.frontini@softandroll.it Product Manager .

SQL CE Tips & TricksAbilitare il LOG di SQL CE Server Agent

Nel registro sotto la chiaveHKLM\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 messaggiViene 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

Page 28: #4 - SQL Server CE Marco Frontini marco.frontini@softandroll.it Product Manager .

Fare la sceltaQuale?

• 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

Page 29: #4 - SQL Server CE Marco Frontini marco.frontini@softandroll.it Product Manager .

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>.C

AB

Page 30: #4 - SQL Server CE Marco Frontini marco.frontini@softandroll.it Product Manager .

Links utili

• SQL Server 2005 Mobile Edition– http://msdn.microsoft.com/mobility/sqlmobile/

• Microsoft Mobility– http://msdn.microsoft.com/mobility/

Page 31: #4 - SQL Server CE Marco Frontini marco.frontini@softandroll.it Product Manager .

© 2005 Microsoft Corporation. All rights reserved.© 2005 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.Content created by 3 Leaf SolutionsContent created by 3 Leaf Solutions