如何从特定模式中提取sprocs /表/函数?

时间:2011-09-27 09:13:13

标签: sql-server-2008 extract database-schema

我需要从特定架构下的SQL Server 08 db中提取所有表,存储过程和函数。我可以过滤管理工作室中显示的项目,然后为每个项目执行Script As -> Drop/Create,但我真的想避免这种情况,因为模式中有很多项目。

有办法做到这一点吗?

修改:

我看过this question(我刚发现的可能重复)。我建议不要使用外部工具,因为这是在工作,我需要获得批准才能使用。我也不想要一个大的Create Database脚本 - 我需要为每个表/ sproc / function分别使用脚本。

3 个答案:

答案 0 :(得分:2)

select 
   object_name(obj.object_id), 
   sch.name, 
   co.definition 
from 
   sys.objects obj 
   join sys.schemas sch on sch.schema_id = obj.schema_id
   left join sys.sql_modules co on co.object_id = obj.object_id
where 
   sch.name = 'DBO' --here goes your schema name

- 在sql 2000中使用了syscoments表,你不应该再使用它了 - 但是这样的话就是sys.syscomments表

答案 1 :(得分:1)

Visual Studio 2010 Premium包括数据库项目工具支持,允许您在数据库之间执行数据库模式比较(您可以只过滤到指定的数据库模式)并将实时数据库中的所有对象(和配置)提取到VS2010数据库项目,为每个对象创建一个脚本。

请参阅Working with Database Projects

答案 2 :(得分:-1)

基于

的东西
SELECT [text] FROM [syscomments]