如何列出或搜索数据库中的所有列名?


37

我想在数据库中存在的列名称中搜索一个字符串。

我正在做一个维护项目,我处理的某些数据库有150多个表,因此我正在寻找一种快速的方法。

你有什么建议吗?



好文章。非常感谢。我还使用了TM Field Finder,它在SQL Schema和数据搜索方面确实非常强大。

Answers:


38

您可以使用以下查询来列出数据库中所有表的所有列或搜索列。

USE AdventureWorks 
GO 
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 '%EmployeeID%'
ORDER BY schema_name, table_name; 

您可以使用 information_schema视图列出SQL Server 2005或2008数据库中的所有对象。

SELECT * FROM information_schema.tables

SELECT * FROM information_schema.columns

http://blog.sqlauthority.com/2008/08/06/sql-server-query-to-find-column-from-all-tables-of-database/


8

还有SQL Search-与SQL Server Management Studio集成的免费工具。

替代文字


1
SQL搜索是一个很好的工具,但是请记住,结果窗口被任意限制为250个结果。我上一次使用此工具时,Red Gate没有办法解除此限制。话虽这么说,它仍然是一个非常有用的工具,我会推荐给任何SQL Server DBA或开发人员。价格也合适!
Matt M

5

一个较晚,但由于两个工具都是免费的,因此很有用。

ApexSQL Search –该工具的优点是它还可以搜索数据,显示对象之间的依赖关系以及其他有用的东西。

在此处输入图片说明

SSMS工具包 –适用于除SQL 2012以外的所有版本。许多很棒的选项不仅与搜索相关,例如摘要,各种自定义设置等。

在此处输入图片说明


1

这是所有旧SQL DBA都使用的。

EXEC sp_help 'your table name';

如果仅使用单行,则甚至无需键入EXEC。做就是了

sp_help 'your table name'
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.