To do physical SQL Server Machine to virtual convertion you can use System Center, but if you don’t have it and you only want to a raw disk convertion you can use the Disk2VHD Tool from SysInternals, the VHD disk that this tool creates can be used as a VM for either Microsoft Virtual PC or Hyper-V. You can download the tool from http://technet.microsoft.com/en-nz/sysinternals/ee656415%28en-us%29.aspx
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
http://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 need to access some Active Directory information from SQL Server you can use the openquery command with the ADSI provider, below is an example for doing that
select *
from openquery(adsi, '
select displayName
from ''LDAP://dc=comunidadwindows,dc=org''
where objectCategory = ''Person''
and
objectClass = ''user''
and sAMAccountName = ''useraccountname''
')
You also must consider the segurity required inside Active Directory to allow the SQL Server Service account access to the corresponding OU, you can do it with Active Directory Users and Computers with Advance Features Enable and choosing the Security menu as show in the following figure:
You must give read access to the SQL Server Service Account.
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
http://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 es SQL SQL Server en la nube, para aquellos que inician con SQL Azure estas son las respuestas a las FAQ más comunes:
- El tamaño máximo de las bases de datos es 1GB o 10GB, dependiendo de su suscripción, si necesita almacenar más datos deberá crear Shards http://en.wikipedia.org/wiki/Shard_%28database_architecture%29
- Se pueden crear todas las bases de datos que desee, pero no necesariamente estarán en el mismo servidor, esto debido al modelo de balance de carga de SQL Azure
- No se pueden hacer consultas entre base de datos ni entre servidores
- No hay Transparent Data Encryption
- Soporta un subconjunto muy completo de T-SQL pero no todos, http://blogs.msdn.com/ssds/archive/2009/07/07/9823115.aspx
- Soporta un subconjunto de SQL Types pero no todos, http://blogs.msdn.com/ssds/archive/2009/07/07/9823115.aspx
For those who are starting with SQL Azure, these are the answers to most common FAQ:
Database maximum size is 1GB or 10GB based on your price plan, if you need to handle larger databases you must use Shards http://en.wikipedia.org/wiki/Shard_%28database_architecture%29
Unlimited number of databases, but they may not be on the same server, this is because the SQL Azure Balancing Mode Currently you cannot do cross-database querying There is no TDE in SQL Azure It supports a subset of SQL Server’s T-SQL commands, more detail in http://blogs.msdn.com/ssds/archive/2009/07/07/9823115.aspx It supports a subset of SQL Server’s datatypes, more detail in http://blogs.msdn.com/ssds/archive/2009/07/07/9823115.aspx
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
http://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/
En el siguiente webcast Ajuste (tuning) del rendimiento de SQL Server 2008 http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032438450&Culture=es-AR analizamos las herramientas de desempeño de SQL Server 2008 y cómo utilizarlas.
La presentación pueden descargarla de la siguiente dirección http://cid-bf30da8b3fc2e667.skydrive.live.com/self.aspx/Comunidad%20Windows%20Costa%20Rica/WebCast/SQL2008Performance.pdf
Los scripts utilizados en la presentación son los siguientes:
-- memory
SELECT type, SUM(single_pages_kb)
FROM sys.dm_os_memory_clerks
GROUP BY type
ORDER BY SUM(single_pages_kb) DESC
SELECT type, SUM(multi_pages_kb)
FROM sys.dm_os_memory_clerks
WHERE multi_pages_kb != 0
GROUP BY type
ORDER BY SUM(multi_pages_kb) DESC
--querys
select text, query_plan, requested_memory_kb, granted_memory_kb, used_memory_kb from sys.dm_exec_query_memory_grants MG
CROSS APPLY sys.dm_exec_sql_text(sql_handle) t
CROSS APPLY sys.dm_exec_query_plan
(MG.plan_handle)
--buffer pool usage by database
select db_name(database_id) as dbName,
count(*)*8/1024 as BufferPoolMB
from sys.dm_os_buffer_descriptors
group by db_name(database_id)
order by 2 desc
--IO
select session_id, wait_duration_ms,
resource_description
from sys.dm_os_waiting_tasks
where wait_type like 'PAGE%LATCH_%'
and resource_description like '2:%'
--PAGE I/O* Waits
(select * from sys.dm_os_wait_stats
where wait_type like '%PAGEIO%')
--Virtual File Stats
(select * from
sys.dm_io_virtual_file_stats(-1, -1))
select * from sys.dm_exec_sessions
select * from sys. dm_io_pending_io_requests
select * from sys.dm_os_ring_buffers
select * from sys.dm_os_sys_info
select * from sys.dm_os_wait_stats
--CPU
select * from sys.dm_os_ring_buffers
where
ring_buffer_type='RING_BUFFER_RESOURCE_MONITOR'
select * from sys.dm_os_ring_buffers
where
ring_buffer_type='RING_BUFFER_SINGLE_PAGE_ALLOCATOR'
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
http://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/
Para aquellos que deben decidir cuál es el tipo de licenciamiento que tienen que utilizar para SQL Server, la mejor forma de elegir la versión adecuada es comparando las capacidades de cada una de estas versiones, en la siguiente tabla se presenta una comparación reducida de las dos principales versiones de SQL Server:
El detalle completo de la comparación de capacidades puede ser encontrada en el siguiente documento http://download.microsoft.com/download/2/D/F/2DF66C0C-FFF2-4F2E-B739-BF4581CEE533/SQLServer2008EnterpriseandStandardFeature%20Compare.pdf
Sin embargo, si la aplicación necesita alta disponibilidad, manejo de grandes cantidades de recursos tales como memory y gran cantidad de procesadores, entonces deben elegir la versión Enterprise y si van a ejecutar SQL Server sobre máquinas con con cientos de procesadores y más de 64GB en ram deben empezar a considerar SQL Server 2008 R2 Data Center Edition, el cual posee las siguiente características:
- Soporte de hasta 256 procesadores lógicos
- Administración central de más de 25 instancias de SQL Server
- Soporte de hasta 2 TB de memoria cuando se ejcuta sobre Windows Server 2008 R2 Datacenter
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
http://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/
Cuando se tiene una aplicación legada que no soporta esquemas, se pueden utilizar los sinónimos, el siguiente código muestra cómo crear un sinónimo en la base de datos de AdventureWorks.
CREATE SYNONYM Product
FOR Production.Product
SELECT
ProductID,
Name,
ProductNumber
FROM
Product
drop synonym product
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
http://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.
Debido a que la aplicación de Sharding tiene ventajas y desventajas es necesario seguir algunos principios:
- No todas las tablas deben ser consideradas para Sharding, antes de implementar una estrategia de Sharding es necesario elegir cuales son las tablas candidatas para particionamiento físico. Estas tablas candidatas son aquellas que crecen mucho en nuestro sistema y que posible dividir en varias bases de datos sin poner mucho estres u overhead en la capa de acceso a datos
- En algunas ocasiones es mejor utilizar Windows Azure Storage que SQL Storage, por ejemplo, las imágenes y videos es mejor utilizarlas en Windows Azure Storage
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
http://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
Les comento que estamos trabajando un proyecto que integra las siguientes tecnologías:
SQL Azure
Windows Azure
Silverlight
MVC 2.0
Visual Studio 2010
Pronto estaremos posteando código ejemplo para que puedan ver el potencial de toda esta tecnología.
Saludos,
Eduardo Castro Martinez
Gracias el Equipo de Microsoft MSDN y TechNet de Latino América por permitirme participar como Speaker en los Webcasts para la audiencia de ITPro´s de Latinoamerica. Es para mi un honor poder estar dentro de los Top 10 Oradores del 2009!!!



More Posts
Next page »