0

我有一种情况,我需要每天将存储过程从一台服务器复制到另一台服务器。我不能使用传输 SQL 对象任务,因为这些服务器没有链接。我正在寻找一种解决方案,例如将过程导出到文本文件并从文本文件导入到目的地。谁能帮我这个?我希望通过 SSIS 完成这项工作,因为我已经有一个包每天在这两个服务器之间转换数据。

4

2 回答 2

1
  1. 使用 SQL Server Management Studio 登录到服务器 A。
  2. 在左侧树中找到存储过程,右键生成CREATE脚本
  3. 在目标数据库中运行脚本
于 2013-04-12T09:00:08.557 回答
0

我认为我们可以这样做:

  1. 执行 SQL 任务:使用 ADO.NET 运行“sp_helptext YourSPName”(它将存储过程的定义作为单列表结果返回)。将“完整结果集”保存到对象类型变量,例如“结果集”。

  2. 脚本任务:以只读方式传入“ResultSet”。创建另一个变量,比如“SPConent”类型的字符串,作为读写传递。在脚本内部,使用以下代码将存储过程定义重新组装为字符串

    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;
    }
    
  3. 执行 SQL 任务:删除目标数据库中的存储过程。

  4. 执行 SQL 任务:从“SPContent”对目标数据库运行 sql 命令。

于 2013-04-16T10:24:38.370 回答