我有一种情况需要每天将存储过程从一台服务器复制到另一台服务器。我不能使用Transfer SQL对象任务,因为这些服务器没有链接。我正在寻找一个类似的解决方案,将过程导出到文本文件并从文本文件导入到目标。谁能帮我这个? 我希望通过SSIS完成这项工作,因为我已经拥有一个每天在这两个服务器之间转换数据的软件包。
答案 0 :(得分:1)
答案 1 :(得分:0)
我认为我们可以这样做:
执行SQL任务:使用ADO.NET运行“sp_helptext YourSPName”(它将存储过程的定义作为单个列表结果返回)。将“完整结果集”保存到对象类型变量,例如“ResultSet”。
脚本任务:以“只读”方式传入“ResultSet”。创建另一个变量,比如说“SPConent”类型的String,作为readwrite传入。在脚本内部,使用以下代码将存储过程定义重新组合为字符串
public void Main()
{
// TODO: Add your code here
var table = ((DataSet) Dts.Variables["ResultSet"].Value).Tables[0];
string spContent = "";
foreach (DataRow row in table.Rows)
{
spContent += row[0];
}
Dts.Variables["SPContent"].Value = spContent;
Dts.TaskResult = (int)ScriptResults.Success;
}
执行SQL任务:删除目标数据库中的存储过程。
执行SQL任务:从“SPContent”对目标数据库运行sql命令。