示例#1
0
        private void AddConnection(ConnectionConfiguration connectionConfiguration)
        {
            if (SsisPackage.CurrentPackage.DTSPackage.Connections.Contains(connectionConfiguration.Name))
            {
                MessageEngine.Global.Trace(Severity.Alert, Resources.ConnectionNameConflicts, connectionConfiguration.Name);
                _connectionManager = SsisPackage.CurrentPackage.DTSPackage.Connections[connectionConfiguration.Name];
            }
            else
            {
                _connectionManager = SsisPackage.CurrentPackage.DTSPackage.Connections.Add(connectionConfiguration.Type);
                _connectionManager.Name = connectionConfiguration.Name;

                switch (connectionConfiguration.Type)
                {
                    case "OLEDB":
                        string connectionString = connectionConfiguration.ConnectionString;
                        SetProperty("RetainSameConnection", connectionConfiguration.RetainSameConnection);
                        SetProperty("ConnectionString", connectionString);
                        break;
                    case "FILE":
                        SetExpression("ConnectionString", connectionConfiguration.ConnectionString);
                        break;
                    default:
                        MessageEngine.Global.Trace(Severity.Error, Resources.ConnectionTypeNotImplemented, connectionConfiguration.Type);
                        break;
                }
            }
        }
示例#2
0
        private void Initialize(ExecutePackageTask execPackage)
        {
            string expression;

            if (Path.IsPathRooted(execPackage.RelativePath))
            {
                expression = String.Format("\"{0}\"", execPackage.RelativePath);
            }
            else
            {
                expression = SSISExpressionPathBuilder.BuildExpressionPath
                    (
                    Context.Package.PackageRelativeDirectory 
                    + Path.DirectorySeparatorChar 
                    + execPackage.RelativePath
                    );
            }

            string name = execPackage.RelativePath.Replace(Path.DirectorySeparatorChar, '_');
            name = name.Replace('.', '_');
            _execPackageTaskHost.Name = name + Guid.NewGuid().ToString();

            ConnectionConfiguration config = new ConnectionConfiguration();
            config.Name = name;
            config.Type = "FILE";
            config.ConnectionString = expression;

            SsisConnection connection = new SsisConnection(config);
            
            SSISTask.Connection = connection.ConnectionManager.Name;
        }
示例#3
0
        public SSISEmitterContext Emit()
        {
            SetResultSetType(_logicalExecuteSQL.ResultSet);

            switch (_logicalExecuteSQL.Type.ToUpper(System.Globalization.CultureInfo.InvariantCulture))
            {
                case "EXPRESSION":
                    SSISTask.SqlStatementSource = Resources.Placeholder;
                    SetExpression("SqlStatementSource", _logicalExecuteSQL.Body);
                    break;
                default: // case "FILE":
                    //TODO: solve the name conflicts if necessary.
                    string sqlFilePath;
                    string sqlFileRelativePath;
                    ConnectionConfiguration config = new ConnectionConfiguration();
                    config.Name = Name;
                    config.Type = "FILE";
                    WriteSQLToFile(_logicalExecuteSQL.Body, out sqlFilePath, out sqlFileRelativePath);
                    config.ConnectionString = SSISExpressionPathBuilder.BuildExpressionPath(sqlFileRelativePath);
                    
                    SsisConnection connection = new SsisConnection(config);
                    SSISTask.SqlStatementSource = connection.ConnectionManager.Name;
                    Context.Package.ProjectManager.MiscFiles.Add(Name + Resources.ExtensionSQLFile);
                    break;

            }

            int index = 0;
            foreach (ExecuteSQLParameter param in _logicalExecuteSQL.ParameterList)
            {
                BindParameter(new SsisVariable(param.Variable, Context).DTSVariable, param.Direction, index.ToString(), (int)param.OleDbType, 255);
                index++;
            }
            
            foreach (ExecuteSQLResult executeSQLResult in _logicalExecuteSQL.ResultList)
            {
                BindResult(executeSQLResult.Name, executeSQLResult.VariableName);
            }
            
            ExecuteSQLTask(_logicalExecuteSQL.ExecuteDuringDesignTime);

            return _context;
        }
示例#4
0
 // Create a new connection or get an existing connection
 public SsisConnection(ConnectionConfiguration connectionConfiguration)
 {
     AddConnection(connectionConfiguration);
 }
 public static ConnectionConfiguration Lower(this AstConnection.AstConnectionNode astNode)
 {
     if (astNode.AsClassOnly)
     {
         return null;
     }
     try
     {
         ConnectionConfiguration physicalConnection = new ConnectionConfiguration();
         physicalConnection.Name = astNode.Name;
         physicalConnection.ConnectionString = astNode.ConnectionString;
         physicalConnection.RetainSameConnection = astNode.RetainSameConnection;
         physicalConnection.Type = astNode.Type.ToString();
         physicalConnection.Parent = _CurrentPackage;
         return physicalConnection;
     }
     catch (Exception e)
     {
         throw new SSISEmitterException(astNode, e);
     }
 }
 private static void AddConnection(ConnectionConfiguration connectionConfiguration)
 {
     if (connectionConfiguration != null)
     {
         if (!_CurrentPackage.ConnectionConfigurationList.Contains(connectionConfiguration))
         {
             _CurrentPackage.ConnectionConfigurationList.Add(connectionConfiguration);
         }
     }
 }
示例#7
0
 public bool Equals(ConnectionConfiguration connectionNode)
 {
     return(this.Name.Equals(connectionNode.Name));
 }
 public SsisConnectionConfiguration(ConnectionConfiguration connection, SSISEmitterContext context)
 {
     this._name = connection.Name;
     this._connectionString = connection.ConnectionString;
     this._context = context;
 }
示例#9
0
文件: Connection.cs 项目: japj/vulcan
 public bool Equals(ConnectionConfiguration connectionNode)
 {
     return this.Name.Equals(connectionNode.Name);
 }