GNU/Linux >> Znalost Linux >  >> Panels >> Plesk

Globální vyhledávání SQL

Globální vyhledávání SQL Pokud potřebujete provést globální vyhledávání v databázi SQL, aniž byste v ní provedli jakékoli změny, můžete pomocí níže uvedených skriptů nejprve vytvořit uloženou proceduru a poté spustit proceduru k provedení hledání databáze.

Skript pro vytvoření uložené procedury

CREATE PROC SearchAllTables
(
    @SearchStr nvarchar(100)
)
AS
BEGIN

    CREATE TABLE #Results (ColumnName nvarchar(370), ColumnValue nvarchar(3630))

    SET NOCOUNT ON

    DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110)
    SET  @TableName = ''
    SET @SearchStr2 = QUOTENAME('%' + @SearchStr + '%','''')

    WHILE @TableName IS NOT NULL

    BEGIN
        SET @ColumnName = ''
        SET @TableName = 
        (
            SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME))
            FROM     INFORMATION_SCHEMA.TABLES
            WHERE         TABLE_TYPE = 'BASE TABLE'
                AND    QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TableName
                AND    OBJECTPROPERTY(
                        OBJECT_ID(
                            QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)
                             ), 'IsMSShipped'
                               ) = 0
        )

        WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL)

        BEGIN
            SET @ColumnName =
            (
                SELECT MIN(QUOTENAME(COLUMN_NAME))
                FROM     INFORMATION_SCHEMA.COLUMNS
                WHERE         TABLE_SCHEMA    = PARSENAME(@TableName, 2)
                    AND    TABLE_NAME    = PARSENAME(@TableName, 1)
                    AND    DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar', 'int', 'decimal')
                    AND    QUOTENAME(COLUMN_NAME) > @ColumnName
            )

            IF @ColumnName IS NOT NULL

            BEGIN
                INSERT INTO #Results
                EXEC
                (
                    'SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(' + @ColumnName + ', 3630) 
                    FROM ' + @TableName + ' (NOLOCK) ' +
                    ' WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2
                )
            END
        END    
    END

    SELECT ColumnName, ColumnValue FROM #Results
END

Skript pro spuštění uložené procedury

use <datbasename>

EXEC SearchAllTables '<searchterm>'

GO

Jakmile provedete svou uloženou proceduru, můžete ji odstranit rozbalením databáze> Programovatelnost> Uložené procedury kliknutím pravým tlačítkem na SearchAllTables a výběrem smazat .


Plesk
  1. Jak změnit úroveň kompatibility databáze SQL

  2. Jak najít velké tabulky v SQL databázi

  3. Chyba serveru MS SQL 0x80070218

  1. Chyba zablokování transakce MSSQL

  2. Plesk MS SQL Webadmin Error

  3. Ukládejte relace ASP.NET na MS SQL Server

  1. Spustit SQL Server na Ubuntu?

  2. Jak zrychlit vyhledávání v Dash?

  3. Interaktivní vyhledávání relací tmux