首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server:如何生成没有DMO/SMO的对象脚本?

Server:如何生成没有DMO/SMO的对象脚本?
EN

Stack Overflow用户
提问于 2009-11-26 15:43:06
回答 3查看 1.4K关注 0票数 2

我想为数据库对象生成脚本。

  • 表格
  • 视图
  • 存储过程
  • 函数

因为:

  • Server管理对象(SMO)
  • SQL分布式管理对象(SQL) (降级)

未在以下新安装上安装:

  • Windows XP
  • Windows
  • Windows 7

它们也不是可再分配的,它们不是一个选项(它将在客户的机器上运行)。

(编辑:从今天看来,SMO实际上是可再分配。)

是否有任何源代码将从系统表中选择转换为关联脚本?

我将从编写存储过程、视图、触发器或用户定义函数的伪代码开始:

代码语言:javascript
复制
String GetStoredProcedureScript(String storedProcedureName)
{
   return GetHelpText(storedProcedureName);
}

String GetViewScript(String viewName)
{
   return GetHelpText(viewName);
}

String GetTriggerScript(String triggerName)
{
   return GetHelpText(storedProcedureName);
}

String GetUserDefinedFunctionScript(String userDefinedFunctionName)
{
   return GetHelpText(userDefinedFunctionName);
}

所有这些都可以在内部使用单个助手函数:

代码语言:javascript
复制
String GetHelpText(String objectName)
{
   String szQuery = 'EXECUTE sp_helptext '+QuotedStr(objectName);


   String sql := '';

   using (Recordset rs = connection.Execute(szQuery))
   {
      while not rs.EOF do
      {
         sql = sql+rs['text'];
         rs.Next;
      }
   }

   return sql;
}

编辑:感谢servicesharvest316指出sp_helptext。这就是为什么我有一个抽象这些东西的类。

EN

回答 3

Stack Overflow用户

发布于 2009-11-26 16:08:53

这是你的书。它解释了如何制作一个代码生成器来执行您的要求。

我为MySql使用了一个修改过的版本,它很有魅力。微软.NET中的代码生成

票数 1
EN

Stack Overflow用户

发布于 2009-12-09 21:46:13

你试过sp_helptext了吗?

代码语言:javascript
复制
String szQuery = 'EXEC sp_helptext '+QuotedStr(storedProcedureName)
票数 1
EN

Stack Overflow用户

发布于 2012-02-09 15:07:14

开放DBDiff (referenced 这里)实现了一个GUI,用于比较数据库和生成更新脚本。它还包括一个命令行工具。可以使用项目的内部来生成CREATE语句。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1804408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档