我知道在 SQL 管理工作室中,我可以右键单击表/触发器/键和script object as...
. 给定对象的名称,有没有办法以编程方式执行此操作?
如果是这样,有没有办法找到与给定表关联的所有对象(主键、外键、触发器)并以编程方式编写所有对象?
我知道在 SQL 管理工作室中,我可以右键单击表/触发器/键和script object as...
. 给定对象的名称,有没有办法以编程方式执行此操作?
如果是这样,有没有办法找到与给定表关联的所有对象(主键、外键、触发器)并以编程方式编写所有对象?
这是 C# 中使用服务器管理对象的一种技术——我不知道用纯 T-SQL 实现它的方法。
一种开始的方法如下:
SysDepends “表”将告诉您哪些对象依赖于另一个对象。它是分层的,因此您可能必须递归地运行 SysDepends 直到您开始获取空值。有时,sysdepends 是不完整的,这里有一篇带有其他建议的文章。
SysObjects “表”将告诉您有关数据库中对象的一些信息。type(也是 xtype)列告诉您项目是什么:用户定义的表、存储过程、触发器等。
然后,您将希望sp_helptext吐出存储过程的文本。这不会重现加密存储过程的文本。
任何完整和完整的解决方案都将涉及编程,尤其是在涉及加密存储过程和触发器时。一篇关于以编程方式确定数据库中项目的示例文章。解密 SQL Server 2000 存储过程所需的数据类型出现在 SQL Server 2005 中,因此您不能在 SQL Server 2000 中使用 SQL 来解密其自己的加密存储过程(但您可以在 SQL Server 2005 中的 SQL 中解密它们)并且它会如果 2005 年到 2008 年的过渡也是如此,我并不感到惊讶。几年前,我对解密存储过程失去了兴趣。
我知道如何以编程方式查找编写对象脚本所需的所有信息。但要真正编写脚本,您可能必须自己编写脚本生成代码。
如果您正在编写代码以找出所有关于现有对象的信息,那么谷歌搜索的术语是“SQL Server 数据字典”。
我会给你一些开始的例子。
要查找特定表上的所有外键约束:
要查找引用特定表的所有外键约束: