En esta entrada, les presento un software para Windows que resulta muy útil para administradores de bases de datos y usuarios avanzados.
Esta herramienta facilita la búsqueda de un texto específico en todas las tablas de una base de datos de SQL Server. Es perfecta para identificar patrones de texto, mostrando en qué tablas aparecen y cuántas veces.
La búsqueda se puede efectuar tanto local como remotamente, utilizando autenticación de SQL Server ó 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ís, es una VPS con poca Ram. 😉
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ía KISS y con un diseño simple “en la simplicidad reside la belleza“, pero en su interior compleja, como bien afirmó el arquitecto Ludwig Mies van der Rohe, “Dios está en los detalles“.
Uso del programa
La búsqueda eficiente en múltiples tablas es una tarea compleja, llena de “detalles“; por eso, PalSQLSearch emplea un procedimiento almacenado que debe ser inicializado en el servidor antes de su primer uso. Para activar la función de búsqueda, simplemente haz clic en “1 – Crear procedimiento almacenado” durante el primer uso de la aplicación.
Además, he habilitado un servidor de prueba en la nube para que puedas realizar búsquedas en la base de datos gratuita de Microsoft, ContosoRetailDW. Puedes configurar tus propios accesos en otros servidores, tanto locales como en la nube, siempre usando autenticación SQL Serve o Windows.
En el servidor de cortesía, el procedimiento almacenado ya está establecido, por lo que si seleccionas “Crear procedimiento almacenado”, te aparecerá un mensaje indicando que ya está disponible.
Más sobre los procedimientos almacenados: 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ón. Los procedimientos almacenados pueden mejorar el rendimiento al reducir el tráfico de red, ya que las operaciones se ejecutan en el servidor y solo se envían los resultados al cliente. Además, aumentan la seguridad al encapsular la lógica de acceso a datos.
Tipos de autenticación en SQL Server:
- Autenticación de SQL Server: Utiliza un nombre de usuario y contraseña específicos del servidor de SQL Server. Esta autenticación permite el acceso independientemente del usuario de Windows.
- Autenticación de Windows: Utiliza las credenciales del usuario de Windows, integrando el manejo de seguridad de SQL Server con el de Windows. Este método es más seguro que la autenticación de SQL Server porque reduce la posibilidad de revelar la información de conexión.
La aplicación todavía no soporta cifrado en la conexión.
Mecanismo interno de funcionamiento
Una vez instalado el programa, en la primera ejecución una vez establecidos los parametros de inicialización con el servidor, se intentará 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úsqueda general.
El procedimiento almacenado se llama PalSQLSearch y la tabla donde deja los datos de búsqueda es PalSQLSearchTabla. Al pulsar sobre buscar de forma “sencilla” un texto ejecuta dicho algoritmo.
Os dejo el “detalle” del procedimiento almacenado.
CREATE PROC [BUILTIN\Users].[PalSQLSearch] ( @StrValorBusqueda nvarchar(100) ) AS BEGIN -- Borra la tabla si existe para empezar con una limpia IF OBJECT_ID('PalSQLSearchTabla', 'U') IS NOT NULL DROP TABLE PalSQLSearchTabla; CREATE TABLE PalSQLSearchTabla (NombreColumna nvarchar(370), ValorColumna nvarchar(3630)) SET NOCOUNT ON DECLARE @NombreTabla nvarchar(256), @NombreColumna nvarchar(128), @StrValorBusqueda2 nvarchar(110) SET @NombreTabla = '' SET @StrValorBusqueda2 = QUOTENAME('%' + @StrValorBusqueda + '%','''') WHILE @NombreTabla IS NOT NULL BEGIN SET @NombreColumna = '' SET @NombreTabla = (SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @NombreTabla AND OBJECTPROPERTY( OBJECT_ID(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)), 'IsMSShipped') = 0) WHILE (@NombreTabla IS NOT NULL) AND (@NombreColumna IS NOT NULL) BEGIN SET @NombreColumna = (SELECT MIN(QUOTENAME(COLUMN_NAME)) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = PARSENAME(@NombreTabla, 2) AND TABLE_NAME = PARSENAME(@NombreTabla, 1) AND DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar') AND QUOTENAME(COLUMN_NAME) > @NombreColumna) IF @NombreColumna IS NOT NULL BEGIN INSERT INTO PalSQLSearchTabla EXEC ('SELECT ''' + @NombreTabla + '.' + @NombreColumna + ''', LEFT(' + @NombreColumna + ', 3630) FROM ' + @NombreTabla + ' (NOLOCK) ' + ' WHERE ' + @NombreColumna + ' LIKE ' + @StrValorBusqueda2) END END END SELECT NombreColumna, ValorColumna FROM PalSQLSearchTabla END
Descarga el instalador, ver 1.1 (setup.exe)
08/07/2024
Colabora con el proyecto si te ha gustado.
Sobre aviso de origen desconocido al ejecutar el programa de instalación no implica que sea peligroso, para poder ejecutar es necesario ver las imagenes inferiores. Primero es necesario pulsar más información, que avisa del origen desconocido, después ejecutar de todas las formas.
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.
Requisitos y Soporte
Versión actual Free 1.0
Compatible 100% con Windows 10 y 11.
Net Framework 4.8 ó superior. Versiones de 32 y 64 bits disponibles.
Desarrollado en C#, Winform y controles Syncfusion sobre Visual Studio Community 2022
Todas las herramientas que he usado en la creación son licencias Community o disponibles de libre descarga.
Por otro lado, 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érminos.
Esta herramienta esta creada por Oscar de la Cuesta Campillo se encuentra bajo una Licencia Creative Commons
Atribución-SinDerivadas 3.0 Unported. CC BY-ND 3.0