【发布时间】:2014-05-05 19:48:04
【问题描述】:
我正在使用一段代码(通过 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 已经很长时间了。提前非常感谢!
【问题讨论】:
-
请注意,此 sql 对于 SQL 注入攻击已经成熟。改用参数化的 sql 查询。
-
@paqogomez 是不是有点偏执?它是一个管理脚本,如果不暴露在外部世界怎么可能容易受到注入攻击?
-
@dean 我明白你在说什么,但我同意@paqogomez。 OP 没有说明此脚本的用法,并且传入
%实质上将执行数据库的完整模式转储。根据服务器存储的信息,这可能会产生巨大的安全问题。最好以安全的方式编写所有查询,而不是养成在字符串中使用直接注入的习惯。 -
对不起,我对注入攻击有点迷茫。我将尝试阅读一些关于它以及参数化 sql 查询的含义的内容。感谢您的回复。
-
我不确定这是否有助于澄清任何事情,但我确实想了解更多关于负责任的信息,因为我不想无意中编写会导致崩溃或损害数据的内容。
标签: sql sql-server vba