我正在使用sp_MSForeachtable
检索所有表的列名并将列名连接到一个字符串中。我正在使用以下查询。我已经通过单个表的变量执行了相同的提供参数并且工作正常,但是当从 SP 执行时,它失败并出现错误“无法绑定多部分标识符“dbo.TableNm”。
DECLARE @query nvarchar(max)
SELECT @query =
'DECLARE @Names VARCHAR(255)
DECLARE @DB VARCHAR(255)
SELECT @Names = COALESCE(@Names + '', '', '''') + COLUMN_NAME FROM Information_Schema.COLUMNS
WHERE TABLE_NAME = ?
SELECT TOP 1 @DB = TABLE_CATALOG FROM Information_Schema.COLUMNS
WHERE TABLE_NAME = ?
SELECT @DB AS [DataBase], ? AS [Table], @Names AS [Columns]'
EXEC sp_MSforeachtable @query
我认为该错误可能与在不同数据库中有多个具有相同名称的表有关,所以我尝试预先修复数据库,但我仍然得到相同的错误。
DECLARE @query nvarchar(max)
SELECT @query =
'DECLARE @Names VARCHAR(255)
DECLARE @DB VARCHAR(255)
DECLARE @TableNm VARCHAR(255) = ?
SET @DB = ''People_Directory''
SELECT @Names = COALESCE(@Names + '', '', '''') + COLUMN_NAME FROM Information_Schema.COLUMNS
WHERE TABLE_NAME = @TableNm
AND TABLE_CATALOG = @DB
SELECT @DB AS [DataBase], @TableNm AS [Table], @Names AS [Columns]'
EXEC sp_MSforeachtable @query
我会继续尝试,但我的想法已经不多了。有什么想法吗?