SQL Server EXEC misinterpreting database name

This: @query = SELECT Count(*) FROM ReportServer$DEVSVR1.INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'
executes fine if copied into new query window. But fails EXEC @query with this error:

Database ‘SELECT Count(*) FROM ReportServer$DEVSVR1’ does not exist.

SQL is incorrectly parsing the phrase ‘SELECT Count(*) FROM ReportServer$DEVSVR1’
as the database name.

>Solution :

EXEC @query means execute procedure with name that is in @query variable.
You probably want EXEC(@query) which executes the string

Leave a Reply