2014-06-11 2 views
0

저장 프로 시저에서 패키지를 실행하는 데 문제가 있습니다.저장 프로 시저에서 dtsx 실행

  • packageIdsourcePath[string] 일부 열
  • 입니다

    1. 3 사용자 변수 packageId[INT], connectionString[string]로 패키지를 만듭니다 다음과 같이

      Microsoft (R) SQL Server Execute Package Utility Version 11.0.2100.60 for 64-bit Copyright (C) Microsoft Corporation. All rights reserved. NULL Started: 09:47:51 Error: 2014-06-11 09:47:51.34 Code: 0xC0011007 Source: {4B0EFACA-9BE8-4E0B-AEF7-A1453AF75271}
      Description: Unable to load the package as XML because of package does not have a valid XML format. A specific XML parser error will be posted. End Error Error: 2014-06-11 09:47:51.34 Code: 0xC0011002
      Source: {4B0EFACA-9BE8-4E0B-AEF7-A1453AF75271} Description: Failed to open package file "\server\path\Package.dtsx" due to error 0x80070005 "Access is denied.". This occurs when loading a package and the file cannot be opened or loaded correctly into the XML document. This c an be the result of specifying an incorrect file name when calling LoadPackage or the specified XML file has an incorrect format. End Error Could not load package "\server\path\Package.dtsx" because of error 0xC0011002. Description: Failed to open package file "\server\Package.dtsx" due to error 0x80070005 "Access is denied.". This occurs when loading a package and the file cannot be opened or loaded correctly into the XML document. This can be the result of specifying an incorrect file name when calling LoadPackage or the specified XML file has an incorrect format. Source: {4B0EFACA-9BE8-4E0B-AEF7-A1453AF75271} Started: 09:47:51 Finished: 09:47:51 Elapsed: 0.047 seconds NULL

      단계는 다음과 같습니다 작업이 완료되면, 나는 오류

    2. connectionString 조회, 대상 소스에서 사용 - define

      (영향 1 행 (들)) '패키지'시작
      작업 : 표현에

    3. sourcePathCSV
  • 테이블 변수에 삽입 프로 시저를 작성 파일을 시작하는 작업
    예를 실행하다 성공적으로

  • 작업을 만들기

  • 내 쿼리 :

    DECLARE @ConnectionString VARCHAR(1000) 
    DECLARE @PackageId INT 
    DECLARE @DataName NVARCHAR(2000) 
    DECLARE @DtsxName NVARCHAR(200) 
    DECLARE @PackagePath NVARCHAR(200) 
    DECLARE @DataPath NVARCHAR(200) 
    SELECT @DtsxName = 'TemporaryPackage' 
    SELECT @PackagePath = '\\server\path\' 
    SELECT @DataPath = '\\server\path\Data\' 
    
    IF EXISTS (SELECT * FROM PackageImport p WHERE p.dtsxName = @DtsxName AND p.startImport IS NULL) 
    BEGIN 
    SELECT @ConnectionString = p.connectionString, @PackageId = p.packageId, @DataName = p.sourcePath 
    FROM PackageImport p WHERE p.dtsxName = @DtsxName AND p.startImport IS NULL 
    END 
    
    DECLARE @SQLQuery AS VARCHAR(2000) 
    SET @SQLQuery = 'DTExec.exe /FILE "\"' + @PackagePath + @DtsxName + '.dtsx\""' 
    + ' /SET \Package.Variables[User::ConnectionString].Properties[Value];"\"'+ @ConnectionString + '\""' 
    + ' /SET \Package.Variables[User::PackageId].Properties[Value];"\"'+ CAST(@PackageId as varchar(10)) + '\""' 
    + ' /SET \Package.Variables[User::SourcePath].Properties[Value];"\"'+ @DataPath + @DataName + '\""' 
    
    UPDATE dbo.PackageImport 
    SET [startImport]=GETDATE() 
    WHERE [packageId][email protected] AND [dtsxName] = @DtsxName AND [startImport] IS NULL 
    
    -- import 
    DECLARE @result INT 
    DECLARE @output TABLE([ssisOutput] varchar(max)) 
    INSERT INTO @output 
    
    EXEC @result = master..xp_cmdshell @SQLQuery 
    
    INSERT INTO PackageHistory(packageId, history) 
    SELECT @PackageId, ssisOutput FROM @output o 
    UPDATE dbo.PackageImport 
    SET [stopImport]=GETDATE() 
    WHERE [packageId][email protected] AND [dtsxName] = @DtsxName AND [stopImport] IS NULL 
    GO 
    

    소유자 작업이 SQLSERVERAGENT이며 서버 \ 경로를 \ 수있는 권한이 읽기/쓰기가

    사람이 문제가 무엇인지 알고 있나요 도와 드릴까요?

    답변

    0

    이 패키지 : \ server \ path \ Package.dtsx가 SQL Agent에서 실행중인 서버가 아닌 다른 서버에 저장되어있는 경우 이중 홉 문제가 발생할 수 있습니다. 어쨌든 프록시를 사용하는 것이 좋습니다. 여기에 대한 정보가 있습니다. http://technet.microsoft.com/en-us/library/dd440761(v=sql.100).aspx

    +0

    패키지는 로컬 서버의 C : \ path 폴더에 저장되며이 폴더는 SQLSERVERAGENT 사용자를 위해 공유됩니다. Windows 인증 및 오류에 로그온하는 다른 사용자와 동일한 시도가 실행됩니다. 경로를 \\ server \ path에서 C : \ path로 변경해보십시오. 도움이되지 않았습니다. – user3729046

    +0

    "액세스가 거부되었습니다"오류는 지정된 경로에 문제가 있음을 나타내는 오류입니다.T-SQL을 통해 이것을 호출하기 때문에 아마도 SQL 에이전트가 아닌 사용 권한 문제가있는 SQL Server 서비스 계정 일 것입니다. –

    0

    나는 단지 해결책을 찾았습니다. I 가변 SELECT @PackagePath = '\ 서버 \ 경로 \' SELECT @DataPath = 변경 '\ 서버 \ 경로 \ 데이터 \'

    SELECT @PackagePath = 'C : \'SELECT @ DataPath = 'C : \'

    나는 최선의 해결책이 아니라는 것을 알고 있지만 sql_serveragent에 대한 변경 권한을 시도했지만 여전히 문제가 발생했습니다.

    0

    다른 해결책을 찾았습니다. C : \ Program Files \ Microsoft SQL Server \ 110 \ DTS \ Packages 내 패키지 및 데이터 파일을 지정하기위한 폴더를 만들고 READ시 그룹 Users에 대한 권한을 변경하고 작동합니다.

    관련 문제