{"id":12738,"date":"2024-07-07T12:13:15","date_gmt":"2024-07-07T10:13:15","guid":{"rendered":"https:\/\/www.palentino.es\/blog\/?p=12738"},"modified":"2024-07-28T11:19:12","modified_gmt":"2024-07-28T09:19:12","slug":"buscador-avanzado-de-texto-para-sql-server-palsqlseach","status":"publish","type":"post","link":"https:\/\/www.palentino.es\/blog\/buscador-avanzado-de-texto-para-sql-server-palsqlseach\/","title":{"rendered":"Buscador avanzado de texto para SQL Server #PalSQLSearch"},"content":{"rendered":"<div id=\"audioigniter-12763\" class=\"audioigniter-root \" data-player-type=\"simple\" data-tracks-url=\"https:\/\/www.palentino.es\/blog\/?audioigniter_playlist_id=12763\" data-display-track-no=\"true\" data-reverse-track-order=\"false\" data-display-tracklist-covers=\"true\" data-display-active-cover=\"true\" data-display-artist-names=\"true\" data-display-buy-buttons=\"true\" data-buy-buttons-target=\"true\" data-cycle-tracks=\"false\" data-display-credits=\"false\" data-display-tracklist=\"true\" data-allow-tracklist-toggle=\"true\" data-allow-tracklist-loop=\"true\" data-limit-tracklist-height=\"true\" data-volume=\"100\" data-tracklist-height=\"185\" ><\/div>\n<p>En esta entrada, les presento un software para Windows que resulta muy \u00fatil para<strong> administradores de bases de datos y usuarios avanzados<\/strong>.<\/p>\n<p>Esta herramienta facilita la b\u00fasqueda de un texto espec\u00edfico <strong>en todas las tablas de una base de datos<\/strong> de <span style=\"color: #800080;\"><strong>SQL Server<\/strong><\/span>. Es perfecta para identificar patrones de texto, mostrando en qu\u00e9 tablas aparecen y cu\u00e1ntas veces.<\/p>\n<p>La <strong>b\u00fasqueda<\/strong> se puede efectuar tanto <strong>local como remotamente<\/strong>, utilizando<span style=\"color: #800080;\"><strong> autenticaci\u00f3n de SQL Server<\/strong><\/span> \u00f3 <span style=\"color: #800080;\"><strong>windows<\/strong><\/span>.<\/p>\n<p>Una vez que los datos han sido localizados, se pueden <strong>organizar, ordenar, filtrar, clasificar y, finalmente, exportar a Excel<\/strong>.<\/p>\n<p>Para facilitar la prueba de su funcionamiento, he configurado un servidor SQL Server en <a href=\"https:\/\/clouding.io\/\" target=\"_blank\" rel=\"noopener\">clouding.io<\/a> remoto demo por defecto, equipado con una cuenta de usuario con permisos de lectura. No lo pete\u00eds, es una VPS con poca Ram. \ud83d\ude09<\/p>\n<p>Espero que os guste esta herramienta, ya que no hay muchas otras similares que conozca. Se caracteriza por su facilidad de uso, siguiendo la filosof\u00eda <a href=\"https:\/\/es.wikipedia.org\/wiki\/Principio_KISS\" target=\"_blank\" rel=\"noopener\"><strong>KISS<\/strong> <\/a>y con un dise\u00f1o simple &#8220;<strong>en la <span style=\"color: #000080;\">simplicidad<\/span> reside la belleza<\/strong>&#8220;, pero en su interior compleja, como bien afirm\u00f3 el arquitecto <strong>Ludwig Mies van der Rohe<\/strong>, &#8220;<strong>Dios est\u00e1 en los <span style=\"color: #000080;\">detalles<\/span><\/strong>&#8220;.<\/p>\n<div id=\"attachment_12746\" style=\"width: 1156px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/07\/simplicidad-detalle-palentino.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-12746\" class=\"wp-image-12746 size-full\" src=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/07\/simplicidad-detalle-palentino.jpg\" alt=\"Post-art: T\u00e9rmino que se refiere a la habilidad de combinar arte e informaci\u00f3n en art\u00edculos o publicaciones de redes sociales. @oscardelacuesta\" width=\"1146\" height=\"472\" srcset=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/07\/simplicidad-detalle-palentino.jpg 1146w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/07\/simplicidad-detalle-palentino-300x124.jpg 300w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/07\/simplicidad-detalle-palentino-1024x422.jpg 1024w\" sizes=\"auto, (max-width: 1146px) 100vw, 1146px\" \/><\/a><p id=\"caption-attachment-12746\" class=\"wp-caption-text\"><strong>Post-art<\/strong>: T\u00e9rmino que se refiere a la habilidad de combinar arte e informaci\u00f3n en art\u00edculos o publicaciones de redes sociales. @oscardelacuesta<\/p><\/div>\n<p><!--more--><\/p>\n<h2><span style=\"color: #800080;\">Uso del programa<\/span><\/h2>\n<p><a href=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/07\/PalsqlSearch-demo-1.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-12933\" src=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/07\/PalsqlSearch-demo-1.gif\" alt=\"\" width=\"1057\" height=\"765\" \/><\/a><\/p>\n<p>La b\u00fasqueda eficiente en m\u00faltiples tablas es una tarea compleja, llena de &#8220;<span style=\"color: #000080;\"><strong>detalles<\/strong><\/span>&#8220;; por eso, PalSQLSearch emplea un procedimiento almacenado que debe ser inicializado en el servidor antes de su primer uso. Para activar la funci\u00f3n de b\u00fasqueda, simplemente haz clic en &#8220;1 &#8211; Crear procedimiento almacenado&#8221; durante el primer uso de la aplicaci\u00f3n.<\/p>\n<p>Adem\u00e1s, he habilitado un servidor de prueba en la nube para que puedas realizar b\u00fasquedas en la base de datos gratuita de Microsoft, <strong>ContosoRetailDW<\/strong>. Puedes configurar tus propios accesos en otros servidores, tanto locales como en la nube, siempre usando autenticaci\u00f3n SQL Serve o Windows.<\/p>\n<p>En el servidor de cortes\u00eda, el procedimiento almacenado ya est\u00e1 establecido, por lo que si seleccionas &#8220;Crear procedimiento almacenado&#8221;, te aparecer\u00e1 un mensaje indicando que ya est\u00e1 disponible.<\/p>\n<p><strong>M\u00e1s sobre los procedimientos almacenados:<\/strong> Un procedimiento almacenado es un conjunto de instrucciones SQL que se ejecuta en el servidor de la base de datos y se almacena para su reutilizaci\u00f3n. Los procedimientos almacenados pueden mejorar el rendimiento al reducir el tr\u00e1fico de red, ya que las operaciones se ejecutan en el servidor y solo se env\u00edan los resultados al cliente. Adem\u00e1s, aumentan la seguridad al encapsular la l\u00f3gica de acceso a datos.<\/p>\n<p><strong>Tipos de autenticaci\u00f3n en SQL Server:<\/strong><\/p>\n<ol>\n<li><strong>Autenticaci\u00f3n de SQL Server:<\/strong> Utiliza un nombre de usuario y contrase\u00f1a espec\u00edficos del servidor de SQL Server. Esta autenticaci\u00f3n permite el acceso independientemente del usuario de Windows.<\/li>\n<li><strong>Autenticaci\u00f3n de Windows:<\/strong> Utiliza las credenciales del usuario de Windows, integrando el manejo de seguridad de SQL Server con el de Windows. Este m\u00e9todo es m\u00e1s seguro que la autenticaci\u00f3n de SQL Server porque reduce la posibilidad de revelar la informaci\u00f3n de conexi\u00f3n.<\/li>\n<\/ol>\n<p>La aplicaci\u00f3n todav\u00eda no soporta cifrado en la conexi\u00f3n.<\/p>\n<p><a href=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/07\/Pal-sql-search1-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-12769\" src=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/07\/Pal-sql-search1-1.png\" alt=\"\" width=\"1061\" height=\"729\" srcset=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/07\/Pal-sql-search1-1.png 1061w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/07\/Pal-sql-search1-1-300x206.png 300w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/07\/Pal-sql-search1-1-1024x704.png 1024w\" sizes=\"auto, (max-width: 1061px) 100vw, 1061px\" \/><\/a><\/p>\n<h2><span style=\"color: #000080;\">Mecanismo interno de funcionamiento<\/span><\/h2>\n<p>Una vez instalado el programa, en la primera ejecuci\u00f3n una vez establecidos los parametros de inicializaci\u00f3n con el servidor, se intentar\u00e1 desplegar un procedimiento almacenado que crea una tabla en la base de datos especificada. En esa tabla se van a almacenar los resultados de la b\u00fasqueda general.<\/p>\n<p>El procedimiento almacenado se llama PalSQLSearch y la tabla donde deja los datos de b\u00fasqueda es PalSQLSearchTabla. Al pulsar sobre buscar de forma &#8220;<span style=\"color: #000080;\"><strong>sencilla<\/strong><\/span>&#8221; un texto ejecuta dicho algoritmo.<\/p>\n<p>Os dejo el &#8220;<span style=\"color: #000080;\"><strong>detalle<\/strong><\/span>&#8221; del procedimiento almacenado.<\/p>\n<pre><strong><em>CREATE PROC [BUILTIN\\Users].[PalSQLSearch]\r\n(\r\n@StrValorBusqueda nvarchar(100)\r\n)\r\nAS\r\nBEGIN\r\n\r\n-- Borra la tabla si existe para empezar con una limpia\r\nIF OBJECT_ID('PalSQLSearchTabla', 'U') IS NOT NULL\r\nDROP TABLE PalSQLSearchTabla;\r\nCREATE TABLE PalSQLSearchTabla (NombreColumna nvarchar(370), ValorColumna nvarchar(3630))\r\nSET NOCOUNT ON\r\n\r\nDECLARE @NombreTabla nvarchar(256),\r\n@NombreColumna nvarchar(128),\r\n@StrValorBusqueda2 nvarchar(110)\r\n\r\nSET @NombreTabla = ''\r\nSET @StrValorBusqueda2 = QUOTENAME('%' + @StrValorBusqueda + '%','''')\r\n\r\nWHILE @NombreTabla IS NOT NULL\r\nBEGIN\r\nSET @NombreColumna = ''\r\nSET @NombreTabla =\r\n(SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME))\r\nFROM INFORMATION_SCHEMA.TABLES\r\nWHERE TABLE_TYPE = 'BASE TABLE'\r\nAND QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) &gt; @NombreTabla\r\nAND OBJECTPROPERTY(\r\nOBJECT_ID(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)), 'IsMSShipped') = 0)\r\n\r\nWHILE (@NombreTabla IS NOT NULL) AND (@NombreColumna IS NOT NULL)\r\nBEGIN\r\nSET @NombreColumna =\r\n(SELECT MIN(QUOTENAME(COLUMN_NAME))\r\nFROM INFORMATION_SCHEMA.COLUMNS\r\nWHERE TABLE_SCHEMA = PARSENAME(@NombreTabla, 2)\r\nAND TABLE_NAME = PARSENAME(@NombreTabla, 1)\r\nAND DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar')\r\nAND QUOTENAME(COLUMN_NAME) &gt; @NombreColumna)\r\n\r\nIF @NombreColumna IS NOT NULL\r\nBEGIN\r\nINSERT INTO PalSQLSearchTabla \r\nEXEC\r\n('SELECT ''' + @NombreTabla + '.' + @NombreColumna + ''', LEFT(' + @NombreColumna + ', 3630)\r\nFROM ' + @NombreTabla + ' (NOLOCK) ' + ' WHERE ' + @NombreColumna + ' LIKE ' + @StrValorBusqueda2)\r\nEND \r\nEND\r\nEND\r\nSELECT NombreColumna, ValorColumna FROM PalSQLSearchTabla \r\nEND<\/em><\/strong><\/pre>\n<p><a href=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/07\/PalSQLServer-demo.gif\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-12771 size-full\" src=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/07\/PalSQLServer-demo.gif\" alt=\"\" width=\"1063\" height=\"731\" \/><\/a><\/p>\n<p><a href=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/07\/Logo.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-12739 size-full\" src=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/07\/Logo.png\" alt=\"\" width=\"284\" height=\"263\" \/><\/a><\/p>\n<p><a href=\"https:\/\/www.palentino.es\/software\/PalSQLSearch\/setup.exe\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-12152 size-full\" src=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/05\/descarga.gif\" alt=\"\" width=\"100\" height=\"100\" \/><\/a><\/p>\n<p style=\"text-align: center;\"><span style=\"color: #800080;\"><strong>Descarga el instalador, ver 1.1 (setup.exe)<br \/>\n08\/07\/2024<\/strong><\/span><\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.paypal.com\/cgi-bin\/webscr?cmd=_donations&amp;business=SA2YE6K7M3P68&amp;lc=ES&amp;item_name=Mejora%20de%20RememberME&amp;currency_code=EUR&amp;bn=PP-DonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted\" target=\"_blank\" rel=\"noopener\">Colabora con el proyecto si te ha gustado.<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Sobre aviso de origen desconocido al ejecutar el programa de instalaci\u00f3n\u00a0<strong>no implica que sea peligroso,<\/strong>\u00a0para poder ejecutar es necesario ver las imagenes inferiores. Primero es necesario pulsar m\u00e1s informaci\u00f3n, que avisa del\u00a0<strong>origen desconocido<\/strong>, despu\u00e9s ejecutar de todas las formas.<\/p>\n<p>El motivo de esto radica en que el software es muy nuevo, no se encuentra en la microsoft store y no conoce la procedencia del mismo.<\/p>\n<p><a href=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/01\/proteger2.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-11105 size-full\" src=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/01\/proteger2.png\" alt=\"\" width=\"524\" height=\"487\" srcset=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/01\/proteger2.png 524w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/01\/proteger2-300x279.png 300w\" sizes=\"auto, (max-width: 524px) 100vw, 524px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><strong>Requisitos y Soporte<\/strong><\/p>\n<p><strong><em>Versi\u00f3n actual Free 1.0<\/em><\/strong><\/p>\n<p>Compatible 100% con\u00a0<strong>Windows 10 y 11<\/strong>.<\/p>\n<p>Net Framework 4.8 \u00f3 superior. Versiones de 32 y 64 bits disponibles.<\/p>\n<p>Desarrollado en\u00a0<strong>C#, Winform y<\/strong>\u00a0controles\u00a0<strong>Syncfusion<\/strong>\u00a0sobre\u00a0<strong>Visual Studio Community 2022<\/strong><\/p>\n<p>Todas las herramientas que he usado en la creaci\u00f3n son licencias Community o disponibles de libre descarga.<\/p>\n<p>Por otro lado<strong>, no me hago responsable del uso del software y de sus consecuencias derivadas, tal y como aparece en el instalador. Cuando se ejecuta se aceptan dichos t\u00e9rminos.<\/strong><\/p>\n<p>Esta herramienta esta creada por\u00a0<strong>Oscar de la Cuesta Campillo<\/strong>\u00a0se encuentra bajo una Licencia Creative Commons<br \/>\n<a href=\"http:\/\/creativecommons.org\/licenses\/by-nd\/3.0\/es\/\" target=\"_blank\" rel=\"noopener\">Atribuci\u00f3n-SinDerivadas 3.0 Unported. CC BY-ND 3.0<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En esta entrada, les presento un software para Windows que resulta muy \u00fatil para administradores de bases de datos y usuarios avanzados. Esta herramienta facilita la b\u00fasqueda de un texto espec\u00edfico en todas las tablas de una base de datos de SQL Server. Es perfecta para identificar patrones de texto, mostrando en qu\u00e9 tablas aparecen y cu\u00e1ntas veces. La b\u00fasqueda se puede efectuar tanto local como remotamente, utilizando autenticaci\u00f3n de SQL Server \u00f3 windows. Una vez que los datos han sido localizados, se pueden organizar, ordenar, filtrar, clasificar y, finalmente, exportar a Excel. Para facilitar la prueba de su funcionamiento, he configurado un servidor SQL Server en clouding.io remoto demo por defecto, equipado con una cuenta de usuario con permisos de lectura. No lo pete\u00eds, es una VPS con poca Ram. \ud83d\ude09 Espero que os guste esta herramienta, ya que no hay muchas otras similares que conozca. Se caracteriza por su facilidad de uso, siguiendo la filosof\u00eda KISS y con un dise\u00f1o simple &#8220;en la simplicidad reside la belleza&#8220;, pero en su interior compleja, como bien afirm\u00f3 el arquitecto Ludwig Mies van der Rohe, &#8220;Dios est\u00e1 en los detalles&#8220;.<\/p>\n","protected":false},"author":1,"featured_media":12740,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1415,7,691,2207,212],"tags":[2283],"class_list":["post-12738","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sin-categoria-es","category-software","category-windows-10","category-windows-11","category-windows-8","tag-sotware"],"_links":{"self":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/12738","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/comments?post=12738"}],"version-history":[{"count":29,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/12738\/revisions"}],"predecessor-version":[{"id":12768,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/12738\/revisions\/12768"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media\/12740"}],"wp:attachment":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media?parent=12738"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/categories?post=12738"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/tags?post=12738"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}