Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TSQL查询对于一个数据库工作正常,但在sp_msforeachdb过程下运行时,由于语法错误而失败,但语法正确_Tsql - Fatal编程技术网

TSQL查询对于一个数据库工作正常,但在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

我有一个sql查询,它可以很好地用于一个数据库。但我想针对所有数据库运行,这就是为什么我想在sp_msforeachdb下运行,以循环遍历所有数据库。但在这个过程中,查询失败了

我尝试在没有sp_msforeachdb的情况下运行查询,并且没有问题。但我想在所有数据库中循环

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运行查询时会出现什么错误