Tjek hvis tabel er accessible
Hej,Jeg er ved at lave et script til at søge efter bestemte kolonner i tabeller, som sådan set virker fint.
Jeg ville sådan set gerne bare loope igennem alle databaser med sys.database men hvis jeg ikke har adgang til en tabel stopper scriptet.
Er der en måde at tjekke om jeg har adgang og så evt indsætte et if statement?
scriptet ser sådan ud indtil nu
Først laver jeg en tabel der kan indeholde søgeresultat...
create table #SearchTable
(
TABLE_CATALOG varchar(100),
TABLE_NAME varchar(100),
COLUMN_NAME varchar(100),
)
Dernæst køres scriptet, hvor jeg altså også har en temptabel med navne på de databaser jeg vil kigge i, men ideelt set ville jeg hellere loope på sys.database
Det er USE [database] der går galt, når jeg ikke har adgang.
declare @value int
set @value =1
DECLARE @Query NVARCHAR(2000), @QueryString NVARCHAR(20), @MyDataBAseName NVARCHAR(100)
SET @QueryString = 'kvh'
while ((select count(*)from #tempDateTable) >= @value)
begin
;With Name_CTE (Name, rowNumber)
as
(select *, row_number() over(order by name desc) rowNumber from #tempDateTable)
Select @MyDataBAseName = Name from Name_CTE where @value= rowNumber
Set @value=@value+1
SET @Query = 'use '+@MyDataBAseName+ '; Insert into #SearchTable
(TABLE_CATALOG, TABLE_NAME, COLUMN_NAME)
SELECT DISTINCT TABLE_CATALOG, TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE column_name LIKE ''%'+@QueryString+'%'' '
EXEC(@Query)
end
Til sidst kan resultatet læses her
select * from #SearchTable