SQL Server EXEC misinterpreting database name

jv4diomz  于 2023-03-11  发布在  SQL Server
关注(0)|答案(1)|浏览(136)

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.

juud5qan

juud5qan1#

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

相关问题