vi parto dal presupposto vuole passare il nome del database come un parametro e non appena eseguito:
SELECT *
FROM DBName.sys.tables
WHERE Name LIKE '%XXX%'
Se è così, è possibile utilizzare SQL dinamico per aggiungere il dbname alla query:
DECLARE @DBName NVARCHAR(200) = 'YourDBName',
@TableName NVARCHAR(200) = 'SomeString';
IF NOT EXISTS (SELECT 1 FROM master.sys.databases WHERE Name = @DBName)
BEGIN
PRINT 'DATABASE NOT FOUND';
RETURN;
END;
DECLARE @SQL NVARCHAR(MAX) = ' SELECT Name
FROM ' + QUOTENAME(@DBName) + '.sys.tables
WHERE Name LIKE ''%'' + @Table + ''%''';
EXECUTE SP_EXECUTESQL @SQL, N'@Table NVARCHAR(200)', @TableName;
commentando la linea 'e is_ms_shipped = 0; 'Non sembra che faccia molto – whytheq
L'unica cosa che normalmente nasconde sono le tabelle di supporto dei diagrammi del database, o ce n'è solo una. È più utile quando cerchi funzioni/procedure. – RichardTheKiwi
Perché non aggiungere nomi di schemi? selezionare \t \t t.schema_id, \t \t \t s.name, \t \t \t t.Name da \t \t DBNAME.sys.tables come t join interno \t DBNAME.sys.schemas come s su t.schema_id = s.schema_id dove \t \t t.name come '% yourtabletosearch%' e \t \t \t is_ms_shipped = 0 – Acroneos