Log in to like this post! Migrating Spatial Data from SQL Server 2008 to SQL Azure [Infragistics] Mihail Mateev / Tuesday, September 21, 2010 Introduction SQL Azure now supports Spatial Data. Unfortunately not all tools offer migration of spatial data.. Microsoft SQL Management Studio for SQL Server 2008 R2 is released when SQL Azure didn’t support spatial data and now they are no updated to support this feature. One possibility is to use SQL Azure Migration Wizard: http://sqlazuremw.codeplex.com/ The actual version is SQL Azure Migration Wizard v3.3.7. SQL Azure Migration Wizard offers a simple way to import Sql Server data, including a spatial data (from geometry or geography type).More detailed information how to publish a Windows Azure you could find in the article: “How to publish your Windows Azure application right from Visual Studio 2010” This post explains mainly how to migrate spatial data and change configuration changes to be possible to use a spatial data in SQL Azure from Windows Azure Application Sample Application Demo application is a Silverlight application with Infragistics XamMap control, that uses spatial data from SQL Azure. The sample application is based on application from article “Using Infragistics XamMap Silverlight/WPF control with SQL Server Spatial” Requirements to build a sample application: Visual Studio 2010 SQL Server 2008 R2 Express or higher license. NetAdvantage for Silverlight Data Visualization 2010 vol.2 http://es.infragistics.com/dotnet/netadvantage/silverlight/data-visualization.aspx#Downloads SQL Azure Migration Wizard v3.3.7. The most recent version of Windows Azure Tools for Visual Studio Windows Azure account Steps to create the sample application Create a new SQL Azure database Migrate a sample database – SqlSpatialDemo from Local SQL Server to SQL Azure Create a new Windows Azure Storage Account and a Hosted Service Add a Web Role project in Solution Edit settings in Web.config and ServiceReferences.ClientConfig Publish the Windows Azure Cloud Service: Run the demo application Create a new SQL Azure database Log in Windows Azure with your account Select SQL Azure->Database to see a list with existing databases Select “Create Database” and choose the name and size of the new database. A new database is added in the list with existing Migrate a sample database – SqlSpatialDemo from Local SQL Server to SQL Azure Edit configuration of the SQL Migration Wizard in SQLAzureMW.exe.config 1: <?xml version="1.0" encoding="utf-8"?> 2: <configuration> 3: <appSettings> 4: <add key="SourceConnectNTAuth" value="true"/> 5: <add key="SourceServerName" value=".\SQLEXPRESS" /> 6: <add key="SourceUserName" value="" /> 7: <add key="SourcePassword" value="" /> 8: 9: <add key="TargetConnectNTAuth" value="false"/> 10: <add key="TargetServerName" value="tcp:MyDatabaseServerName.database.windows.net"/> 11: <add key="TargetUserName" value="DatabaseUser@MyDatabaseServerName"/> <!-- NOTE BCP requires that you have the SQL Azure server name the end of the user name ie. UserSA@jy8kadhrma --> 12: <add key="TargetPassword" value="MyPassword"/> 13: 14: <add key="BCPFileDir" value="c:\SQLAzureMW\BCPData" /> <!-- Input / Output file location for BCP table data. If blank, then will use temp directory --> 15: <add key="DelOldBCPFiles" value="true" /> <!-- Deletes old BCP files if exists, otherwise, it will add a unique numeric ext --> 16: <add key="BCPFileExt" value="dat"/> <!-- BCP output file extension --> 17: <add key="DeleteBCPOutputFiles" value="false"/> <!-- If true, SQLAzureMW will delete the temporary BCP output files after successfully uploading to target server --> 18: 19: …. 20: 21: </appSettings> 22: </configuration> To work migration wizard properly need to set TargetUserName with user@ServerName format:<add key="TargetUserName" value="DatabaseUser@MyDatabaseServerName"/> Start SQL Migration Wizard and select “Analyze an Migrate option Log to the local SQL server Select the database that want to migrate For “Choose Objects” select “Script all database objects”. In “Advanced Settings” ensure that for “Script Table / Data” is selected option: “Table Schema with Data”. Connect to SQL Azure server. Select the created database where plan to migrate the local database. Select “Next” and wait until migration is complete. Open Microsoft SQL Management Studio, connect to SQL Azure server, select migrated database and create a new query. Write select * from world In the “Spatial results” tab there is a map of the world. Create a new Windows Azure Storage Account and a Hosted Service. Select “New Service” Create a storage account Create a Hosted Service in the same way. Add a Web Role project in Solution Add a new Windows Azure Cloud Service project. Skip creating of new Web Role in this project. Add a Web Role project in Solution. If you want to add new Web Role project there are additional setting that must be done. Steps are describe in the article: Windows Azure Web Role Deployment Checklist In this sample there is no need to do that. Edit settings in Web.config and ServiceReferences.ClientConfig Open Web.config and change the connection string: 1: <appSettings> 2: <add key="token" value="[YourToken here]"/> 3: <!--<add key="connectionString" value="Data Source=.\SQLEXPRESS;Initial Catalog=SqlSpatialDemo;Integrated Security=True"/>--> 4: 5: </appSettings> 6: <connectionStrings> 7: <add name="SqlSpatial" 8: connectionString="Server=tcp:[MyDatabaseServerName].database.windows.net;Database=[Database Name];User ID=[DatabaseUser]@[MyDatabaseServerName];Password=[MyPassword];Trusted_Connection=False;Encrypt=True;Min pool size = 5; Max pool size = 100" 9: providerName="System.Data.SqlClient" 10: /> 11: </connectionStrings> In the Silverlight application modify the ServiceReferences.ClientConfig file: Change the endpoint address with an expected one when application is published:for example: http://MyAzureApplication.cloudapp.net/SqlDbService.svc where MyAzureApplication.cloudapp.net is the endpoint address of your application. 1: <client> 2: <!--<endpoint address="http://localhost:4159/SqlDbService.svc" binding="customBinding" 3: bindingConfiguration="CustomBinding_SqlDbService" contract="SqlDbServiceReference.SqlDbService" 4: name="CustomBinding_SqlDbService" />--> 5: <endpoint address="http://MyAzureApplication.cloudapp.net/SqlDbService.svc" binding="customBinding" 6: bindingConfiguration="CustomBinding_SqlDbService" contract="SqlDbServiceReference.SqlDbService" 7: name="CustomBinding_SqlDbService" /> 8: ... 9: </client> Publish the Windows Azure Cloud Service: Add a reference to Microsoft.SqlServer.Types library from SQL Server 2008 R2 SDK. Change in properties option “Copy Local” to true. We need it because Windows Azure doesn’t know about Spatial types(geometry and geography). Create a certificate for authentication: for more details you could look at the article: “How to publish your Windows Azure application right from Visual Studio 2010” Publish the Windows Azure Cloud Service Run the published application and enjoy! Source code of the demo application you could find here: