我想为数据库对象生成脚本。
因为:
未在以下新安装上安装:
它们也不是可再分配的,它们不是一个选项(它将在客户的机器上运行)。
(编辑:从今天看来,SMO实际上是可再分配。)
是否有任何源代码将从系统表中选择转换为关联脚本?
我将从编写存储过程、视图、触发器或用户定义函数的伪代码开始:
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);
}所有这些都可以在内部使用单个助手函数:
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。这就是为什么我有一个抽象这些东西的类。
发布于 2009-11-26 16:08:53
这是你的书。它解释了如何制作一个代码生成器来执行您的要求。
我为MySql使用了一个修改过的版本,它很有魅力。微软.NET中的代码生成
发布于 2009-12-09 21:46:13
你试过sp_helptext了吗?
String szQuery = 'EXEC sp_helptext '+QuotedStr(storedProcedureName)发布于 2012-02-09 15:07:14
开放DBDiff (referenced 这里)实现了一个GUI,用于比较数据库和生成更新脚本。它还包括一个命令行工具。可以使用项目的内部来生成CREATE语句。
https://stackoverflow.com/questions/1804408
复制相似问题