如何获取SQL Server数据库中的对象列表
获取SQL Server数据库对象列表的方法
开发完往生产环境迁移前,要核对全量对象避免遗漏触发器、存储过程这类容易忘的项,直接用下面两种方法即可,覆盖所有常见数据库对象类型:
方法1:查询系统视图(支持自定义筛选)
SQL Server 2005及以上版本通用,直接查询内置系统视图sys.objects就能拿到当前数据库下的所有对象明细,加个简单筛选就能过滤掉系统自带对象,只看自己开发的业务内容:
SELECT name AS 对象名称, type_desc AS 对象类型说明, create_date AS 创建时间, modify_date AS 最后修改时间 FROM sys.objects -- 过滤SQL Server系统内置对象,仅保留用户创建的业务对象 WHERE is_ms_shipped = 0 ORDER BY type_desc, name;
常见业务对象的类型标识对应关系:
P:SQL存储过程TR:表/视图级DML触发器U:用户自定义表V:视图FN:标量值函数IF:内联表值函数TF:多语句表值函数PK:主键约束F:外键约束UQ:唯一约束
注意:
sys.objects仅存储数据库级别的对象,服务器级触发器这类实例级对象不在这个视图范围内,需要单独执行下面的查询核对:SELECT name, create_date, modify_date FROM sys.server_triggers WHERE is_ms_shipped = 0;
要做开发库、生产库的对象差异核对时,两边分别执行上述查询,导出结果后按对象名比对即可,基本不会出现漏项。
方法2:通过SSMS内置功能导出对象清单+部署脚本
不想手写查询的话,直接用SSMS自带的生成脚本功能就行:
- 连接开发实例,定位到目标开发数据库
- 右键点击数据库名,依次选择「任务」-「生成脚本」
- 跟着向导走到「选择对象」步骤,勾选「编写整个数据库及所有数据库对象的脚本」
- 后续步骤既可以查看全量对象清单,也能直接导出所有对象的创建脚本,直接用于生产部署,不用单独再核对漏项。
内容的提问来源于stack exchange,提问作者Massimo
相关产品推荐
相关产品推荐

