2013-01-15 98 views
0

我嘗試使用下面的腳本來配置SQL Server作業代理:配置SQL Server作業代理

USE [msdb] 
GO 
CREATE USER [mydbuser] FOR LOGIN [mydbuser] 
GO 
EXEC sp_addrolemember N'db_datareader', N'mydbuser' 
GO 
EXEC sp_addrolemember N'SQLAgentOperatorRole', N'mydbuser' 
GO 
EXEC sp_addrolemember N'SQLAgentReaderRole', N'mydbuser' 
GO 
EXEC sp_addrolemember N'SQLAgentUserRole', N'mydbuser' 
go 
sp_configure 'show advanced options',1 
go 
reconfigure with override 
go 
     sp_configure 'xp_cmdshell',1 
go 
reconfigure with override 
go 
sp_configure 'show advanced options',0 
go 
reconfigure with override 


use master 
go 
GRANT EXECUTE on xp_cmdshell to db_job 
go 

use master 
go 
EXEC sp_xp_cmdshell_proxy_account 'mydomain\db_job', 'password-1' 
go 

CREATE CREDENTIAL [Job3] WITH IDENTITY = N'mydomain\mydomainuser', SECRET =    N'mydomain\mydomainuser' 
GO 

USE [msdb] 
GO 
EXEC msdb.dbo.sp_add_proxy @proxy_name=N'LW_JobRunner',@credential_name=N'Job', 
@enabled=1 
GO 
EXEC msdb.dbo.sp_grant_proxy_to_subsystem @proxy_name=N'LW_JobRunner', @subsystem_id=3 
GO 
EXEC msdb.dbo.sp_grant_login_to_proxy @proxy_name=N'LW_JobRunner',   @login_name=N'mydbuser' 
GO 

/* Setting up job Category */ 

DECLARE @ReturnCode INT 
SELECT @ReturnCode = 0 

EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL',    @name=N'MyJob' 
go 

USE MASTER 
GO 

EXEC master.dbo.xp_sqlagent_proxy_account N'SET', 
    N'DEV',   -- agent_domain_name 
    N'Administrator', -- agent_username 
    N'password'  -- agent_password 

但在執行sp xp_sqlagent_proxy_account的最後一步,說

找不到存儲過程xp_sqlagent_proxy_account。

我相信我執行它的master分貝與sa憑證......

的,因爲這對增加一個工作,我得到這樣

錯誤在sys.servers中找不到服務器'myIpAddress'。確認 指定了正確的服務器名稱。如有必要,執行 存儲過程sp_addlinkedserver將服務器添加到sys.servers中

如何解決此問題?

回答

0

當非系統管理員用戶嘗試執行xp_cmdshell時,通常會發生此錯誤。但是,您要說明您確定您正在使用sa證書在master db中執行。

你可能想嘗試運行此:

-- Enable non-system administrators to run the job and to execute xp_cmdshell. 
EXECUTE msdb..sp_set_sqlagent_properties @sysadmin_only = 0 
GO 

這將允許非SA用戶訪問xp_cmdshell的。如果它可以正常工作,那意味着腳本運行的用戶帳戶是非sa帳戶。

希望這會有所幫助。

拉吉

+0

我收到以下錯誤@@ sysadmin_only標誌通過的SQLAgent不再支持,在這裏只保留向後兼容 – user824910

+0

你是對的。既然你的問題沒有談論SQL版本,我提出了一個通用的建議。我剛纔注意到了SQL 2008標籤。抱歉 – Raj