【问题标题】:Using SMO Library in SSIS 2008在 SSIS 2008 中使用 SMO 库
【发布时间】:2012-03-06 20:28:05
【问题描述】:

下午好,

我在编写一个使用 C# 中的 SMO 对象来验证对象是否存在然后创建它的简单脚本时遇到了一些麻烦。此代码位于 SSIS 的脚本任务组件中。代码成功执行,但是新数据库未显示在我的本地实例上。任何帮助将不胜感激。

using System;
using System.Data;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
using System.Collections;
using System.Data.SqlClient;
using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Smo;

        public void Main()
        {
            //String DBName = Dts.Variables["TmpViewDBName"].Value.ToString();
            //String Instance = Dts.Variables["TmpViewDBInstance"].Value.ToString();

            String DBName = "localhost";
            String Instance = "TmpViewDB";

            Server TmpViewServer = new Server(Instance);

            //Windows Auth
            TmpViewServer.ConnectionContext.LoginSecure = true;
            TmpViewServer.ConnectionContext.Connect();

            if (TmpViewServer.Databases[DBName] != null)
            {
                TmpViewServer.Databases[DBName].Drop();
            }

            Database TmpViewDB = new Database(TmpViewServer, DBName);

            if (TmpViewServer.ConnectionContext.IsOpen)

                    TmpViewServer.ConnectionContext.Disconnect();

            Dts.TaskResult = (int)ScriptResults.Success;
        }

【问题讨论】:

    标签: sql sql-server ssis smo script-component


    【解决方案1】:

    我相信您需要添加一行来实际创建对象。就目前而言,您只是实例化了对象,但从未真正调用数据库来创建远程对象。

        Database TmpViewDB = new Database(TmpViewServer, DBName);
        TmpViewDB.Create();
    

    【讨论】:

    • 哇,我觉得自己很愚蠢 :) 很抱歉浪费了您的时间(以及我自己的时间)。
    • 别担心,把问题留在那里,以防其他人遇到类似问题。上周通过 SMO 创建代理工作时遇到了类似的情况,所以我知道这种感觉。如果您发现此答案有帮助,请单击它旁边的向上箭头。如果它解决了您的问题,请单击绿色复选标记的轮廓。欢迎来到 SO。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多