Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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
Sql 查找给定列名的所有表_Sql_Sql Server_Vba - Fatal编程技术网

Sql 查找给定列名的所有表

Sql 查找给定列名的所有表,sql,sql-server,vba,Sql,Sql Server,Vba,我正在使用一段代码(通过Excel VBA),这段代码似乎出现在互联网上的几个地方。目的是查找包含特定字段/列的所有表 这是我的SQL字符串: SELECT t.name AS table_name, SCHEMA_NAME(schema_id) AS schema_name, c.name AS column_name FROM sys.tables AS t INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT

我正在使用一段代码(通过Excel VBA),这段代码似乎出现在互联网上的几个地方。目的是查找包含特定字段/列的所有表

这是我的SQL字符串:

SELECT t.name AS table_name, 
       SCHEMA_NAME(schema_id) AS schema_name, 
       c.name AS column_name FROM sys.tables AS t 
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID 
WHERE c.name LIKE 'MyCol' 
ORDER BY schema_name, table_name;
这适用于大多数表,但不适用于视图。是否也有一种在视图中查看的方法


如果有人有任何想法,我将非常感谢反馈。我希望这一切都是有意义的,因为我对SQL相当陌生,但我已经做VBA很长时间了。非常感谢

使用
sysobjects
而不是
systables

sysobjects是大多数基于DML的对象(触发器除外),而systables正好。。。桌子

注意sys.objects vs sysobjects


请注意,此sql适合sql注入攻击。改用参数化sql查询。@paqogomez这不是有点太过平面了吗?这是一个管理脚本,如果不暴露于外界,它怎么可能容易受到注射攻击?@dean我明白你的意思,但我同意@paqogomez。OP没有说明此脚本的用法,而传入
%
实际上将预执行数据库的完整架构转储。这会产生巨大的安全问题,具体取决于服务器存储的信息。最好是以安全的方式编写所有查询,而不是养成在字符串中使用直接注入的习惯。对不起,我对注入攻击有点迷茫。我将尝试阅读一些关于这方面的内容以及参数化sql查询的含义。感谢您的回复。我不确定这是否有助于澄清任何问题,但我确实希望阅读更多有关负责任的内容,因为我不想无意中编写一些会导致崩溃或数据泄露的内容。