2013-05-14 98 views
2

我有一個SSIS包我可以導入到集成服務我的服務器上,並沒有問題運行。它所做的只是將文件從網絡上的目錄複製到正在運行的服務器上。作爲SQL Server代理作業運行SSIS包不會複製文件?

當我執行SQL代理工作,它說的作業成功運行,但沒有文件被複制。我確認源位置中存在文件,並且存在目標路徑。我也使用絕對路徑(沒有映射驅動器)。

爲什麼它不復制任何文件,當我運行它作爲SQL代理作業?

僅供參考 - 源目錄實際上是在UNIX系統中,並以一個驅動器,你必須輸入用戶名/密碼組合位置地圖。

我有一個SQL代理工作運行作爲NT SERVICE \ SQLSERVERAGENT,這是不是有權在UNIX系統中,用戶的感覺。有沒有辦法以特定用戶身份運行SQL作業?

在此先感謝。

回答

5

您需要create a CredentialSQL Agent Proxy,然後assign the proxy account to the SQL Agent job step。代理賬戶specific to each subsysteme.g PowerShell中的CmdExec,SSIS等

-- creating credential 
USE [master] 
GO 
CREATE CREDENTIAL [Superuser] WITH IDENTITY = N'DOMAIN\account', SECRET = N'mypassword' 
GO 

-- creating proxy for CmdExec subsystem, adding principal 
USE [msdb] 
GO 
EXEC msdb.dbo.sp_add_proxy @proxy_name=N'My custom proxy',@credential_name=N'Superuser', 
     @enabled=1 
GO 
EXEC msdb.dbo.sp_grant_proxy_to_subsystem @proxy_name=N'My custom proxy', @subsystem_id=3 
GO 
EXEC msdb.dbo.sp_grant_login_to_proxy @proxy_name=N'My custom proxy', @fixed_server_role=N'sysadmin' 
GO 

-- assigning job step to run as a given proxy user 
USE [msdb] 
GO 
EXEC msdb.dbo.sp_update_jobstep @job_id=N'0df2dac2-4754-46cd-b0bf-05ef65e1f87e', @step_id=1 , @subsystem=N'CmdExec', 
    @proxy_name=N'My custom proxy' 
GO 
+0

感謝。就在看到這個之前,我意識到我必須這樣做。我通過SSMS做到了。我使用DOMAIN \ Administrator的身份創建了一個新憑據。然後使用具有SSIS包執行的憑證的新代理作爲子系統。我爲代理添加的原則是NT SERVICE \ SQLSERVERAGENT和NT SERVICE \ MSSQLSERVER。我將工作步驟更新爲「Run As」作爲新代理。我運行該軟件包,但仍然沒有文件被複制,也沒有引發錯誤。我想我不確定證件身份應該是什麼或代理原則應該是什麼。他們看起來是否正確?謝謝。 – BBauer42 2013-05-14 14:46:27

+1

沒關係。我得到它的工作!我必須在服務器上創建一個本地用戶帳戶,使用與用於映射網絡驅動器的相同用戶/傳遞組合。然後我用它作爲憑證的身份,並將作業複製到文件中!再次感謝!! – BBauer42 2013-05-14 15:09:25

相關問題