Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
Men den er faktisk ikke så svær at lave med dynamisk SQL. Du skal læse tabeller og kolonner (inkl. datatyper) fra SYSTEM_INFORMATION.COLUMNS - så opbygger du en dynamisk query der tester for den ønskede værdi i hver enkelt tabel.
Faktisk ikke - det er ikke et normalt behov i en relationel database. Meningen med den er jo at data kun giver mening i sammenhæng med andre data - og man ved hvor data af en given type er lagret.
Jeg har dog lige skrevet en procedure - den looper alt i basen gennem og undersøger om der er matchende data i nogen tabel. Bemærk at du får separate recordset ud per tabel - ikke et samlet.
create procedure dbo.SearchDatabase (@value varchar(50)) as begin -- lidt variabler til senere brug declare @oldtable sysname, @table sysname, @column sysname declare @sql varchar(888), @cols varchar(888)
-- cursor til columns-informationer declare crsr cursor local fast_forward for select '['+table_schema+'].['+table_name+']', '['+column_name+']' from INFORMATION_SCHEMA.COLUMNS
-- åbn den, og hent første række open crsr fetch next from crsr into @table, @column
-- Initier variabler set @oldtable = @table set @cols = ''
-- Loop gennem fundne data while @@fetch_status=0 begin
-- Hvis vi er færdige med at opbygge en kolonneliste, så udtræk matchende rækker if @oldtable<>@table begin if len(@cols)>2 begin set @sql = 'SELECT * FROM '+@oldtable+' WHERE '+right(@cols,len(@cols)-2) print @sql exec (@sql) end set @cols='' set @oldtable = @table end else begin --opbyg kolonneliste, lav alt om til varchar set @cols=@cols+'OR CAST ('+@column+' AS VARCHAR) LIKE ''%'+@value+'%'' ' end -- Næste række fetch next from crsr into @table, @column end close crsr deallocate crsr end go
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.