我正在尝试使用 sp_MSForEachDB 查询位于同一 SQL Server 实例上的多个数据库。
有 8 个数据库具有表 man_days 和名为 servicetype 的列。我已经手动验证了所有 8 个表都是相同的。
运行以下查询时,我收到错误消息Invalid column name 'servicetype'
EXEC sp_MSForEachDB
'
BEGIN
IF EXISTS (SELECT * FROM [?].INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = ''man_days'' AND COLUMN_NAME = ''servicetype'')
SELECT top 1 [man_days].[servicetype] from [?]..[man_days]
END
'
结果集符合预期,但错误不断出现。我究竟做错了什么?
编辑...如果我更改代码以查询所有列,如下面的代码所示,它可以正常工作。或者,如果我将其更改为查询该表中的其他单列,则它可以正常工作。只有当我尝试选择那一列时它才会失败
EXEC sp_MSForEachDB
'
BEGIN
IF EXISTS (SELECT * FROM [?].INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = ''man_days'' AND COLUMN_NAME = ''servicetype'')
SELECT top 1 * from [?]..[man_days]
END
'