我想为数据库对象生成脚本,例如
- 表
- 意见
- 存储过程
- 功能
自从:
未安装在全新安装的:
- 视窗
- 视窗
- Windows 7的
它们也不是可再分发的,它们不是一种选择(它将在客户的机器上运行)。
(编辑:从今天开始,看起来 SMO 实际上是可再分发的。)
是否有任何源代码可以将系统表中的SELECT转换为相关脚本?
我将从编写存储过程、视图、触发器或用户定义函数的伪代码开始:
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;
}
编辑:感谢serviceharvest316指出sp_helptext
。这就是为什么我有一个将这些东西抽象出来的类。