저장 프로 시저에서 패키지를 실행하는 데 문제가 있습니다.저장 프로 시저에서 dtsx 실행
packageId
sourcePath[string]
일부 열 입니다
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단계는 다음과 같습니다 작업이 완료되면, 나는 오류
connectionString
조회, 대상 소스에서 사용 - define(영향 1 행 (들)) '패키지'시작
작업 : 표현에sourcePath
는CSV
테이블 변수에 삽입 프로 시저를 작성 파일을 시작하는 작업
예를 실행하다 성공적으로
작업을 만들기
내 쿼리 :
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이며 서버 \ 경로를 \ 수있는 권한이 읽기/쓰기가
사람이 문제가 무엇인지 알고 있나요 도와 드릴까요?
패키지는 로컬 서버의 C : \ path 폴더에 저장되며이 폴더는 SQLSERVERAGENT 사용자를 위해 공유됩니다. Windows 인증 및 오류에 로그온하는 다른 사용자와 동일한 시도가 실행됩니다. 경로를 \\ server \ path에서 C : \ path로 변경해보십시오. 도움이되지 않았습니다. – user3729046
"액세스가 거부되었습니다"오류는 지정된 경로에 문제가 있음을 나타내는 오류입니다.T-SQL을 통해 이것을 호출하기 때문에 아마도 SQL 에이전트가 아닌 사용 권한 문제가있는 SQL Server 서비스 계정 일 것입니다. –