<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Carlos Walzer : SQL Server</title><link>http://msmvps.com/blogs/cwalzer/archive/tags/SQL+Server/default.aspx</link><description>Tags: SQL Server</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Nuevas Características para Desarrolladores en SQL Server 2008</title><link>http://msmvps.com/blogs/cwalzer/archive/2008/04/01/nuevas-caracter-237-sticas-para-desarrolladores-en-sql-server-2008.aspx</link><pubDate>Tue, 01 Apr 2008 16:20:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1565953</guid><dc:creator>cwalzer</dc:creator><slash:comments>10</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/cwalzer/rsscomments.aspx?PostID=1565953</wfw:commentRss><comments>http://msmvps.com/blogs/cwalzer/archive/2008/04/01/nuevas-caracter-237-sticas-para-desarrolladores-en-sql-server-2008.aspx#comments</comments><description>&lt;h2 style="MARGIN:10pt 0in 0pt;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;Introducci&amp;oacute;n&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;Los desarrolladores no vivimos aislados del mundo de las bases de datos, y necesitamos de ellas para poder trabajar. Como siempre nos tiene acostumbrado Microsoft, cada nueva versi&amp;oacute;n del motor de base de datos, en este caso SQL Server 2008, viene con nuevas funcionalidades que potencian las aplicaciones y nos brindan un abanico m&amp;aacute;s grande a&amp;uacute;n de posibilidades de soluci&amp;oacute;n a los desaf&amp;iacute;os del desarrollo.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;En este art&amp;iacute;culo daremos una recorrida por los aspectos m&amp;aacute;s relevantes de las mejoras introducidas por SQL Server 2008 que los desarrolladores debemos conocer.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="MARGIN:10pt 0in 0pt;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;Tipo de Dato FileStream&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;A lo largo del tiempo, los desarrolladores hemos inventando variadas t&amp;eacute;cnicas, para almacenar datos no estructurados como ser mapas de bits (bitmaps), archivos de texto, archivos de audio, etc.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Algunas de ellas han sido, por ejemplo guardar en la base de datos la ruta donde el archivo se alojaba en el sistema de archivos (file system). Claro que esto trae problemas de seguridad, o de p&amp;eacute;rdidas de referencias por cambios en la ruta, o la necesidad de coordinar la transacci&amp;oacute;n entre los dos recursos con DTC.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;El tipo de dato FILESTREAM nos trae soluci&amp;oacute;n a aquellos problemas, permiti&amp;eacute;ndole a las aplicaciones utilizar las API de streaming con el mismo rendimiento que el sistema de archivos, y a su vez mantener una consistencia transaccional el mismo esquema de seguridad entre la informaci&amp;oacute;n estructurada y la no estructurada.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;La seguridad para los objetos almacenados en un campo del tipo FILESTREAM goza de los mismos privilegios que cualquier tipo de dato ya existente. Solo es necesario establecer los permisos a la tabla o la columna que lo contenga. Es decir, si el usuario tiene permisos de acceso a la columna correspondiente, podr&amp;aacute; abrir el archivo asociado a ella.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;El tipo de dato FILESTREAM es implementado como una columna varbinary(max), y totalmente integrado en el motor.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Lo cual permite utilizar todas las t&amp;eacute;cnicas de copias de respaldo y restauraci&amp;oacute;n para resguardar los datos.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;Antes que nada es necesario habilitar el uso de FILESTREAM en el motor:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;EXEC&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; sp&lt;span style="color:#c0504d;mso-themecolor:accent2;"&gt;_filestream_configure&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;@enable_level &lt;span style="color:#808080;"&gt;=&lt;/span&gt; 3&lt;span style="color:#808080;"&gt;,&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;@share_name &lt;span style="color:#808080;"&gt;=&lt;/span&gt; &amp;quot;RecursoCompartidoSQL&amp;quot;&lt;span style="color:#808080;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;br /&gt;&lt;span style="font-family:Calibri;"&gt;Donde &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;@enable_level &lt;span style="color:#808080;"&gt;=&lt;/span&gt; 3&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;, habilita el uso para T_SQL, acceso a sistema de archivos local y remoto; y &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;@share_name &lt;span style="color:#808080;"&gt;=&lt;/span&gt; &amp;quot;RecursoCompartidoSQL&amp;quot; &lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;es el nombre del recurso compartido en el sistema de archivos.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;br /&gt;He aqu&amp;iacute; un ejemplo de c&amp;oacute;mo crear una tabla con un campo FILESTEAM y la sintaxis para insertar datos:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#008000;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;br /&gt;--Crea un tabla que contiene infromaci&amp;oacute;n adicional como FILESTREAM&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;CREATE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="color:#0000ff;"&gt;TABLE&lt;/span&gt; dbo&lt;span style="color:#808080;"&gt;.&lt;/span&gt;Persona&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#808080;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;(&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ID &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;&lt;span style="color:#808080;"&gt;,&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;Nombre &lt;span style="color:#0000ff;"&gt;varchar&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;100&lt;span style="color:#808080;"&gt;),&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;InfoAdicional &lt;span style="color:#0000ff;"&gt;varbinary&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;max&lt;/span&gt;&lt;span style="color:#808080;"&gt;)&lt;/span&gt; FILESTREAM&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#808080;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;GO&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#008000;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;--Agrego el registro en la tabla&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Insert&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="color:#0000ff;"&gt;into&lt;/span&gt; dbo&lt;span style="color:#808080;"&gt;.&lt;/span&gt;Persona&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Values&lt;/span&gt;&lt;span style="font-size:10pt;color:#808080;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;(&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;1&lt;span style="color:#808080;"&gt;,&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#ff0000;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&amp;#39;Juan Perez&amp;#39;&lt;/span&gt;&lt;span style="font-size:10pt;color:#808080;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;,&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#ff00ff;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;Cast&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt; &lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&amp;#39;Aqui informaci&amp;oacute;n adicional&amp;#39;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;varbinary&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;max&lt;/span&gt;&lt;span style="color:#808080;"&gt;))&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#808080;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;Go&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;Es aconsejable utilizar el tipo de dato FILESTREAM cuando los objetos a almacenar son en promedio mayor a 1 Mb, y su acceso r&amp;aacute;pido de lectura es un punto a considerar.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Para objetos de tama&amp;ntilde;o menor, es recomendable seguir utilizando el tipo de dato varbinary(max), el cual provee un rendimiento menor en estos casos.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="MARGIN:10pt 0in 0pt;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;Inicializaci&amp;oacute;n en l&amp;iacute;nea y asignaci&amp;oacute;n compuesta de variables &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;Una peque&amp;ntilde;a mejora introduce SQL Server 2008 al lenguaje T-SQL respecto de la inicializaci&amp;oacute;n y asignaci&amp;oacute;n de variables.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Cu&amp;aacute;ntas veces hemos deseado escribir c&amp;oacute;digo de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;declare&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;@fecha &lt;span style="color:#0000ff;"&gt;datetime&lt;/span&gt; &lt;span style="color:#808080;"&gt;=&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;getdate&lt;/span&gt;&lt;span style="color:#808080;"&gt;(),&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;@edad &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; &lt;span style="color:#808080;"&gt;=&lt;/span&gt; 36&lt;span style="color:#808080;"&gt;,&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;@nombre &lt;span style="color:#0000ff;"&gt;varchar&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;100&lt;span style="color:#808080;"&gt;)&lt;/span&gt; &lt;span style="color:#808080;"&gt;=&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&amp;#39;carlos&amp;#39;&lt;/span&gt;&lt;span style="color:#808080;"&gt;;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#008000;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;-- Muestro los valores...&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;select&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt; @fecha&lt;span style="color:#808080;"&gt;,&lt;/span&gt; @edad&lt;span style="color:#808080;"&gt;,&lt;/span&gt; @nombre&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;br /&gt;&lt;span style="font-family:Calibri;"&gt;&lt;br /&gt;En versiones anteriores hubi&amp;eacute;semos obtenido el siguiente error de sintaxis:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#ff0000;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;br /&gt;Msg 139, Level 15, State 1, Line 0&lt;/span&gt;&lt;span style="font-size:8pt;color:#ff0000;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Cannot assign a default value to a local variable.&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;br /&gt;Ahora, en SQL Server 2008 es completamente v&amp;aacute;lido.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;Veamos esta sintaxis:&lt;br /&gt;&lt;br /&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#008000;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;-- Incremento i, agrego algo al nombre....&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;select&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; @edad &lt;span style="color:#808080;"&gt;+=&lt;/span&gt; 1&lt;span style="color:#808080;"&gt;,&lt;/span&gt; @nombre &lt;span style="color:#808080;"&gt;+=&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&amp;#39; walzer&amp;#39;&lt;/span&gt;&lt;span style="color:#808080;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#008000;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;-- Muestro los valores...&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#0000ff;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;select&lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt; @edad&lt;span style="color:#808080;"&gt;,&lt;/span&gt; @nombre&lt;span style="color:#808080;"&gt;;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;Estos operadores funcionan incluso con sentencias DML y columnas. Veamos la forma de incrementar en 100 la columna de una tabla:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;update&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt; tabla &lt;span style="color:#0000ff;"&gt;set&lt;/span&gt; comlumna &lt;span style="color:#808080;"&gt;+=&lt;/span&gt; 100&lt;span style="color:#808080;"&gt;;&lt;br style="mso-special-character:line-break;" /&gt;&lt;br style="mso-special-character:line-break;" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;o realizar la operaci&amp;oacute;n entre dos columnas:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#0000ff;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;update&lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt; tabla &lt;span style="color:#0000ff;"&gt;set&lt;/span&gt; columna1 &lt;span style="color:#808080;"&gt;+=&lt;/span&gt; columna2&lt;span style="color:#808080;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="MARGIN:10pt 0in 0pt;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;Comando Merge&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;Este comando se lo conoce informalmente como UPSERT ya que permite hacer inserciones o actualizaciones (UPDATE INSERT) de acuerdo a la existencia del registro.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;Este ejemplo insertar&amp;aacute; un registro en la tabla Destino si no tiene contraparte en la tabla Fuente, de existir se actualizar&amp;aacute; el correspondiente:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;MERGE&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="color:#0000ff;"&gt;INTO&lt;/span&gt; Destino D&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;USING&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; Fuente F &lt;span style="color:#0000ff;"&gt;ON&lt;/span&gt; F&lt;span style="color:#808080;"&gt;.&lt;/span&gt;Id &lt;span style="color:#808080;"&gt;=&lt;/span&gt; D&lt;span style="color:#808080;"&gt;.&lt;/span&gt;Id&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;WHEN&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="color:#0000ff;"&gt;MATCHED&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;THEN&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;UPDATE&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;SET&lt;/span&gt; D&lt;span style="color:#808080;"&gt;.&lt;/span&gt;Cantidad &lt;span style="color:#808080;"&gt;=&lt;/span&gt; F&lt;span style="color:#808080;"&gt;.&lt;/span&gt;cantidad&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;WHEN&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="color:#808080;"&gt;NOT&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;MATCHED&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;THEN&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;INSERT&lt;/span&gt; &lt;span style="color:#808080;"&gt;(&lt;/span&gt;Id&lt;span style="color:#808080;"&gt;,&lt;/span&gt; Cantidad&lt;span style="color:#808080;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;VALUES&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt; &lt;span style="color:#808080;"&gt;(&lt;/span&gt;F&lt;span style="color:#808080;"&gt;.&lt;/span&gt;Id&lt;span style="color:#808080;"&gt;,&lt;/span&gt; F&lt;span style="color:#808080;"&gt;.&lt;/span&gt;Cantidad&lt;span style="color:#808080;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#808080;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="MARGIN:10pt 0in 0pt;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;Nuevos tipos de datos DateTime&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;Antes de contarles los nuevos tipos de dato fecha que nos brinda SQL Server 2008, hagamos un repaso de los ya existentes. El tipo de dato fecha SMALLDATETIME almacena fecha y hora con una precisi&amp;oacute;n de 1 minuto, requiriendo 4 bytes.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;DATETIME es el m&amp;aacute;s usado y almacena fecha y hora en un rango entre 01-01-1753 a 9999-12-31, y necesita 8 bytes.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;Veamos ahora los nuevos tipos:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;TIME&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-ansi-language:ES;"&gt;: El tipo de dato TIME fue pensado para almacenar la hora del d&amp;iacute;a con gran precisi&amp;oacute;n, y no contiene informaci&amp;oacute;n de fecha.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;DATE&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-ansi-language:ES;"&gt;: Este es muy usado para almacenar fechas sin su hora correspondiente, en un rango de 0001-01-01 a 9999-12-31, consumiendo 3 bytes.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;DATETIME2&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-ansi-language:ES;"&gt;: Este tipo de dato fecha/hora fue concebido para almacenar valores con gran precisi&amp;oacute;n. Su capacidad es variable y se puede ajustar a la necesidad. DATETIME2 respeta el calendario gregoriano y entiende de los cambios de hora estacionales (daytime saving). Al momento de su definici&amp;oacute;n podemos especificar la fracci&amp;oacute;n de segundos que queremos almacenar:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;SELECT&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="color:#ff00ff;"&gt;CAST&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&amp;#39;2007-10-20 20:30:05.1234567&amp;#39;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;DATETIME2&lt;/span&gt;&lt;span style="color:#808080;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Resultado&lt;span style="color:#808080;"&gt;:&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;2007&lt;span style="color:#808080;"&gt;-&lt;/span&gt;10&lt;span style="color:#808080;"&gt;-&lt;/span&gt;20 20&lt;span style="color:#808080;"&gt;:&lt;/span&gt;30&lt;span style="color:#808080;"&gt;:&lt;/span&gt;05.1234567&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;SELECT&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="color:#ff00ff;"&gt;CAST&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&amp;#39;2007-10-20 20:30:05.1234567&amp;#39;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;DATETIME2&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;4&lt;span style="color:#808080;"&gt;))&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;Resultado&lt;span style="color:#808080;"&gt;:&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;2007&lt;span style="color:#808080;"&gt;-&lt;/span&gt;10&lt;span style="color:#808080;"&gt;-&lt;/span&gt;20 20&lt;span style="color:#808080;"&gt;:&lt;/span&gt;30&lt;span style="color:#808080;"&gt;:&lt;/span&gt;05.1235&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;DATETIMEOFFSET&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-ansi-language:ES;"&gt;: Es el tipo de dato fecha/hora m&amp;aacute;s completo de su familia. Podemos almacenar valores de fecha y hora con gran precisi&amp;oacute;n, junto a informaci&amp;oacute;n de husos horarios.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Es decir que podemos almacenar la fecha, y especificar el huso como: GMT -3:00 para Buenos Aires, o GMT +01:00 para Madrid. El rango de fechas va desde 0001-01-01 a 9999-12-31, el de horas de 00:00:00 a 23:59:59.9999999 y el desplazamiento horario de -14:00 a +14:00. Al igual que DATETIME2, la precisi&amp;oacute;n puede especificarse en su definici&amp;oacute;n:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;SELECT&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="color:#ff00ff;"&gt;CAST&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&amp;#39;2007-10-20 20:30:05.1234567 +5:0&amp;#39;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;DATETIMEOFFSET&lt;/span&gt;&lt;span style="color:#808080;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Resultado&lt;span style="color:#808080;"&gt;:&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;2007&lt;span style="color:#808080;"&gt;-&lt;/span&gt;10&lt;span style="color:#808080;"&gt;-&lt;/span&gt;20 20&lt;span style="color:#808080;"&gt;:&lt;/span&gt;30&lt;span style="color:#808080;"&gt;:&lt;/span&gt;05.1234567 &lt;span style="color:#808080;"&gt;+&lt;/span&gt;05&lt;span style="color:#808080;"&gt;:&lt;/span&gt;00&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;SELECT&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="color:#ff00ff;"&gt;CAST&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&amp;#39;2007-10-20 20:30:05.1234567 +5:0&amp;#39;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;DATETIMEOFFSET&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;3&lt;span style="color:#808080;"&gt;))&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;Resultado&lt;span style="color:#808080;"&gt;:&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;2007&lt;span style="color:#808080;"&gt;-&lt;/span&gt;10&lt;span style="color:#808080;"&gt;-&lt;/span&gt;20 20&lt;span style="color:#808080;"&gt;:&lt;/span&gt;30&lt;span style="color:#808080;"&gt;:&lt;/span&gt;05.123 &lt;span style="color:#808080;"&gt;+&lt;/span&gt;05&lt;span style="color:#808080;"&gt;:&lt;/span&gt;00&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="MARGIN:10pt 0in 0pt;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;Par&amp;aacute;metros del tipo Tabla&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;Existe un nuevo tipo de par&amp;aacute;metro en SQL Server 2008 del tipo Tabla, el cual puede ser declarado como tipo de una tabla previamente definida. Este par&amp;aacute;metro puede ser utilizado para enviar varias filas de informaci&amp;oacute;n a una sentencia T-SQL o rutina. Son similares a los vectores en OLE DB y ODBC pero con mayor flexibilidad.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;Los par&amp;aacute;metros del tipo tabla vienen a suplir la com&amp;uacute;nmente usada t&amp;eacute;cnica de creaci&amp;oacute;n de tablas temporales, agregando las siguientes ventajas:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;Son fuertemente tipificadas&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;Se puede especificar un ordenamiento y clave &amp;uacute;nica&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;Reduce las llamadas al servidor&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;Evita la re compilaci&amp;oacute;n de la sentencia&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;No necesita de un bloqueo desde el cliente para inicializar los valores de la tabla.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;Veamos un ejemplo de uso, del lado del servidor:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;create&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="color:#0000ff;"&gt;type&lt;/span&gt; dbo&lt;span style="color:#808080;"&gt;.&lt;/span&gt;miArray&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;as&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="color:#0000ff;"&gt;table&lt;/span&gt; &lt;span style="color:#808080;"&gt;(&lt;/span&gt; SalesOrderID &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;&lt;span style="color:#808080;"&gt;,&lt;/span&gt; ProductID &lt;span style="color:#0000ff;"&gt;int&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#808080;"&gt;,&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;primary&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;key&lt;/span&gt; &lt;span style="color:#808080;"&gt;(&lt;/span&gt;SalesOrderID&lt;span style="color:#808080;"&gt;,&lt;/span&gt; ProductID&lt;span style="color:#808080;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#808080;"&gt;)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;go&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;declare&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; @mi_variable &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; dbo&lt;span style="color:#808080;"&gt;.&lt;/span&gt;miArray&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;insert&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; @mi_variable &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;select&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="color:#0000ff;"&gt;top&lt;/span&gt; 10 sh&lt;span style="color:#808080;"&gt;.&lt;/span&gt;SalesOrderID&lt;span style="color:#808080;"&gt;,&lt;/span&gt; ProductID &lt;span style="color:#0000ff;"&gt;from&lt;/span&gt; SalesLT&lt;span style="color:#808080;"&gt;.&lt;/span&gt;SalesOrderHeader sh&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#808080;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;join&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; SalesLT&lt;span style="color:#808080;"&gt;.&lt;/span&gt;SalesOrderDetail sd &lt;span style="color:#0000ff;"&gt;on&lt;/span&gt; sh&lt;span style="color:#808080;"&gt;.&lt;/span&gt;SalesOrderID &lt;span style="color:#808080;"&gt;=&lt;/span&gt; sd&lt;span style="color:#808080;"&gt;.&lt;/span&gt;SalesOrderID&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;go&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;create&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="color:#0000ff;"&gt;proc&lt;/span&gt; dbo&lt;span style="color:#808080;"&gt;.&lt;/span&gt;ObtenerPedidos&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;@lista dbo&lt;span style="color:#808080;"&gt;.&lt;/span&gt;miArray readonly &lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;as&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;select&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="color:#808080;"&gt;*&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;from&lt;/span&gt; SalesLT&lt;span style="color:#808080;"&gt;.&lt;/span&gt;SalesOrderHeader sh&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#808080;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;join&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; SalesLT&lt;span style="color:#808080;"&gt;.&lt;/span&gt;SalesOrderDetail sd &lt;span style="color:#0000ff;"&gt;on&lt;/span&gt; sh&lt;span style="color:#808080;"&gt;.&lt;/span&gt;SalesOrderID &lt;span style="color:#808080;"&gt;=&lt;/span&gt; sd&lt;span style="color:#808080;"&gt;.&lt;/span&gt;SalesOrderID&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#808080;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;join&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; @lista l &lt;span style="color:#0000ff;"&gt;on&lt;/span&gt; sh&lt;span style="color:#808080;"&gt;.&lt;/span&gt;SalesOrderID &lt;span style="color:#808080;"&gt;=&lt;/span&gt; l&lt;span style="color:#808080;"&gt;.&lt;/span&gt;SalesOrderID&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#808080;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;and&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; sd&lt;span style="color:#808080;"&gt;.&lt;/span&gt;ProductID &lt;span style="color:#808080;"&gt;=&lt;/span&gt; l&lt;span style="color:#808080;"&gt;.&lt;/span&gt;ProductID&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;go&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;br /&gt;dbcc&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; dropcleanbuffers&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;dbcc&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; freeproccache&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;go&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;declare&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; @mi_variable &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; dbo&lt;span style="color:#808080;"&gt;.&lt;/span&gt;miArray&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;insert&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; @mi_variable&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;select&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; sh&lt;span style="color:#808080;"&gt;.&lt;/span&gt;Sale sOrderID&lt;span style="color:#808080;"&gt;,&lt;/span&gt; ProductID &lt;span style="color:#0000ff;"&gt;from&lt;/span&gt; SalesLT&lt;span style="color:#808080;"&gt;.&lt;/span&gt;SalesOrderHeader sh&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#808080;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;join&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; SalesLT&lt;span style="color:#808080;"&gt;.&lt;/span&gt;SalesOrderDetail sd &lt;span style="color:#0000ff;"&gt;on&lt;/span&gt; sh&lt;span style="color:#808080;"&gt;.&lt;/span&gt;SalesOrderID &lt;span style="color:#808080;"&gt;=&lt;/span&gt; sd&lt;span style="color:#808080;"&gt;.&lt;/span&gt;SalesOrderID&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;br /&gt;select&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt; &lt;span style="color:#808080;"&gt;*&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;from&lt;/span&gt; @mi_variable&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;exec&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt; dbo&lt;span style="color:#808080;"&gt;.&lt;/span&gt;ObtenerPedidos @mi_variable&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;go&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;br /&gt;El siguiente c&amp;oacute;digo Visual Basic.NET realiza la invocaci&amp;oacute;n al procedimiento almacenado definido anteriormente y muestra el resultado en una grilla.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Dim&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; conn &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;New&lt;/span&gt; SqlConnection(&lt;span style="color:#a31515;"&gt;&amp;quot;Application Name=Test;Server=.;Integrated Security=SSPI;Database=AdventureWorksLT;&amp;quot;&lt;/span&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Dim&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; cmd &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;New&lt;/span&gt; SqlCommand()&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;cmd.Connection = conn&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;cmd.CommandText = &lt;span style="color:#a31515;"&gt;&amp;quot;ObtenerPedidos&amp;quot;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;cmd.CommandType = CommandType.StoredProcedure&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;cmd.Connection.Open()&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#008000;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;br /&gt;&amp;#39;Defino el tipo de dato del par&amp;aacute;metro a pasar&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Dim&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; par &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;New&lt;/span&gt; SqlParameter&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;par.ParameterName = &lt;span style="color:#a31515;"&gt;&amp;quot;@lista&amp;quot;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;par.SqlDbType = SqlDbType.Structured&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#008000;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&amp;#39;Utilizo un ADO DataTable como estructura a pasar&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Dim&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; dt &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;New&lt;/span&gt; DataTable&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;dt.Columns.Add(&lt;span style="color:#a31515;"&gt;&amp;quot;SalesOrderID&amp;quot;&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;GetType&lt;/span&gt;(&lt;span style="color:#0000ff;"&gt;Integer&lt;/span&gt;))&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;dt.Columns.Add(&lt;span style="color:#a31515;"&gt;&amp;quot;ProductID&amp;quot;&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;GetType&lt;/span&gt;(&lt;span style="color:#0000ff;"&gt;Integer&lt;/span&gt;))&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;br /&gt;Dim&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; drow &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; DataRow = dt.NewRow&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;drow(0) = 71774&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;drow(1) = 822&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;dt.Rows.Add(drow)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;br /&gt;drow = dt.NewRow&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;drow(0) = 71774&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;drow(1) = 836&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;dt.Rows.Add(drow)&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;drow = dt.NewRow&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;drow(0) = 71776&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;drow(1) = 907&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;dt.Rows.Add(drow)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;drow = dt.NewRow&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;drow(0) = 71780&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;drow(1) = 743&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;dt.Rows.Add(drow)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#008000;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&amp;#39;Asigno le DataTable como valor del par&amp;aacute;metro&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;par.Value = dt&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#008000;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&amp;#39;Paso el DataTable como par&amp;aacute;metro en la invoaci&amp;oacute;n al procedimiento almacenado&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;cmd.Parameters.Add(par)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Dim&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; tResult &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;New&lt;/span&gt; DataTable&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;tResult.Load(cmd.ExecuteReader)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;DataGridView1.DataSource = tResult&lt;/span&gt;&lt;span style="font-size:8pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;cmd.Connection.Close()&lt;/span&gt;&lt;span style="FONT-SIZE:8pt;LINE-HEIGHT:115%;mso-ansi-language:ES;"&gt;&lt;/span&gt; &lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="MARGIN:10pt 0in 0pt;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;&lt;span style="mso-ansi-language:ES;mso-no-proof:yes;"&gt;Desarrollo Din&amp;aacute;mico&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;Existe un nuevo Lenguaje de Consultas Integrado LINQ (Language Integrated Query) en .NET Framework 3.5 el cual tiene soporte en SQL Server 2008. Adem&amp;aacute;s&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;hay un soporte m&amp;aacute;s eficiente para las entidades de datos de negocio (Business Data Entities) respecto de la sincronizaci&amp;oacute;n de los datos. Estos t&amp;oacute;picos m&amp;aacute;s algunas mejoras en ADO.NET y Visual Studio se han catalogado como Desarrollo Din&amp;aacute;mico.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 style="MARGIN:10pt 0in 0pt;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;Servicios de Entidades de Datos&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h3 style="MARGIN:10pt 0in 0pt;"&gt;&lt;span style="font-weight:normal;color:windowtext;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ansi-language:ES;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;"&gt;&lt;span style="font-size:small;"&gt;La Inclusi&amp;oacute;n de los Servicios de Entidades de Datos (Entity Data Services ) permiten ahora , con SQL Server 2008 y ADO.NET, poder crear objetos de negocio de alto nivel, por ejemplo Clientes o Facturas. Estas entidades se pueden utilizar y reemplazan el m&amp;eacute;todo est&amp;aacute;ndar de devolver filas y tablas. Si estas utilizando un modelado basado en relaci&amp;oacute;n entre entidades, los objetos en SQL Server ahora acompa&amp;ntilde;an tu modelo. Hay nuevas herramientas de ADO.NET que pueden tener acceso a estas entidades como ser el Lenguaje de Consultas Integrado LINQ to SQL.&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;Programar en un alto nivel de abstracci&amp;oacute;n es altamente productivo y nos permite sacar buen provecho del modelo de entidad-relaci&amp;oacute;n. ADO.NET nos permite entonces programar y percibir a la informaci&amp;oacute;n relacional como entidades de negocio.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 style="MARGIN:10pt 0in 0pt;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;LINQ&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;El Lenguaje de Consultas Integrado LINQ, nos permite realizar consultas a una fuente de datos utilizando lenguajes de programaci&amp;oacute;n manejados tales como Visual Basic.NET o C#, en lugar de usar sentencias SQL. Utilizaremos una sintaxis consistente para obtener datos de diversas fuentes de datos, incluyendo datos relacionales, entidades, XML, DataSets de ADO.NET, y colecciones de objetos en memoria. Esta nueva sintaxis embebida en un lenguaje de prop&amp;oacute;sito general adquiere todos sus beneficios: validaci&amp;oacute;n de tipos, revisi&amp;oacute;n de errores al momento de la codificaci&amp;oacute;n, etc.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;br /&gt;Ejemplo de ordenamiento de un vector por el tama&amp;ntilde;o de sus &amp;iacute;tems:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;public&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; OrdernarPalabras()&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;[] palabras = { &lt;span style="color:#a31515;"&gt;&amp;quot;naranja&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;manzana&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;uva&amp;quot;&lt;/span&gt; };&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; palabrasOrdenadas =&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;from&lt;/span&gt; p &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; palabras&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;orderby&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; p.Length&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;select&lt;/span&gt; p;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;Console.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;La lista ordenada por tama&amp;ntilde;o:&amp;quot;&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; p &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; palabrasOrdenadas) {&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Console.WriteLine(p);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:8pt;LINE-HEIGHT:115%;mso-ansi-language:ES;"&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;Ejemplo de agrupamiento de palabras por sus iniciales:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;public&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; AgrupamientoPalabras()&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;[] palabras = { &lt;span style="color:#a31515;"&gt;&amp;quot;naranja&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;manzana&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;n&amp;iacute;spero&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;mel&amp;oacute;n&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;mandarina&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;sand&amp;iacute;a&amp;quot;&lt;/span&gt; };&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; palabrasAgrupadas =&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;from&lt;/span&gt; p &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; palabras&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;group&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; p &lt;span style="color:#0000ff;"&gt;by&lt;/span&gt; p[0] &lt;span style="color:#0000ff;"&gt;into&lt;/span&gt; g&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;select&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; { FirstLetter = g.Key, Palabras = g };&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;foreach&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt; (&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; g &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; palabrasAgrupadas) {&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Console.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;Palabras que empiezan con la letra &amp;#39;{0}&amp;#39;:&amp;quot;&lt;/span&gt;, g.FirstLetter);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;foreach&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; (&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; p &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; g.Palabras) {&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Console.WriteLine(p);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;h3 style="MARGIN:10pt 0in 0pt;"&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;LINQ to SQL&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;LINQ to SQL es la implementaci&amp;oacute;n de un mapeador de objetos a modelo relacional ORM (object relational mapping), que est&amp;aacute; integrado al .NET Framework 3.5. Visual Studio 2008 provee un dise&amp;ntilde;ador gr&amp;aacute;fico que permite modelar y visualizar una base de datos como un modelo de objetos LINQ to SQL.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;img border="0" width="748" src="http://msmvps.com/blogs/cwalzer/Posts/NewSql2008/New2008001.jpg" height="580" alt="" /&gt;&lt;br /&gt;&lt;br /&gt;Cuando grabemos un dise&amp;ntilde;o realizado en esta herramienta, Visual Studio persistir&amp;aacute; las clases que representas las entidades de negocio y la base de datos relacional que hayamos modelado. Adem&amp;aacute;s veremos generado una clase que representa el contexto (DataContext). Esta clase es el nexo entre los objetos entidades del negocio y la base de datos, defiendo propiedades para las tablas de la base de datos y m&amp;eacute;todos para los procedimientos almacenados.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;Veamos algunos ejemplos de consumo de datos usando LINQ:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Dim&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; db &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;New&lt;/span&gt; NorthwindDataContext&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Dim&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; productos&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;= &lt;span style="color:#0000ff;"&gt;From&lt;/span&gt; p &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; db.Products _&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Where&lt;/span&gt; p.Category.CategoryName = &lt;span style="color:#a31515;"&gt;&amp;quot;Beverages&amp;quot;&lt;/span&gt; _&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt;Select&lt;/span&gt;&lt;span style="font-size:8pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:ES;mso-no-proof:yes;"&gt; p&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;br /&gt;Este c&amp;oacute;digo muestra c&amp;oacute;mo recuperar un producto de la base de datos, modificarlo y grabarlo.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Dim&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; db &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;New&lt;/span&gt; NorthwindDataContext&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;color:#0000ff;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Dim&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; producto = (&lt;span style="color:#0000ff;"&gt;From&lt;/span&gt; p &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; db.Products _&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Where&lt;/span&gt; p.ProductName = &lt;span style="color:#a31515;"&gt;&amp;quot;Toy 1&amp;quot;&lt;/span&gt; _&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Select&lt;/span&gt; p).Single&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;producto.UnitsOnOrder = 23&lt;br /&gt;producto.UnitsInStock = 20&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;db.SubmitChanges()&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="MARGIN:10pt 0in 0pt;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;Tama&amp;ntilde;o de los Tipos de Datos Definidos por el Usuario basados en CLR&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;Se ha aumentado la restricci&amp;oacute;n de l&amp;iacute;mite de 8000 bytes a 2 Gb para los tipos de datos definidos por el usuario y agregados basados en CLR (CLR UDT y CLR UDA).&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="MARGIN:10pt 0in 0pt;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;Seguimientos de Cambios&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;Para poder hacer un seguimiento de los cambios producidos sobre los datos almacenados en SQL Server, anteriormente deb&amp;iacute;amos agregar una columna datatime o timespan o alg&amp;uacute;n otro mecanismo que hayamos inventado a tal fin.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;El Seguimiento de Cambio de SQL Server&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;2008 (SQL Server Change Tracking) est&amp;aacute; basado en el componente Captura de Cambios de Datos CDC (Change Data Capture), el cual detecta los cambios producidos por insert, update y delete en los datos de forma asincr&amp;oacute;nica y expone estos datos de forma relacional. Estas tablas generadas por CDC contiene columnas que tiene la misma estructura de las columnas cuyas tablas son monitoreadas, conteniendo a su vez toda la metadata para entender cu&amp;aacute;l fue el cambio realizado.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="MARGIN:10pt 0in 0pt;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;HierarchyID&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;Todos conocemos las limitaciones y dificultados con las que nos topamos al momento de representar y almacenar estructura de datos del tipo jer&amp;aacute;rquicas: un sinn&amp;uacute;mero de joins y l&amp;oacute;gica compleja.&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;SQL Server 2008 nos da una soluci&amp;oacute;n a este problema donde podemos almacenar una estructura jer&amp;aacute;rquica en el tipo de dato HierarchyID.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Este tipo de dato es de longitud variable y se utiliza para localizar la posici&amp;oacute;n donde las relaciones se dan no solo jer&amp;aacute;rquicamente sino entre elementos del mismo nivel tambi&amp;eacute;n.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;He aqu&amp;iacute; una lista de los m&amp;eacute;todos disponibles en el motor de SQL Server 2008 que dan soporte a HiearchyID:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;"&gt;1.&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;GetAncestor&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-ansi-language:ES;"&gt;, recibe un entero que permite buscar el ancestro n de un nodo hijo.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;"&gt;2.&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;GetDescendant&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-ansi-language:ES;"&gt;, devuelve un nodo hijo que es descendiente de su padre.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;"&gt;3.&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;GetLevel&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-ansi-language:ES;"&gt; , indica el nivel del nodo corriente&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;"&gt;4.&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;GetRoot&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-ansi-language:ES;"&gt; , devuelve el nodo ra&amp;iacute;z del &amp;aacute;rbol jer&amp;aacute;rquico&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;"&gt;5.&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;IsDescendant&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-ansi-language:ES;"&gt;, devuelve verdadero o falso dependiendo de si el nodo es un descendiente de su padre&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;"&gt;6.&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;Parse&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-ansi-language:ES;"&gt;, convierte una representaci&amp;oacute;n de texto can&amp;oacute;nica en un HiearchyID&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;"&gt;7.&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;Read&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-ansi-language:ES;"&gt;, interpreta una representaci&amp;oacute;n binaria de un HiearchyID&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;"&gt;8.&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;Reparent&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-ansi-language:ES;"&gt;, permite asignar un nuevo padre a un nodo hijo&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;"&gt;9.&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;ToString&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-ansi-language:ES;"&gt;, devuelve una cadena de texto que representa un HierarchyID&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;"&gt;10.&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;Write&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-ansi-language:ES;"&gt;, escribe un HiearchyId en un binario&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="MARGIN:10pt 0in 0pt;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;Datos Espaciales&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;SQL Server 2008 da soporte para el almacenamiento y tratamiento de datos espaciales. Estos datos permiten almacenar informaci&amp;oacute;n de localizaci&amp;oacute;n.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;Los modelos espaciales representan puntos, l&amp;iacute;neas y &amp;aacute;reas sobre una superficie. Com&amp;uacute;nmente se lo utiliza para representar ubicaciones en el planeta tierra, lo cual son descriptos como Geom&amp;aacute;tica. Geom&amp;aacute;tica es el t&amp;eacute;rmino cient&amp;iacute;fico moderno que hace referencia a un conjunto de ciencias en las cuales se integran los medios para la captura, tratamiento, an&amp;aacute;lisis, interpretaci&amp;oacute;n, difusi&amp;oacute;n y almacenamiento de informaci&amp;oacute;n geogr&amp;aacute;fica. Tambi&amp;eacute;n llamada informaci&amp;oacute;n espacial o geoespacial.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 style="MARGIN:10pt 0in 0pt;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;Modelo Geod&amp;eacute;sico&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;La Geodesia es una rama de las Geociencias que trata el levantamiento y la representaci&amp;oacute;n de la forma y de la superficie de la tierra, global y parcial, con sus formas naturales y artificiales. Una representaci&amp;oacute;n precisa de la tierra es el globo terr&amp;aacute;queo, en donde las ubicaciones son manifestadas como latitudes y longitudes. A este modelo se lo conoce como modelo geod&amp;eacute;sico (Geodetic model) y es la forma m&amp;aacute;s precisa de representar los aspecto geogr&amp;aacute;ficos de la tierra, trabajando con una elipsoide y teniendo en cuenta la curvatura de la tierra al momento de calcular distancias.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&lt;img border="0" width="254" src="http://msmvps.com/blogs/cwalzer/Posts/NewSql2008/New2008002.png" height="240" alt="" /&gt;&lt;/p&gt;
&lt;h3 style="MARGIN:10pt 0in 0pt;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;Modelo plano&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;Hist&amp;oacute;ricamente ha sido mucho m&amp;aacute;s f&amp;aacute;cil trabajar con modelos bidimensionales, superficies o planos, por lo cual es com&amp;uacute;n encontrarse con informaci&amp;oacute;n que referencian posiciones geogr&amp;aacute;ficas en modelos planos. Para trabajar con informaci&amp;oacute;n geom&amp;aacute;tica en un modelo plano, hace falta hacer una proyecci&amp;oacute;n para aplanar los objetos geogr&amp;aacute;ficos del esferoide.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Existen varios modelos matem&amp;aacute;ticos que pueden proyectar el aspecto geogr&amp;aacute;fico de la tierra en un plano, los cuales resultan en una distorsi&amp;oacute;n de la forma y/o superficie y/o posici&amp;oacute;n de los mismos en el plano. Es por eso que los modelos planos son recomendables para porciones geogr&amp;aacute;ficas m&amp;aacute;s reducidas como pa&amp;iacute;ses, estados, ciudades, o terrenos y edificaciones.&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;/span&gt; &lt;br /&gt;&lt;img border="0" width="1" src="http://msmvps.com/blogs/cwalzer/Posts/NewSql2008/New2008003.png" height="1" alt="" /&gt;&lt;/p&gt;
&lt;h3 style="MARGIN:10pt 0in 0pt;"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#4f81bd;"&gt;&lt;span style="font-family:Cambria;"&gt;&lt;img border="0" width="335" src="http://msmvps.com/blogs/cwalzer/Posts/NewSql2008/New2008003.png" height="247" alt="" /&gt;&lt;br /&gt;&lt;br /&gt;Tipos de datos Espaciales&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;SQL Server 2008 provee el tipo de dato &lt;b style="mso-bidi-font-weight:normal;"&gt;geography&lt;/b&gt; para modelos geod&amp;eacute;sicos y el tipo de dato &lt;b style="mso-bidi-font-weight:normal;"&gt;geometry&lt;/b&gt; para modelos planos.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Ambos est&amp;aacute;n implementados como tipos del CLR y pueden ser utilizados para almacenar variados tipos de entidades geogr&amp;aacute;ficas como ser puntos, l&amp;iacute;neas y pol&amp;iacute;gonos. Ambos tipos de datos poseen m&amp;eacute;todos y atributos, que permiten realizar c&amp;aacute;lculos tales como distancias entre posiciones o encontrar si dos elementos geogr&amp;aacute;ficos se intersecan.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;El tipo de dato &lt;b style="mso-bidi-font-weight:normal;"&gt;geography&lt;/b&gt; almacena una estructura del tipo coordenadas de latitud y longitud. Un caso t&amp;iacute;pico de su uso puede ser el c&amp;aacute;lculo de las trayectorias de aerotransporte donde la curvatura de la tierra debe tomarse en cuenta.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-ansi-language:ES;"&gt;&lt;span style="font-family:Calibri;"&gt;El tipo de dato &lt;b style="mso-bidi-font-weight:normal;"&gt;geometry&lt;/b&gt; almacena una estructura de coordenadas en un modelo plano. Se lo utiliza usualmente en sistemas de mapas regionales o planos de planta donde la curvatura de la tierra es despreciable.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;script src="http://feeds.feedburner.com/~s/cWalzer?i=http://msmvps.com/blogs/cwalzer/archive/2008/04/01/nuevas-caracter-237-sticas-para-desarrolladores-en-sql-server-2008.aspx" type="text/javascript"&gt;&lt;/script&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1565953" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/SQL+Server/default.aspx">SQL Server</category></item><item><title>MSDN Radio en Vivo: Discusión: Técnicas y Herramientas para Mejorar el Rendimiento de Aplicaciones y Bases de Datos</title><link>http://msmvps.com/blogs/cwalzer/archive/2007/10/26/msdn-radio-en-vivo-discusi-243-n-t-233-cnicas-y-herramientas-para-mejorar-el-rendimiento-de-aplicaciones-y-bases-de-datos.aspx</link><pubDate>Fri, 26 Oct 2007 14:44:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1265488</guid><dc:creator>cwalzer</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/cwalzer/rsscomments.aspx?PostID=1265488</wfw:commentRss><comments>http://msmvps.com/blogs/cwalzer/archive/2007/10/26/msdn-radio-en-vivo-discusi-243-n-t-233-cnicas-y-herramientas-para-mejorar-el-rendimiento-de-aplicaciones-y-bases-de-datos.aspx#comments</comments><description>&lt;p&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ansi-language:ES;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;Durante el &amp;uacute;ltimo mes los expertos de Solid Quality Mentors han estado discutiendo t&amp;eacute;cnicas para medir y mejorar el rendimiento de las aplicaciones. Durante este show de MSDN Radio &amp;uacute;nase a una discusi&amp;oacute;n en vivo sobre c&amp;oacute;mo optimizar sus aplicaciones, herramientas para medir el rendimiento, mejores t&amp;eacute;cnicas de acceso a datos, tips de optimizaci&amp;oacute;n de c&amp;oacute;digo en SQL Server y c&amp;oacute;mo mejorar el rendimiento de OLAP y Analysis Server.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Te esperamos para que puedas evacuar tus dudas y debatir acerca de como mejorar el rendimiento de tus aplicaciones .NET y bases de datos.&lt;br /&gt;&lt;a target="_blank" href="http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032357579&amp;amp;EventCategory=4&amp;amp;culture=es-AR&amp;amp;CountryCode=AR"&gt;&lt;strong&gt;http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032357579&amp;amp;EventCategory=4&amp;amp;culture=es-AR&amp;amp;CountryCode=AR&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Aprovecho la oportunidad para invitarlos a que vean el WebCast de Gustavo Larriera sobre el tema:&lt;br /&gt;&lt;a target="_blank" href="http://blogs.solidq.com/ES/glarriera/Lists/Posts/Post.aspx?ID=51"&gt;&lt;strong&gt;T&amp;eacute;cnicas de ajuste de rendimiento en SQL Server 2005&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
&lt;script src="http://feeds.feedburner.com/~s/cWalzer?i=http://msmvps.com/blogs/cwalzer/archive/2007/10/26/msdn-radio-en-vivo-discusi-243-n-t-233-cnicas-y-herramientas-para-mejorar-el-rendimiento-de-aplicaciones-y-bases-de-datos.aspx" type="text/javascript"&gt;&lt;/script&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1265488" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Performance/default.aspx">Performance</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/ADO.NET/default.aspx">ADO.NET</category></item><item><title>Capacitación en Línea Gratuita</title><link>http://msmvps.com/blogs/cwalzer/archive/2007/10/19/capacitaci-243-n-en-l-237-nea-gratuita.aspx</link><pubDate>Fri, 19 Oct 2007 20:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1251549</guid><dc:creator>cwalzer</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/cwalzer/rsscomments.aspx?PostID=1251549</wfw:commentRss><comments>http://msmvps.com/blogs/cwalzer/archive/2007/10/19/capacitaci-243-n-en-l-237-nea-gratuita.aspx#comments</comments><description>&lt;p&gt;En Solid Quality Learning estamos probando&amp;nbsp;una nueva modalidad de cursos en línea, utilizando LiveMeeting 2007, de la misma forma que lo hace Microsoft con sus Webcasts.&lt;/p&gt;
&lt;p&gt;Para poder probar la experiencia, hemos abierto 5 entrenamientos gratuitos de 4 horas de duracion (2 sesiones de 2 horas cada uno).&lt;/p&gt;
&lt;p&gt;Los temas a escoger son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;Mejoras de desempeño de aplicaciones (dictado por Carlos Walzer,&amp;nbsp;el 21 de noviembre)&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Opciones para la Administración de Transacciones en .NET Framework y SQL Server (dictado por Adolfo Wiernik el 3 de diciembre)&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Bodegas de Datos (Data Warehouse) e Inteligencia de Negocios para DBAs (dictado por Javier Loria&amp;nbsp;el 4 y 6 de diciembre)&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Guía Práctica de Optimización de Código de Acceso a Datos en .NET Framework (dictado por Adolfo Wiernik el 6 de diciembre)&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Hemos habilitado solamente 20 cupos por curso por ahora.&lt;/p&gt;
&lt;p&gt;Para inscribirse: &lt;a href="http://learning.solidq.com/la/"&gt;http://learning.solidq.com/la/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1251549" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Capacitacion/default.aspx">Capacitacion</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Performance/default.aspx">Performance</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/ADO.NET/default.aspx">ADO.NET</category></item><item><title>Solid Quality Summit 2007 Chile/Argentina/Brasil</title><link>http://msmvps.com/blogs/cwalzer/archive/2007/10/16/solid-quality-summit-2007-chile-argentina-brasil.aspx</link><pubDate>Tue, 16 Oct 2007 18:40:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1248108</guid><dc:creator>cwalzer</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/cwalzer/rsscomments.aspx?PostID=1248108</wfw:commentRss><comments>http://msmvps.com/blogs/cwalzer/archive/2007/10/16/solid-quality-summit-2007-chile-argentina-brasil.aspx#comments</comments><description>&lt;p&gt;&lt;span id="ctl00_ContentPlaceHolder1_FormView1_descrLabel"&gt;Se está llevando a cabo durante el año 2007 una gira por 9 países visitando 10 ciudades. Es una oportunidad única donde usted podrá escuchar y aprender de los mejores exponentes en Microsoft® SQL Server™ 2005. Contenidos: - Almacenando datos no estructurados o semi-estructurados - Reportes a la carta con el Report Builder - Optimización y Afinamiento de servidores SQL Server - OLAP sin Datawarehouse en SQL Server 2005 Inscríbete ya aqui: &lt;a href="http://learning.solidq.com/la/CourseDetail.aspx?CourseScheduleId=208"&gt;http://learning.solidq.com/la/CourseDetail.aspx?CourseScheduleId=208&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1248108" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Capacitacion/default.aspx">Capacitacion</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://msmvps.com/blogs/cwalzer/archive/tags/Performance/default.aspx">Performance</category></item></channel></rss>