<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>monicarivera</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/monicarivera/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/monicarivera/feed.xml</link>
    <description />
    <lastBuildDate>Wed, 17 Apr 2019 03:23:58 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>El poder de T-SQL (es-ES)</title>
      <link>https://docs.microsoft.com/archive/blogs/monicarivera/el-poder-de-t-sql-es-es</link>
      <pubDate>Fri, 30 Nov 2012 23:20:00 GMT</pubDate>
      <dc:creator><![CDATA[Monica Rivera]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/monicarivera/2012/11/30/el-poder-de-t-sql-es-es/</guid>
      <description><![CDATA[Samuel Lester, un senior tester en el equipo de SQL Server est&aacute; escribiendo una serie de...]]></description>
      <content:encoded><![CDATA[<p><span class="hps">Samuel</span> <span class="hps">Lester</span><span>, un senior tester </span><span class="hps">en el</span> <span class="hps">equipo de</span> <span class="hps">SQL Server est&aacute;</span> <span class="hps">escribiendo</span> <span class="hps">una</span> <span class="hps">serie de blogs</span> <span class="hps">acerca de c&oacute;mo</span> <span class="hps">solucionar</span> problemas <span class="hps">comunes</span> <span class="hps">de T-SQL</span>&nbsp;<span class="hps">de diferentes maneras. Para&nbsp;</span><span class="hps">tal efecto</span><span>, cada entrada</span> <span class="hps">en la serie</span> <span class="hps">propone</span> <span class="hps">un problema y luego</span> <span class="hps">presenta</span> <span class="hps">algunos enfoques</span> <span class="hps">diferentes</span> <span class="hps">proporcionados por diversos contribuyentes</span><span>.</span><br /> <br /><span class="hps">Hay</span> <span class="hps">muchas maneras de abordar</span> <span class="hps">un problema y la</span> <span class="hps">decisi&oacute;n de</span> <span class="hps">elegir una soluci&oacute;n</span> <span class="hps">sobre otra</span> <span class="hps">probablemente</span> <span class="hps">depender&aacute; de lo que</span> es&nbsp;<span class="hps">m&aacute;s importante</span> <span class="hps">para cada&nbsp;caso</span> <span class="hps">particular.</span> <span class="hps">&iquest;Est&aacute; sbuscando&nbsp;</span><span class="hps">optimizar&nbsp;rendimiento,</span> <span class="hps">una soluci&oacute;n elegante</span> <span class="hps">o</span> <span class="hps">tal vez</span> <span class="hps">todo lo que necesita</span> <span class="hps">es una manera r&aacute;pida</span>&nbsp;de&nbsp;<span class="hps">resolver un</span> <span class="hps">problema que no</span> <span class="hps">va a</span> <span class="hps">ver mucho m&aacute;s</span> <span class="hps">de nuevo?</span><br /> <br /><span class="hps">La publicaci&oacute;n </span><span class="hps">de &eacute;sta semana</span> <span class="hps">resuelve</span> <span class="hps">la cuesti&oacute;n</span>&nbsp;<span class="hps">frecuente&nbsp;en los foros&nbsp;de</span> <span class="hps">c&oacute;mo&nbsp;calcular</span> <span class="hps">la edad</span> <span class="hps">de una persona</span> <span class="hps">en funci&oacute;n de su</span> <span class="hps">fecha de nacimiento.</span> <span class="hps">Escrib&iacute; una</span> <span class="hps">soluci&oacute;n r&aacute;pida,</span> <span class="hps">y los animo</span> <span class="hps">a</span> <span class="hps">ver las respuestas</span> <span class="hps">propuestas.</span> De hecho, u<span class="hps">na</span> <span class="hps">serie</span> <span class="hps">interesante:</span></p>
<p><span class="hps"><a href="https://blogs.msdn.com/b/samlester/archive/2012/11/30/tsql-solve-it-your-way-finding-an-employee-s-current-age-based-on-birth-date.aspx">https://blogs.msdn.com/b/samlester/archive/2012/11/30/tsql-solve-it-your-way-finding-an-employee-s-current-age-based-on-birth-date.aspx</a></span></p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>The power of T-SQL</title>
      <link>https://docs.microsoft.com/archive/blogs/monicarivera/the-power-of-t-sql</link>
      <pubDate>Fri, 30 Nov 2012 23:11:00 GMT</pubDate>
      <dc:creator><![CDATA[Monica Rivera]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/monicarivera/2012/11/30/the-power-of-t-sql/</guid>
      <description><![CDATA[Samuel Lester, a senior tester in the SQL Server team is writting a blog series about how to solve...]]></description>
      <content:encoded><![CDATA[<p>Samuel Lester, a senior tester in the SQL Server team is writting a blog series about how to solve common T-SQL problems in different ways. To that end, each entry in the series proposes a problem and then presents a few different approaches provided by different contributors.</p>
<p>There are many ways to approach a problem and the decision to pick a solution over another will probably depend on what you value most for a particular case. Are you looking to optimize performance, an elegant solution or perhaps all you need is a quick and dirty way to solve a problem that you won't see much more again?</p>
<p>This week's entry solves the frequent forum question of how to calculate a person's age based on&nbsp;their date of birth. I wrote a quick solution, and I encourage you to see the proposed answers. An interesting&nbsp;series indeed:</p>
<p><a href="https://blogs.msdn.com/b/samlester/archive/2012/11/30/tsql-solve-it-your-way-finding-an-employee-s-current-age-based-on-birth-date.aspx">https://blogs.msdn.com/b/samlester/archive/2012/11/30/tsql-solve-it-your-way-finding-an-employee-s-current-age-based-on-birth-date.aspx</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Trabajo del Agente SQL Server devuelve un estado de fallo después de ejecución exitosa (es-ES)</title>
      <link>https://docs.microsoft.com/archive/blogs/monicarivera/trabajo-del-agente-sql-server-devuelve-un-estado-de-fallo-despus-de-ejecucin-exitosa-es-es</link>
      <pubDate>Thu, 11 Oct 2012 10:17:00 GMT</pubDate>
      <dc:creator><![CDATA[Monica Rivera]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/monicarivera/2012/10/11/trabajo-del-agente-sql-server-devuelve-un-estado-de-fallo-despus-de-ejecucin-exitosa-es-es/</guid>
      <description><![CDATA[He visto varias veces esta pregunta en los foros. El trabajo est&aacute; programado para copiar...]]></description>
      <content:encoded><![CDATA[<p><span lang="es">He visto varias veces esta pregunta en los foros. </span><span lang="es">El trabajo est&aacute; programado para copiar algunos archivos a trav&eacute;s de la red, los archivos se copian pero el estado final del trabajo muestra Error.</span></p>
<p><span lang="es">La raz&oacute;n de la condici&oacute;n de falla es que el Agente SQL Server utiliza el c&oacute;digo de salida devuelto por el programa haciendo la copia para determinar si el paso del trabajo fu&eacute; ejecutado con &eacute;xito y el valor predeterminado es 0 (cero) para el &eacute;xito. </span><span lang="es">Puedes ver este valor por defecto (y cambiarlo) abriendo las propiedades del trabajo en SSMS y seleccionando Editar en el paso del trabajo correspondiente. </span><span lang="es">El tipo de trabajo debe ser &laquo;Sistema operativo (CmdExec)&raquo; y justo antes de la ventana de comandos, podr&aacute;s&nbsp; verlo: C&oacute;digo de salida de proceso de un comando correcto: 0</span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/54/89/8875.JobStep.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-54-89/8875.JobStep.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/54/89/8875.JobStep.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-54-89/8875.JobStep.png" alt="" border="0" /></a></p>
<p lang="es">Si el programa utilizado devuelve algo distinto a 0 en caso de &eacute;xito, deber&aacute;s cambiar ese valor para reflejar correctamente cual es el estado del paso del trabajo despu&eacute;s de la ejecuci&oacute;n.</p>
<p><span lang="es">Cuando he visto &eacute;sta pregunta en los foros, en todos los casos el usuario estaba utilizando Robocopy para copiar los archivos. </span><span lang="es">Robocopy devuelve 0 s&oacute;lo cuando no hay archivos copiados. </span><span lang="es">Si se copiaron los archivos, el valor devuelto es 1.</span></p>
<p><span lang="es"><br /></span></p>]]></content:encoded>
    </item>
    <item>
      <title>SQL Server Agent job returns a failure status after success execution</title>
      <link>https://docs.microsoft.com/archive/blogs/monicarivera/sql-server-agent-job-returns-a-failure-status-after-success-execution</link>
      <pubDate>Thu, 11 Oct 2012 10:04:00 GMT</pubDate>
      <dc:creator><![CDATA[Monica Rivera]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/monicarivera/2012/10/11/sql-server-agent-job-returns-a-failure-status-after-success-execution/</guid>
      <description><![CDATA[I have seen this question in forums repeatedly. The job is set to copy some files over the network,...]]></description>
      <content:encoded><![CDATA[<p>I have seen this question in forums repeatedly. The job is set to copy some files over the network, the files get copied but the job status shows a failure.</p>
<p>The reason of the failure status is that SQL Server Agent uses the exit code returned by the program to determine if the job step executed successfully and the default value is 0 (zero) for success. You can see this default value (and change it) by opening the job Properties from SSMS and selecting Edit in the corresponding job step. The job type should be "Operating System (CmdExec)" and right before the Command window, you should see it: Process exit code of a successful command: 0</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/54/89/1007.JobStep.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-54-89/1007.JobStep.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/54/89/1007.JobStep.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-54-89/1007.JobStep.png" alt="" border="0" /></a></p>
<p></p>
<p>If the program you are using returns anything other than 0 on success, you should change that value to reflect correctly what the status of the job step is after execution.</p>
<p>When I've seen related questions in the forums, in every case the user was using Robocopy to copy the files. Now, Robocopy returns 0 only when no files were copied. If files were copied, the return value is 1.</p>]]></content:encoded>
    </item>
    <item>
      <title>Cómo empezar en TechNet Wiki en Español (es-ES)</title>
      <link>https://docs.microsoft.com/archive/blogs/monicarivera/cmo-empezar-en-technet-wiki-en-espaol-es-es</link>
      <pubDate>Thu, 04 Oct 2012 20:56:00 GMT</pubDate>
      <dc:creator><![CDATA[Monica Rivera]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/monicarivera/2012/10/04/cmo-empezar-en-technet-wiki-en-espaol-es-es/</guid>
      <description><![CDATA[TechNet Wiki es un lugar grande y est&aacute; creciendo todos los d&iacute;as. Es un sitio para la...]]></description>
      <content:encoded><![CDATA[<p>TechNet Wiki es un lugar grande y est&aacute; creciendo todos los d&iacute;as. Es un sitio para la comunidad que necesita de la participaci&oacute;n de los usuarios para mantenerse vigente. Y aunque las contribuciones son bienvenidas, hay ciertas reglas que es importante seguir para asegurar una operaci&oacute;n exitosa y armoniosa.</p>
<p>Para empezar puedes encontrar informaci&oacute;n b&aacute;sica en la siguiente p&aacute;gina: <a href="https://social.technet.microsoft.com/wiki/contents/articles/8807.wiki-introduccion-es-es.aspx">Wiki: Introducci&oacute;n (es-ES)</a></p>
<p>Para buscar informaci&oacute;n, la forma m&aacute;s directa es usando el buscador al principio de la p&aacute;gina. Los art&iacute;culos est&aacute;n etiquetados con palabras y frases que facilitan su localizaci&oacute;n.</p>
<p>Otra forma es navegando a partir del directorio de tecnolog&iacute;as que puedes encontrar aqu&iacute;: <a href="https://social.technet.microsoft.com/wiki/contents/articles/13833.wiki-portal-de-tecnologias-es-es.aspx">Wiki: Portal de tecnolog&iacute;as (es-ES)</a></p>
<p>Para empezar a contribuir, puedes encontrar informaci&oacute;n de c&oacute;mo empezar en la siguiente p&aacute;gina de TechNet Wiki: <a title="Wiki: &iquest;C&oacute;mo contribuir al contenido de TechNet Wiki? (es-ES)" href="https://social.technet.microsoft.com/wiki/contents/articles/8834.wiki-como-contribuir-al-contenido-de-technet-wiki-es-es.aspx">Wiki: &iquest;C&oacute;mo contribuir al contenido de TechNet Wiki? (es-ES)</a></p>
<p>Los enlaces que incluyo est&aacute;n todos en espa&ntilde;ol, pero es posible que muchos de los enlaces inclu&iacute;dos en esas p&aacute;ginas te lleven a p&aacute;ginas en ingl&eacute;s. Estamos trabajando en traducir todas esas p&aacute;ginas a espa&ntilde;ol pero el volumen es grande. Si deseas contribuir, env&iacute;ame un mensaje.</p>]]></content:encoded>
    </item>
    <item>
      <title>SQL Server en TechNet Wiki en Español (es-ES)</title>
      <link>https://docs.microsoft.com/archive/blogs/monicarivera/sql-server-en-technet-wiki-en-espaol-es-es</link>
      <pubDate>Wed, 03 Oct 2012 20:52:00 GMT</pubDate>
      <dc:creator><![CDATA[Monica Rivera]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/monicarivera/2012/10/03/sql-server-en-technet-wiki-en-espaol-es-es/</guid>
      <description><![CDATA[TechNet Wiki es un excelente repositorio de informaci&oacute;n. Una de las ventajas del uso de un...]]></description>
      <content:encoded><![CDATA[<p>TechNet Wiki es un excelente repositorio de informaci&oacute;n. Una de las ventajas del uso de un Wiki es el ambiente de colaboraci&oacute;n en el que comunidades tienen acceso a crear contenido, editarlo y mejorarlo. El contenido en espa&ntilde;ol en TechNet Wiki est&aacute; en sus etapas iniciales, pero ya hay muchos art&iacute;culos. Los art&iacute;culos en espa&ntilde;ol est&aacute;n marcado con&nbsp;la etiqueta&nbsp;(es-ES), as&iacute; que si creas contenido, es importante que lo marques de la misma forma.</p>
<p>Aqu&iacute; hay unos art&iacute;culos recientemente traducidos acerca de t&oacute;picos alrededor de SQL Server:</p>
<p>&nbsp;</p>
<p><a href="https://social.technet.microsoft.com/wiki/contents/articles/13190.introduccion-al-desarrollo-con-sql-server-es-es.aspx">Introducci&oacute;n al desarrollo con SQL Server (es-ES)</a></p>
<p><a href="https://social.technet.microsoft.com/wiki/contents/articles/13278.recursos-para-desarrolladores-de-sql-server-es-es.aspx">Recursos para desarrolladores de SQL Server (es-ES)</a></p>
<p><a href="https://social.technet.microsoft.com/wiki/contents/articles/13279.como-disenar-crear-y-mantener-una-base-de-datos-de-servidor-de-sql-es-es.aspx">C&oacute;mo dise&ntilde;ar, crear y mantener una base de datos de servidor de SQL (es-ES)</a></p>
<p><a href="https://social.technet.microsoft.com/wiki/contents/articles/13315.como-incrustar-sql-server-express-en-una-aplicacion-es-es.aspx">C&oacute;mo incrustar SQL Server Express en una aplicaci&oacute;n (es-ES)</a></p>
<p><a href="https://social.technet.microsoft.com/wiki/contents/articles/13287.como-usar-php-con-sql-server-es-es.aspx">C&oacute;mo usar PHP con SQL Server (es-ES)</a></p>
<p><a href="https://social.technet.microsoft.com/wiki/contents/articles/9110.como-usar-asp-net-con-sql-server-es-es.aspx">C&oacute;mo usar ASP.NET con SQL Server (es-ES)</a></p>
<p>&nbsp;</p>
<p>Si deseas colaborar en TechNet Wiki en Espa&ntilde;ol, env&iacute;ame un mensaje.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Enabling the Ctrl-Shift-M keyboard shortcut for template parameters in SSMS 2012</title>
      <link>https://docs.microsoft.com/archive/blogs/monicarivera/enabling-the-ctrl-shift-m-keyboard-shortcut-for-template-parameters-in-ssms-2012</link>
      <pubDate>Sun, 26 Aug 2012 22:26:00 GMT</pubDate>
      <dc:creator><![CDATA[Monica Rivera]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/monicarivera/2012/08/26/enabling-the-ctrl-shift-m-keyboard-shortcut-for-template-parameters-in-ssms-2012/</guid>
      <description><![CDATA[In SSMS 2012, when&nbsp;the known shortcut to open the window to enter the values for Template...]]></description>
      <content:encoded><![CDATA[<p>In SSMS 2012, when&nbsp;the known shortcut to open the window to enter the values for Template Paramenters is not enabled upon installation, the menu item Query-&gt; "Specify Values for Template Parameters: does not have a shortcut assigned:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/54/89/7217.Img1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-54-89/7217.Img1.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/54/89/7217.Img1.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-54-89/7217.Img1.png" width="418" height="467" /></a></p>
<p>&nbsp;</p>
<p>To enable this option, you need to go to the menu: Options -&gt; Keyboard and change the keyboard mapping scheme from "Default" to "Visual Studio 2012 Compatible":</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/54/89/6646.img2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-54-89/6646.img2.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/54/89/6646.img2.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-54-89/6646.img2.png" /></a></p>
<p>&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/54/89/4377.img3.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-54-89/4377.img3.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/54/89/4377.img3.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-54-89/4377.img3.png" /></a></p>
<p>&nbsp;</p>
<p>After making the change, the shortcut is visible in the Query menu item and it should work as in previous versions of SSMS:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/54/89/3060.img4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-54-89/3060.img4.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/54/89/3060.img4.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-54-89/3060.img4.png" /></a></p>]]></content:encoded>
    </item>
    <item>
      <title>Leer datos de un archivo XML externo desde SQL Server usando una función SQL Server CLR (es-ES)</title>
      <link>https://docs.microsoft.com/archive/blogs/monicarivera/leer-datos-de-un-archivo-xml-externo-desde-sql-server-usando-una-funcin-sql-server-clr-es-es</link>
      <pubDate>Wed, 22 Aug 2012 10:47:00 GMT</pubDate>
      <dc:creator><![CDATA[Monica Rivera]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/monicarivera/2012/08/22/leer-datos-de-un-archivo-xml-externo-desde-sql-server-usando-una-funcin-sql-server-clr-es-es/</guid>
      <description><![CDATA[Hace poco, necesit&eacute; escribir una consulta en una base de datos que requer&iacute;a el uso de...]]></description>
      <content:encoded><![CDATA[<p>Hace poco, necesit&eacute; escribir una consulta en una base de datos que requer&iacute;a el uso de unos datos que est&aacute;n publicados en un URL en forma de un archivo XML. Como necesitaba los datos en forma de tabla, para unirla a otras tablas existentes en mi base datos, decid&iacute; que era mejor usar una funcion que retorne una tabla, en lugar de un procedimiento almacenado.</p>
<p>La estructura del archivo XML era algo asi:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/54/89/3857.xmlsample.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-54-89/3857.xmlsample.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/54/89/3857.xmlsample.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-54-89/3857.xmlsample.png" width="249" height="511" /></a></p>
<p>Adem&aacute;s, hay un archivo diferente por a&ntilde;o. Es decir que si necesito ver las publicaciones del a&ntilde;o 2000, tendria que abrir el archivo necesario de esta forma: <a href="https://myURL/publicaciones_2000.xml">https://myURL/publicaciones_2000.xml</a>&nbsp;y el archivo del a&ntilde;o 2011: <a href="https://myURL/publicaciones_2000.xml">https://myURL/publicaciones_2011.xml</a>.</p>
<p>Lo &uacute;nico que me interesa de este archivo son los c&oacute;digos de los libros, porque los voy a usar en una consulta en mi base de datos que contiene estos c&oacute;digos y otra informaci&oacute;n.</p>
<p>Entonces, mi funci&oacute;n T-SQL ser&aacute; utilizada de &eacute;sta forma:</p>
<pre class="scroll"><code class="mysql">select codigo from dbo.LibrosPorA&ntilde;o(2000);</code></pre>
<p>Para esto, creo el proyecto en Visual Studio, a&ntilde;ado un nuevo elemento de tipo User-Defined Function&nbsp;&nbsp;y uso el siguiente c&oacute;digo:</p>
<pre class="scroll"><code class="csharp"> using System;<br /> using System.Collections;<br /> using System.Collections.Generic;<br /> using System.Data.SqlTypes;<br /> using System.IO;<br /> using System.Net;<br /> using System.Xml.Linq;<br /> <br /> <br /> public partial class UserDefinedFunctions<br /> {<br /> [Microsoft.SqlServer.Server.SqlFunction(FillRowMethodName="FillRows", TableDefinition="codigo nvarchar(100)")]<br /> public static IEnumerable LibrosPorA&ntilde;o(String A&ntilde;o)<br /> {<br /> List&lt;string&gt; codigos = GetDataFromXML(A&ntilde;o);<br /> return codigos;<br /> }<br /> public static List&lt;string&gt; GetDataFromXML(string a&ntilde;o)<br /> {<br /> String url = string.Format(@"https://myURL/publicaciones_{0}.xml", a&ntilde;o);<br /> HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);<br /> request.Credentials = CredentialCache.DefaultNetworkCredentials;<br /> Stream stream = request.GetResponse().GetResponseStream();<br /> StreamReader strRead = new StreamReader(stream);<br /> XDocument xdoc = XDocument.Load(strRead);<br /> List&lt;string&gt; results = new List&lt;string&gt;();<br /> foreach (XElement el in xdoc.Descendants("Libros").Descendants("Codigo"))<br /> {<br /> results.Add(el.Value);<br /> }<br /> <br /> return results;<br /> }<br /> public static void FillRows(Object obj, out SqlChars a&ntilde;o)<br /> {<br /> a&ntilde;o = new SqlChars((string) obj);<br /> }<br /> };<br /> </code></pre>
<p>En las propiedades del proyecto, en la seccion Database, cambio el Permission Level a External.</p>
<p>En mi base de datos, tengo que habilitar integraci&oacute;n CLR y cambiar la opci&oacute;n Trustworthy de mi base de datos:</p>
<pre class="scroll"><code class="mysql"> SP_CONFIGURE 'CLR ENABLED', 1<br /> GO<br /> RECONFIGURE<br /> GO<br /> <br /> <br /> ALTER DATABASE TEST SET TRUSTWORTHY ON;</code></pre>
<pre class="scroll"><code class="mysql"></code>&nbsp;</pre>
<p>En Visual Studio, compilo mi proyecto y hago el deployment a mi base de datos.</p>
<p>Despues de comprobar que la funci&oacute;n esta disponible en mi base de datos, mi tabla con los c&oacute;digos de libros est&aacute; lista para ser usada:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/54/89/4048.xmlsample.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-54-89/4048.xmlsample.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/54/89/4048.xmlsample.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-54-89/4048.xmlsample.png" width="385" height="176" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p></p>]]></content:encoded>
    </item>
  </channel>
</rss>