TSQL查询对于一个数据库工作正常,但在sp_msforeachdb过程下运行时,由于语法错误而失败,但语法正确
我有一个sql查询,它可以很好地用于一个数据库。但我想针对所有数据库运行,这就是为什么我想在sp_msforeachdb下运行,以循环遍历所有数据库。但在这个过程中,查询失败了 我尝试在没有sp_msforeachdb的情况下运行查询,并且没有问题。但我想在所有数据库中循环TSQL查询对于一个数据库工作正常,但在sp_msforeachdb过程下运行时,由于语法错误而失败,但语法正确,tsql,Tsql,我有一个sql查询,它可以很好地用于一个数据库。但我想针对所有数据库运行,这就是为什么我想在sp_msforeachdb下运行,以循环遍历所有数据库。但在这个过程中,查询失败了 我尝试在没有sp_msforeachdb的情况下运行查询,并且没有问题。但我想在所有数据库中循环 EXEC sp_MSforeachdb 'use ''?'' SELECT ''SV1'' AS SERVER_NAME, ''IN1'' AS instance_number, ''?'' AS datab
EXEC sp_MSforeachdb 'use ''?'' SELECT ''SV1'' AS SERVER_NAME,
''IN1'' AS instance_number,
''?'' AS database_name,
s.name AS SCHEMA_NAME,
t.name AS TABLE_NAME,
c.name AS COLUMN_NAME,
CASE
WHEN(c.name LIKE ''%addr%''
OR c.name LIKE ''%area%code%''
OR c.name LIKE ''%city%''
OR c.name LIKE ''%e-mail%''
OR c.name LIKE ''%email%''
OR c.name LIKE ''%mobile%''
OR c.name LIKE ''%cell%''
OR c.name LIKE ''%phone%''
OR c.name LIKE ''%postal%''
OR c.name LIKE ''%street%''
OR c.name LIKE ''%zip%'')
THEN ''Contact Info''
WHEN(c.name LIKE ''%birthday%''
OR c.name LIKE ''%date%of%birth%''
OR c.name = ''dob'')
THEN ''Date of Birth''
WHEN(c.name LIKE ''%clinic%''
OR c.name LIKE ''%health%''
OR c.name LIKE ''%healthcondition%''
OR c.name LIKE ''%medical%''
OR c.name LIKE ''%medication%''
OR c.name LIKE ''%patient%''
OR c.name LIKE ''%prescription%''
OR c.name LIKE ''%treatment%''
OR c.name LIKE ''%first%name%''
OR c.name LIKE ''%last%name%''
OR c.name LIKE ''%maiden%name%''
OR c.name LIKE ''%surname%'')
THEN ''Health''
END AS Information_type_name
FROM sys.columns c LEFT JOIN sys.tables t ON t.object_id = c.object_id LEFT JOIN sys.schemas s ON s.schema_id = t.schema_id WHERE t.type IN(''U'', ''V'')'
我已经格式化了查询,以便在阅读stackoverflow规则后更易于阅读 您的查询格式非常糟糕。 from子句前有一个逗号,这似乎是问题所在。下面是格式化的SQL
SELECT 'SV1' AS SERVER_NAME,
'IN1' AS instance_number,
'?' AS database_name,
s.name AS SCHEMA_NAME,
t.name AS TABLE_NAME,
c.name AS COLUMN_NAME,
CASE
WHEN(c.name LIKE '%addr%'
OR c.name LIKE '%area%code%'
OR c.name LIKE '%city%'
OR c.name LIKE '%e-mail%'
OR c.name LIKE '%email%'
OR c.name LIKE '%mobile%'
OR c.name LIKE '%cell%'
OR c.name LIKE '%phone%'
OR c.name LIKE '%postal%'
OR c.name LIKE '%street%'
OR c.name LIKE '%zip%')
THEN 'Contact Info'
WHEN(c.name LIKE '%birthday%'
OR c.name LIKE '%date%of%birth%'
OR c.name = 'dob')
THEN 'Date of Birth'
WHEN(c.name LIKE '%clinic%'
OR c.name LIKE '%health%'
OR c.name LIKE '%healthcondition%'
OR c.name LIKE '%medical%'
OR c.name LIKE '%medication%'
OR c.name LIKE '%patient%'
OR c.name LIKE '%prescription%'
OR c.name LIKE '%treatment%'
OR c.name LIKE '%first%name%'
OR c.name LIKE '%last%name%'
OR c.name LIKE '%maiden%name%'
OR c.name LIKE '%surname%')
THEN 'Health'
END AS Information_type_name
来自sys.c列
左连接系统表在此处输入代码
t ON t.object\u id=c.object\u id
左连接s.schema_id=t.schema_id上的sys.schemas
其中t.输入('U','V') 谢谢Sandeep,我刚刚学会了如何在stackoverflow中格式化代码。现在回到我的问题,是的,逗号是错误留下的,因为我参与了代码的一部分。问题是直接运行时查询工作正常,但不在sp_msforeachdb过程下运行。我可以了解一下为什么不在过程下工作吗使用sp_msforeachdb运行查询时会出现什么错误