Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 将配置参数与从commanline传递的参数组合_Sql Server 2005_Configuration_Ssis - Fatal编程技术网

Sql server 2005 将配置参数与从commanline传递的参数组合

Sql server 2005 将配置参数与从commanline传递的参数组合,sql-server-2005,configuration,ssis,Sql Server 2005,Configuration,Ssis,我创建了一个SSIS包,可以将文件导入到表中(非常简单)。 我在配置文件中设置了一些变量,如服务器、数据库、导入文件夹。在运行时,我希望传递文件名。这是通过使用dtexec的存储过程完成的。通过configfile设置参数时,在过程中设置所有参数并使用\Set语句传递这些参数时也可以正常工作(见下文)。当我尝试将配置版本与设置参数动态组合时,我在引用设计时设置的配置文件路径时出错 有没有人遇到过这个问题并找到了解决办法 问候弗雷德里克 DECLARE @SSISSTR VA

我创建了一个SSIS包,可以将文件导入到表中(非常简单)。 我在配置文件中设置了一些变量,如服务器、数据库、导入文件夹。在运行时,我希望传递文件名。这是通过使用dtexec的存储过程完成的。通过configfile设置参数时,在过程中设置所有参数并使用\Set语句传递这些参数时也可以正常工作(见下文)。当我尝试将配置版本与设置参数动态组合时,我在引用设计时设置的配置文件路径时出错

有没有人遇到过这个问题并找到了解决办法

问候弗雷德里克

DECLARE @SSISSTR            VARCHAR(8000),
        @DataBaseServer     VARCHAR(100),
        @DataBaseName       VARCHAR(100),
        @PackageFilePath    VARCHAR(200),
        @ImportFolder       VARCHAR(200),
        @HandledFolder      VARCHAR(200),
        @ConfigFilePath     VARCHAR(200),
        @SSISreturncode     INT;

/* DEBUGGING
    DECLARE  @FileName VARCHAR(100),
             @SelectionId INT
    SET @FileName = 'Test.csv';
    SET @SelectionId = 366; 
*/  
SET @PackageFilePath = '/FILE "Y:\SSIS\Packages\PostalCodeSelectionImport\ImportPackage.dtsx" ';
SET @DataBaseServer = 'STOSWVUTVDB01\DEV_BSE';
SET @DataBaseName = 'BSE_ODR';
SET @ImportFolder = '\\Stoswvutvbse01\Application\FileLoadArea\ODR\\';
SET @HandledFolder = '\\Stoswvutvbse01\Application\FileLoadArea\ODR\Handled\\';
--SET @ConfigFilePath =  '/CONFIGFILE "Y:\SSIS\Packages\PostalCodeSelectionImport\Configuration\DEV_BSE.dtsConfig" ';

----now making "dtexec" SQL from dynamic values
SET @SSISSTR = 'DTEXEC ' + @PackageFilePath;    -- + @ConfigFilePath;
SET @SSISSTR = @SSISSTR + ' /SET \Package.Variables[User::SelectionId].Properties[Value];' + CAST( @SelectionId AS VARCHAR(12));    
SET @SSISSTR = @SSISSTR + ' /SET \Package.Variables[User::DataBaseServer].Properties[Value];"' + @DataBaseServer + '"';
SET @SSISSTR = @SSISSTR + ' /SET \Package.Variables[User::ImportFolder].Properties[Value];"' + @ImportFolder + '" ';
SET @SSISSTR = @SSISSTR + ' /SET \Package.Variables[User::DataBaseName].Properties[Value];"' + @DataBaseName + '" ';
SET @SSISSTR = @SSISSTR + ' /SET \Package.Variables[User::ImportFileName].Properties[Value];"' + @FileName + '" ';  
SET @SSISSTR = @SSISSTR + ' /SET \Package.Variables[User::HandledFolder].Properties[Value];"' + @HandledFolder + '" ';   

-- Now execute dynamic SQL by using EXEC.       
    EXEC @SSISreturncode = xp_cmdshell @SSISSTR;    

假设在您的配置文件中设置了除User::ImportFileName之外的所有变量,则以下操作应有效:

DECLARE @SSISSTR            VARCHAR(8000),
        @PackageFilePath    VARCHAR(200),  
        @ConfigFilePath     VARCHAR(200), 
        @SSISreturncode     INT; 
        @FileName           VARCHAR(100)

SET @FileName = 'Test.csv'; 
SET @PackageFilePath = '/FILE "Y:\SSIS\Packages\PostalCodeSelectionImport\ImportPackage.dtsx" '; 
SET @ConfigFilePath =  '/CONFIGFILE "Y:\SSIS\Packages\PostalCodeSelectionImport\Configuration\DEV_BSE.dtsConfig" '; 

--now making "dtexec" SQL from dynamic values 
SET @SSISSTR = 'DTEXEC ' + @PackageFilePath + @ConfigFilePath; 
SET @SSISSTR = @SSISSTR + '/SET "\Package.Variables[User::ImportFileName].Properties[Value]";"' + @FileName + '" ';   

-- Now execute dynamic SQL by using EXEC.        
    EXEC @SSISreturncode = xp_cmdshell @SSISSTR;   
与代码的区别是:

  • 我的代码没有为配置文件中设置的变量设置值
  • 字符串“\Package.Variables[User::ImportFileName].Properties[Value]”在我的版本中被引用