zoukankan      html  css  js  c++  java
  • SQL Server Integration Services C#脚本任务示例 先看前二部分

    Getting started

    Step 1 - In this example, we are going to create a package programmatically and copy a file from a source to a destination folder. To understand the program, we are going to do the process visually and then programmatically.

    Step 2 - In order to start, drag and drop the File System Task.

    File System Task

    Step 3 - Double click on the task and specify the following properties. The File System Task will copy the db1_test.bak backup to the scriptdestination folder.

    File system task

    Step 4 - In order to test it, execute the task.

    execute the File System Task

    Step 5 - You can now see that the destination file was copied successfully.

    Files copied

    Step 6 - The next step is to do the same thing using code in the Script Task. Drag and drop the script task.

     
    The script task

    Step 7 - In the script reference, add the Microsoft.SqlServer.FileSystemTask.

    Adding references

    Step 8 - In the namespaces region, add this line of code:

    using Microsoft.SqlServer.Dts.Tasks.FileSystemTask; 
    

    Step 9 - Write the following code.

    try 
    {
    // TODO: Add your code here
    
    // Source file
    String sourcePath = @"C:scriptsdb1_test.bak"; 
    
    // Destination folder
    String destinationPath = @"C:scriptsdestination";
    
    //Create a package
    Package myPackage = new Package();
    
    //Add the filesystemtask to the package
    Executable myExecutable = myPackage.Executables.Add("STOCK:FileSystemTask");
    
    //Adding the Taskhost and associating with the FileSystemTask 
    TaskHost myTaskHost = myExecutable as TaskHost;
    
    //Setting to false the option to use variables for the source and destination paths
    myTaskHost.Properties["IsSourcePathVariable"].SetValue(myTaskHost, false);
    myTaskHost.Properties["IsDestinationPathVariable"].SetValue(myTaskHost, false);
    
    //Create a connection file
    ConnectionManager myConnection = myPackage.Connections.Add("FILE");
    
    //Specification of the Name and the connection 
    myConnection.Name = "db1_test.bak;
    myConnection.ConnectionString = sourcePath;
    
    //Specification of the use of the source file and setting the values
    myConnection.Properties["FileUsageType"].SetValue(myConnection, DTSFileConnectionUsageType.FileExists);
    myTaskHost.Properties["Source"].SetValue(myTaskHost, myConnection.Name);
    
    //Specification of the Name and the destination connection 
    ConnectionManager myDestConnection = myPackage.Connections.Add("FILE");
    myDestConnection.Name = "scriptsdestination";
    myDestConnection.ConnectionString = destinationPath;
    
    //Specification of the use of the folder path and setting the values
    myDestConnection.Properties["FileUsageType"].SetValue(myDestConnection, DTSFileConnectionUsageType.FolderExists);
    myTaskHost.Properties["Destination"].SetValue(myTaskHost, myDestConnection.Name);
    
    //Specify the copy file operation
    myTaskHost.Properties["Operation"].SetValue(myTaskHost, DTSFileSystemOperation.CopyFile);
    myTaskHost.Properties["OperationName"].SetValue(myTaskHost, "Copy File");
    
    //Overwrite the file if it already exists
    myTaskHost.Properties["OverwriteDestinationFile"].SetValue(myTaskHost, true);
    DTSExecResult result = myPackage.Execute();
    Dts.TaskResult = (int)ScriptResults.Success;
    }
    
    // Showing the error message
    catch (Exception ex)
    {
    Dts.Events.FireError(18, "The process failed", ex.ToString(), "", 0);
    Dts.TaskResult = (int)ScriptResults.Failure;
    } 
    

    Step 10 - To understand this code, we are going to explain it comparing with the File System Task created visually. The sourcePath specifies the source connection to be used.

    String sourcePath = @"C:scriptsdb1_test.bak"; 
    

    When we specify the source connection, we need to specify the path of the file to copy.

    File system source connection

    When you create a connection, it is necessary to specify the path.

     
    File Connection Manager

    Step 11 - The next line of code is used to define the destination.

    String destinationPath = @"C:scriptsdestination 
    

    This is the path used to define the destination folder of the file to be copied.

    destination connection

    Step 12 - In the example, we will use the scriptdestination folder.

    File Connecion Manager

    Step 13 - The following line of code creates a package. The package is the container of all the tasks, connections, flows and configuration.

    //Create a package
    Package myPackage = new Package(); 
    
    new ssis package created

    Step 14 - The next lines add the FileSystem Task to the package. The TaskHost is used to set the properties of a task.

    //Add the filesystemtask to the package
    Executable myExecutable = myPackage.Executables.Add("STOCK:FileSystemTask");
    //Adding the Taskhost and associating with the FileSystemTask
    TaskHost myTaskHost = myExecutable as TaskHost; 
    
    Adding the file system task

    Step 15 - You can specify the connections creating a path or using variables. In this example, we are not using variables, so the value is false.

    //Setting to false the option to use variables for the source and destination paths
    myTaskHost.Properties["IsSourcePathVariable"].SetValue(myTaskHost, false);
    myTaskHost.Properties["IsDestinationPathVariable"].SetValue(myTaskHost, false);
    
    Use of variables set to false

    Step 16 - The following lines of code create a file connection. This is done by default when you select a path visually in steps 10 and 11. In code, you need to specify the connection name and specify the source path. If you go to the Connection Manager, you can see that the connection are created automatically.

    //Create a connection file
    ConnectionManager myConnection = myPackage.Connections.Add("FILE");
    //Specification of the Name and the connection
    myConnection.Name = "db1_test.bak";
    myConnection.ConnectionString = sourcePath;
    
    Connection Managers

    Step 17 - The FileUsageType is used to verify if the File Exists or it needs to be created. In this case, the File exists. The other line of code related to myTaskHost is to set the values of step 16.

    //Specification of the use of the source file and setting the values
    myConnection.Properties["FileUsageType"].SetValue(myConnection,
    DTSFileConnectionUsageType.FileExists);
    myTaskHost.Properties["Source"].SetValue(myTaskHost, myConnection.Name);
    
    Connection created

    Step 18 - These lines of code are similar to the ones on step 16, but for the destination file. We are creating a connection in the connection manager with the destination folder.

    //Specification of the Name and the destination connection
    ConnectionManager myDestConnection = myPackage.Connections.Add("FILE");
    myDestConnection.Name = "scriptsdestination";
    myDestConnection.ConnectionString = destinationPath;
    

    Step 19 - The next option is to define if the folder exists or needs to be created and finally, set the connection values of step 18.

    //Specification of the use of the folder path and setting the values
    myDestConnection.Properties["FileUsageType"].SetValue(myDestConnection,
    DTSFileConnectionUsageType.FolderExists);
    myTaskHost.Properties["Destination"].SetValue(myTaskHost, myDestConnection.Name);
    
    destination path

    Step 20 - The Operation specifies if the files will be copied. You can move, delete, change the attributes or rename the file.

    //Specify the copy file operation
    myTaskHost.Properties["Operation"].SetValue(myTaskHost,
    DTSFileSystemOperation.CopyFile);
    myTaskHost.Properties["OperationName"].SetValue(myTaskHost, "Copy File");
    
    File System operation

    Step 21 - The overwritedestination file property is used to overwrite the file if it already exists.

    //Overwrite the file if it already exists
    myTaskHost.Properties["OverwriteDestinationFile"].SetValue(myTaskHost, true);
    
    Overwrite destination file property

    Step 22 - Finally, we execute the package and if everything is all right, a successful message is displayed.

    DTSExecResult result = myPackage.Execute();
    Dts.TaskResult = (int)ScriptResults.Success;
    
    Executing the package

    Conclusion

    Writing a SSIS package using code is not so easy, but with this tip I think it will be easier. I hope you understand the tip. If not, feel free to write your questions and comments below.

  • 相关阅读:
    开源blog搬家工具
    嵌入式语言Lua
    ChangeMan Version Manager Workstation 8.1 command line quick check in/out
    Mssql合并列值(三个关系表合并)
    心得——学习中做笔记应该做到哪
    MFC Dialog 透明渐变
    【转】SSDT&Shadow Hook的实现,完整代码。可编译
    ssdt 表结构及hook的一般理解
    <转>ssdt hook 源码
    【转】_declspec(naked) 使用
  • 原文地址:https://www.cnblogs.com/Javi/p/13277639.html
Copyright © 2011-2022 走看看