April 2010


A partir de hoy existen nuevas características en la Plataforma de SQL Azure (http://blogs.msdn.com/sqlazure/archive/2010/04/16/9997517.aspx):

  • MARS (Multiple Active Results Sets), lo cual simplifica el diseño de las aplicaciones y permite trabajar con múltiples conjuntos de datos
  • ALTER rename permite renombrar las bases de datos en la nube 
  • Application and Multi-server management mejoras en las Data-tier Applications lo cual que permite hacer el despliegue de base de datos en SQL Azure de forma más flexible desde SQL Server 2008 R2 y Visual Studio 2010

También puede empezar a probar las bases de 50GB en SQL Azure, para hacerlo envíe un correo a EngageSA@microsoft.com 

 

Saludos,

Ing. Eduardo Castro Martínez, PhD – Microsoft SQL Server MVP

http://mswindowscr.org

http://comunidadwindows.org

Costa Rica

Technorati Tags: SQL Server

LiveJournal Tags: SQL Server

del.icio.us Tags: SQL Server

http://ecastrom.blogspot.com

https://ecastrom.wordpress.com

http://ecastrom.spaces.live.com

http://universosql.blogspot.com

http://todosobresql.blogspot.com

http://todosobresqlserver.wordpress.com

http://mswindowscr.org/blogs/sql/default.aspx

http://citicr.org/blogs/noticias/default.aspx

http://sqlserverpedia.blogspot.com/

Note: Cross posted from Eduardo Castro.

Permalink

There are new improvements in the SQL Azure Platform (http://blogs.msdn.com/sqlazure/archive/2010/04/16/9997517.aspx):

  • MARS (Multiple Active Results Sets), which simplifies the application design process
  • ALTER rename process for symmetry in renaming databases
  • Application and Multi-server management for Data-tier Applications which further streamlines application design and enables deployments of database applications directly from SQL Server 2008 R2 and Visual Studio 2010 to SQL Azure for database deployment flexibility

Also you can take advantage of the new 50GB Databases en SQL Azure, you can become an early adopter of this new feature by sending an email to EngageSA@microsoft.com  then you must fill out a survey and nominate your application.

 

Regards,

Ing. Eduardo Castro Martínez, PhD – Microsoft SQL Server MVP

http://mswindowscr.org

http://comunidadwindows.org

Costa Rica

Technorati Tags: SQL Server

LiveJournal Tags: SQL Server

del.icio.us Tags: SQL Server

http://ecastrom.blogspot.com

https://ecastrom.wordpress.com

http://ecastrom.spaces.live.com

http://universosql.blogspot.com

http://todosobresql.blogspot.com

http://todosobresqlserver.wordpress.com

http://mswindowscr.org/blogs/sql/default.aspx

http://citicr.org/blogs/noticias/default.aspx

http://sqlserverpedia.blogspot.com/

Note: Cross posted from Eduardo Castro.

Permalink

Ahora SQL Azure implementa el Open Data Protocol, el Open Data Protocol (OData) es un estándar emergente para consultar y actualizar datos a través de la web. El OData es un protocolo basado en REST que se enfoca en maximizar la interoperabilidad entre servicios de datos y clientes. Dentro de estos clientes se pueden citar varias plataformas tales como ASP.NET, PHP, y Java, así como Microsoft Excel y aplicaciones móbiles. Más información puede encontrarse en  www.odata.org

Si desea probar esta nueva característica se puede inscribir en https://www.sqlazurelabs.com

También en este blog http://oakleafblog.blogspot.com/2010/03/odataorgs-sql-azure-northwind-sample.html puede ver un ejemplo de utilizar ODATA con SQL Azure.

 

Saludos,

 

Saludos,

Ing. Eduardo Castro Martínez, PhD – Microsoft SQL Server MVP

http://mswindowscr.org

http://comunidadwindows.org

Costa Rica

Technorati Tags: SQL Server

LiveJournal Tags: SQL Server

del.icio.us Tags: SQL Server

http://ecastrom.blogspot.com

https://ecastrom.wordpress.com

http://ecastrom.spaces.live.com

http://universosql.blogspot.com

http://todosobresql.blogspot.com

http://todosobresqlserver.wordpress.com

http://mswindowscr.org/blogs/sql/default.aspx

http://citicr.org/blogs/noticias/default.aspx

http://sqlserverpedia.blogspot.com/

Note: Cross posted from Eduardo Castro.

Permalink

SQL Azure now implements the Open Data Protocol, the Open Data Protocol (OData) is an emerging standard for querying and updating data over the Web. OData is a REST-based protocol whose core focus is to maximize the interoperability between data services and clients that wish to access that data. It is thus being used to expose data from a variety of sources, from relational databases and file systems to content management systems and traditional websites. In addition, clients across many platforms, ranging from ASP.NET, PHP, and Java websites to Microsoft Excel and applications on mobile devices, are finding it easy to access those vast data stores through OData as well. Full information about OData can be found on its dedicated website. www.odata.org

You can subscribe to be an early tester of SQL Azure Open Data Protocol here https://www.sqlazurelabs.com

You can also read a full sample here http://oakleafblog.blogspot.com/2010/03/odataorgs-sql-azure-northwind-sample.html

Regards,

 

Saludos,

Ing. Eduardo Castro Martínez, PhD – Microsoft SQL Server MVP

http://mswindowscr.org

http://comunidadwindows.org

Costa Rica

Technorati Tags: SQL Server

LiveJournal Tags: SQL Server

del.icio.us Tags: SQL Server

http://ecastrom.blogspot.com

https://ecastrom.wordpress.com

http://ecastrom.spaces.live.com

http://universosql.blogspot.com

http://todosobresql.blogspot.com

http://todosobresqlserver.wordpress.com

http://mswindowscr.org/blogs/sql/default.aspx

http://citicr.org/blogs/noticias/default.aspx

http://sqlserverpedia.blogspot.com/

Esta es nuestra participación en el Episodio 3 de Microsoft Café, en el cual hablamos sobre SQL Azure.

 

 

Saludos,

Ing. Eduardo Castro Martínez, PhD – Microsoft SQL Server MVP

http://mswindowscr.org

http://comunidadwindows.org

Costa Rica

Technorati Tags: SQL Server

LiveJournal Tags: SQL Server

del.icio.us Tags: SQL Server

http://ecastrom.blogspot.com

https://ecastrom.wordpress.com

http://ecastrom.spaces.live.com

http://universosql.blogspot.com

http://todosobresql.blogspot.com

http://todosobresqlserver.wordpress.com

http://mswindowscr.org/blogs/sql/default.aspx

http://citicr.org/blogs/noticias/default.aspx

http://sqlserverpedia.blogspot.com/

SQL Azure permite crear múltiples bases de datos de forma sencilla y rápida. Para poder aumentar la escalabilidad de las aplicaciones es necesario poder aumentar la capacidad de manejo de datos de forma casi lineal. Para poder lograr esto podemos recurir a la capacidad de creación dinámica de base de datos en SQL Azure y de esa forma poder distribuir los datos de una única base de datos en múltiples bases de datos, esta técnica es conocida como Database Sharding.

Existen diferentes técnicas para hacer Database Sharding entre estas están:

  • Particionamiento basado en rangos. En esta técnica se divide una única tabla en varios servidores, para esto se debe utilizar un algoritmo que permita dividir los datos de forma uniforme y predicible. El criterio para dividir debe procurar que la división de los datos sea balanceada, por ejemplo si se divide por estado entonces podría que un estado tenga más datos que otro y la división no será balanceada.
  • Particionamiento vertical. Esta técnica implica asignar o almacenar tablas grandes en base de datos distintas, por ejemplo, una BD tiene la tabla de clientes, otra BD tiene la tabla de órdenes y otra BD la tabla de imágenes. En esta técnica el problema surge si la tabla de clientes crece mucho, entonces en este caso deberemos utilizar particionamiento por rangos.
  • Particionamiento basados en llaves artificiales o hash. En este caso uno o más atributos o columnas de la tabla son utilizados en una función de hash que permite asignar una llave con base de la cual se hace la división de los datos. El único detalle a considerar con esta técnica es que tenemos que saber de antemano la cantidad de base de datos que deseamos crear ya que es un parámetro utilizado en la función de hash.
  • Pariticionamiento dinámico. Esta técnica también conocida como particionamiento por directorios implica la creación de una función del tipo ObtenerServidorDe, esto significa que en la capa de acceso a datos se llama a esta función para determinar en cual base de datos se encuentra el registro que deseamos obtener. Esta técnica es la más dinámica de todas puesto que podemos agregar o quitar bases de datos sin que se afecte al resto de la arquitectura de la aplicación.
  • Particionamiento aleatorio. Similar al particionamiento dinámico con la única diferencia de que utiliza algoritmos aleatorios para asignar un registro a una base de datos determinada.

Un ejemplo de pseudocódigo de particionamiento dinámico sería el siguiente:

 

string connectionString = ObtenerServidorDe(idOrden);

SqlConnection conn = new SqlConnection (connectionString);

conn.Open();

SqlCommand cmd = new SqlCommand("….”);

 

Algunas consideraciones al utilizar el Sharding son las siguientes:

 

  • Cómo manejar la integridad referencial. Debido a que no se soporta integridad referencial entre servidores, es necesario que la capa de acceso a datos realice las verificaciones de integridad referencial, aunque esto implica más código y tiempo de desarrollo, nos asegura la integridad de los datos.
  • Rebalanceo de particionamiento. Se puede dar el caso de que en primera instancia se utiliza un modelo de particionamiento pero después hay que cambiarlo, en este caso la técnica de particionamiento dinámico es la más factible, aunque es un punto único de fallo, lo más recomendado es utilizar un Azure Worker Role para implementar este tipo de particionamiento.
  • Consultas entre tablas relacionados. Al momento de utilizar sharding ya no será posible realizar consultas que unan tablas en distintas base de datos, para hacer esto se pueden utilizar tres técnicas: la primera implica que todas las consultas complejas deben eliminarse por consultas simples que accesan una única tabla y los joins se hacen a nivel lógico en la capa de acceso a datos, la segunda implica desnormalizar las tablas para que se puedan hacer consultas desde una sola tabla, la tercer técnica es utilizar tablas de consolidación. En las tablas de consolidación todas las tablas individuales están en una BD distinta, pero para aquellas consultas que necesitan hacer búsquedas sobre todos los registros, se crea una tabla resumen en otra bd que contine todos los registros de todos los shards, aunque esta técnica permite hacer búsquedas sobre todos los registros, implica moficar la capa de acceso a datos para que le de mantenimiento a las talbas individuales y las tablas consolidadas lo cual aumenta la complejidad de la aplicación.

 

Saludos,

Ing. Eduardo Castro Martinez, PhD – Microsoft SQL Server MVP

http://mswindowscr.org

http://comunidadwindows.org

Costa Rica

Technorati Tags: SQL Server

LiveJournal Tags: SQL Server

del.icio.us Tags: SQL Server

http://ecastrom.blogspot.com

https://ecastrom.wordpress.com

http://ecastrom.spaces.live.com

http://universosql.blogspot.com

http://todosobresql.blogspot.com

http://todosobresqlserver.wordpress.com

http://mswindowscr.org/blogs/sql/default.aspx

http://citicr.org/blogs/noticias/default.aspx

If you are configuring a SQL Server to be used as an Session State for ASP.NET you need to configure the proper security to allow the application pool to access the SQL Server, you can use the following script to configure the security, remember to configure the proper identity (the one that is configured in the application pool)

 

use ASPState

go

grant EXECUTE on GetHashCode to [ApplicationPoolIdentity]

grant EXECUTE on GetMajorVersion to [ApplicationPoolIdentity]

grant EXECUTE on TempGetAppID to [ApplicationPoolIdentity]

grant EXECUTE on TempGetStateItem to [ApplicationPoolIdentity]

grant EXECUTE on TempGetStateItem2 to [ApplicationPoolIdentity]

grant EXECUTE on TempGetStateItem3 to [ApplicationPoolIdentity]

grant EXECUTE on TempGetStateItemExclusive to [ApplicationPoolIdentity]

grant EXECUTE on TempGetStateItemExclusive2 to [ApplicationPoolIdentity]

grant EXECUTE on TempGetStateItemExclusive3 to [ApplicationPoolIdentity]

grant EXECUTE on TempGetVersion to [ApplicationPoolIdentity]

grant EXECUTE on TempInsertStateItemLong to [ApplicationPoolIdentity]

grant EXECUTE on TempInsertStateItemShort to [ApplicationPoolIdentity]

grant EXECUTE on TempInsertUninitializedItem to [ApplicationPoolIdentity]

grant EXECUTE on TempReleaseStateItemExclusive to [ApplicationPoolIdentity]

grant EXECUTE on TempRemoveStateItem to [ApplicationPoolIdentity]

grant EXECUTE on TempResetTimeout to [ApplicationPoolIdentity]

grant EXECUTE on TempUpdateStateItemLong to [ApplicationPoolIdentity]

grant EXECUTE on TempUpdateStateItemLongNullShort to [ApplicationPoolIdentity]

grant EXECUTE on TempUpdateStateItemShort to [ApplicationPoolIdentity]

grant EXECUTE on TempUpdateStateItemShortNullLong to [ApplicationPoolIdentity]

go

 

<sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" stateNetworkTimeout="10" sqlConnectionString="data source=127.0.0.1;Integrated Security=SSPI" sqlCommandTimeout="30" customProvider="" cookieless="UseCookies" cookieName="ASP.NET_SessionId" timeout="20" allowCustomSqlDatabase="false" regenerateExpiredSessionId="true" partitionResolverType="" useHostingIdentity="true" > <providers> <clear /> </providers> </sessionState>

 

Regards,

 

Ing. Eduardo Castro Martínez, PhD – Microsoft SQL Server MVP

http://mswindowscr.org

http://comunidadwindows.org

Costa Rica

Technorati Tags: SQL Server

LiveJournal Tags: SQL Server

del.icio.us Tags: SQL Server

http://ecastrom.blogspot.com

https://ecastrom.wordpress.com

http://ecastrom.spaces.live.com

http://universosql.blogspot.com

http://todosobresql.blogspot.com

http://todosobresqlserver.wordpress.com

http://mswindowscr.org/blogs/sql/default.aspx

http://citicr.org/blogs/noticias/default.aspx

http://sqlserverpedia.blogspot.com/Note: Cross posted from Eduardo Castro.

Permalink

Si ha configurado SQL Server como repositorio para las sesiones de ASP.NET puede que se le despliegue este error Unable to use SQL Server because ASP.NET version 2.0 Session State is not installed on the SQL server, esto se debe a que la cuenta con la cual está ejecutando el Application Pool del sitio en ASP.NET no tiene derechos sobre la base de datos en SQL Server, para configurarlo ejecute las siguientes instrucciones, recuerde cambiar la identidad del usuario por el usuario que tiene configurado en su IIS.

 

use ASPState

go

grant EXECUTE on GetHashCode to [ApplicationPoolIdentity]

grant EXECUTE on GetMajorVersion to [ApplicationPoolIdentity]

grant EXECUTE on TempGetAppID to [ApplicationPoolIdentity]

grant EXECUTE on TempGetStateItem to [ApplicationPoolIdentity]

grant EXECUTE on TempGetStateItem2 to [ApplicationPoolIdentity]

grant EXECUTE on TempGetStateItem3 to [ApplicationPoolIdentity]

grant EXECUTE on TempGetStateItemExclusive to [ApplicationPoolIdentity]

grant EXECUTE on TempGetStateItemExclusive2 to [ApplicationPoolIdentity]

grant EXECUTE on TempGetStateItemExclusive3 to [ApplicationPoolIdentity]

grant EXECUTE on TempGetVersion to [ApplicationPoolIdentity]

grant EXECUTE on TempInsertStateItemLong to [ApplicationPoolIdentity]

grant EXECUTE on TempInsertStateItemShort to [ApplicationPoolIdentity]

grant EXECUTE on TempInsertUninitializedItem to [ApplicationPoolIdentity]

grant EXECUTE on TempReleaseStateItemExclusive to [ApplicationPoolIdentity]

grant EXECUTE on TempRemoveStateItem to [ApplicationPoolIdentity]

grant EXECUTE on TempResetTimeout to [ApplicationPoolIdentity]

grant EXECUTE on TempUpdateStateItemLong to [ApplicationPoolIdentity]

grant EXECUTE on TempUpdateStateItemLongNullShort to [ApplicationPoolIdentity]

grant EXECUTE on TempUpdateStateItemShort to [ApplicationPoolIdentity]

grant EXECUTE on TempUpdateStateItemShortNullLong to [ApplicationPoolIdentity]

go

 

<sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" stateNetworkTimeout="10" sqlConnectionString="data source=127.0.0.1;Integrated Security=SSPI" sqlCommandTimeout="30" customProvider="" cookieless="UseCookies" cookieName="ASP.NET_SessionId" timeout="20" allowCustomSqlDatabase="false" regenerateExpiredSessionId="true" partitionResolverType="" useHostingIdentity="true" > <providers> <clear /> </providers> </sessionState>

 

Saludos,

 

Ing. Eduardo Castro Martínez, PhD – Microsoft SQL Server MVP

http://mswindowscr.org

http://comunidadwindows.org

Costa Rica

Technorati Tags: SQL Server

LiveJournal Tags: SQL Server

del.icio.us Tags: SQL Server

http://ecastrom.blogspot.com

https://ecastrom.wordpress.com

http://ecastrom.spaces.live.com

http://universosql.blogspot.com

http://todosobresql.blogspot.com

http://todosobresqlserver.wordpress.com

http://mswindowscr.org/blogs/sql/default.aspx

http://citicr.org/blogs/noticias/default.aspx

http://sqlserverpedia.blogspot.com/

Note: Cross posted from Eduardo Castro.

Permalink

Si desea sincronizar su base de datos de SQL Server local con una base de datos en la nube de SQL Azure, puede empezar utilizando el SQL Data Sync, el cual le permite implementar una sincronización de datos bidreccional. Primero baje e instale el Microsoft Synch Framework 2.0 Software Development Kit (SDK) desde esta dirección

http://www.microsoft.com/downloads/details.aspx?FamilyID=89adbb1e-53ff-41b5-ba17-8e43a2e66254&displaylang=en

Después hay que bajar e instalar el SQL Data Sync CTP desde http://www.microsoft.com/downloads/details.aspx?FamilyID=bce4ad61-5b76-4101-8311-e928e7250b9a&displaylang=en

Una vez que haya instalado estos utilitarios podrá ejecutar el SQL Data Sync Wizard tal y como se muestra a continuación:

 

1. Primero necesita la dirección y contraseña de su servidor en SQL Azure, también necesita especificar el nombre de la base de datos en la cual usted desea replicar los datos, en este caso es AdventureWorks que está creada en SQL Azure. Si necesita información sobre el nombre del servidor puede acceder el portal de administración de Azure en esta dirección http://www.microsoft.com/windowsazure/sqlazure/ recuerde que debe configurar el firewall en el portal de SQL Azure para permitir el tráfico desde su servidor local hacia la nube.

image

2. Ahora debe especificar la información de la base de datos local

image

3. En el siguiente paso se debe especificar las tablas que van sincronizarse, además debe establecer la forma en que se van a administrar los conflictos.

image

4. El siguiente paso es especificar el orden en que se replican las tablas y finalmente se muestra la pantalla resumen:

image

5. Ahora puede dar click en Process para ejecutar la sincronización.

 

Saludos,

 

Ing. Eduardo Castro Martínez, PhD – Microsoft SQL Server MVP

http://mswindowscr.org

http://comunidadwindows.org

Costa Rica

Technorati Tags: SQL Server

LiveJournal Tags: SQL Server

del.icio.us Tags: SQL Server

http://ecastrom.blogspot.com

https://ecastrom.wordpress.com

http://ecastrom.spaces.live.com

http://universosql.blogspot.com

http://todosobresql.blogspot.com

http://todosobresqlserver.wordpress.com

http://mswindowscr.org/blogs/sql/default.aspx

http://citicr.org/blogs/noticias/default.aspx

http://sqlserverpedia.blogspot.com/

Note: Cross posted from Eduardo Castro.

Permalink

If you want to syncronize your local SQL Server Database with a Database in the SQL Azure Cloud, you can start using the SQL Data Sync that allows you to implement bi-directional data synchronization. First you need to download the Microsoft Synch Framework 2.0 Software Development Kit (SDK) from this address

http://www.microsoft.com/downloads/details.aspx?FamilyID=89adbb1e-53ff-41b5-ba17-8e43a2e66254&displaylang=en

Then you need to download the actual SQL Data Sync CTP from http://www.microsoft.com/downloads/details.aspx?FamilyID=bce4ad61-5b76-4101-8311-e928e7250b9a&displaylang=en

One you have installed both applications you will be able to run the SQL Data Sync Wizard as shown in the following steps:

 

1. First you need your SQL Azure server Address and Password, also you need to specify the name of the database that you want to replicate the data to, in this case is AdventureWorks that resides in SQL Azure. If you need you SQL Azure information you can access your account in the SQL Azure Portal in this address http://www.microsoft.com/windowsazure/sqlazure/ remenber that you need to configure the firewall in the SQL Azure Portal Page to allow the traffic beetween you local server and the cloud.

image

2. Next you need to specify you local database information

image

3. In the next step you will need to specify which tables will be syncronized, review the Conflict Resolution Policy, this allows you to specify how the the conflicts will be handled.

image

4. After that you can specify the order of the tables, and in the final step the summary will be shown:

image

5. Now you can click on Process to run the syncronization.

 

Regards,

 

Ing. Eduardo Castro Martínez, PhD – Microsoft SQL Server MVP

http://mswindowscr.org

http://comunidadwindows.org

Costa Rica

Technorati Tags: SQL Server

LiveJournal Tags: SQL Server

del.icio.us Tags: SQL Server

http://ecastrom.blogspot.com

https://ecastrom.wordpress.com

http://ecastrom.spaces.live.com

http://universosql.blogspot.com

http://todosobresql.blogspot.com

http://todosobresqlserver.wordpress.com

http://mswindowscr.org/blogs/sql/default.aspx

http://citicr.org/blogs/noticias/default.aspx

http://sqlserverpedia.blogspot.com/

Note: Cross posted from Eduardo Castro.

Permalink

Next Page »