2012-03-15 69 views
1

我想用SupportPac MA01的Q程序在兩個不同的隊列之間移動消息。它在Windows盒子上沒有任何問題。MQ支持pac MA01-Q程序

我試圖在AIX上運行此框,並收到2035 - 未授權錯誤消息。

我指定的標誌-u <userid>當我執行復制命令,但它一直聲稱

MQOPEN on Object 'queue name' returned 2035 Not authorized.. 

我的命令行看起來像下面這樣:

用戶<myuserid>確實有relavent從隊列中讀取和寫入的權限。

欣賞任何指針或幫助。

+0

什麼平臺是QMgrs的源和目標?據推測,Windows也是如此? QMgrs的WMQ版本是什麼? – 2012-03-15 17:21:45

+0

Rob,兩個QMgrs都在相同的AIX機器上運行。當Q程序運行時,它會顯示「用戶ID改爲:''暗示使用-u標誌是正確的。我猜測它是在windows系統上運行的,因爲我以Windows管理員身份登錄。甚至沒有在Windows機器上的mqm組的一部分,所以我現在有點難以忍受 – Manglu 2012-03-15 22:47:24

回答

1

在Q程序中,-U參數設置消息中的用戶標識,但不是用於連接到QMgr的ID。如果您在Windows盒子上連接時查看隊列上的連接手柄,則會看到與手柄關聯的ID是您的登錄ID,而不是myuserid。但是,郵件的MQMD.UserID包含myuseridPUT

當您使用管理權限時,將自動授予此授權。在這種情況下,您提到在Windows上以管理員身份登錄,允許該選項。如果在AIX上沒有使用mqm組中的ID,則需要明確授予+setid權限才能使用-U選項。例如,假定myuserid屬於mygroup。爲了使-U選擇工作,你需要做的是:

# +setid must be granted at both the QMgr *and* the queue 
setmqaut -m TargetQMgr -t qmgr -g mygroup +connect +inq +setid 
setmqaut -m TargetQMgr -n DestinationQueue -t queue -g mygroup +put +inq +setid 

注意+setid只適用於放置消息並沒有得到他們。但是,由於Q程序可能會在連接到第一個QMgr時指定setID選項,因此您看到的錯誤可能會在此處生成。如果是這樣的話,運行源QMGR相同的命令:

# +setid must be granted at both the QMgr *and* the queue 
setmqaut -m SourceQMgr -t qmgr -g mygroup +connect +inq +setid 
setmqaut -m SourceQMgr -n SourceQueue -t queue -g mygroup +browse +get +inq +setid 

僅供參考,請參閱用於Q程序的幫助其中規定:

-U  Sets the user ID in the message. 

...和信息中心部分在Granting authority to set context

順便說一句,我找不到-u(小寫)選項,所以我假設它只是在您的文章中輸入錯誤,而您實際上使用的是-U。當我在我的工作站上嘗試時,該選項會生成所需的消息。

+0

Rob,-u(小寫)和-U(大寫)似乎都可以工作,無論是哪種情況,應用程序都會將用戶標識更改爲'所以我猜這兩個都是有效的選項。 – Manglu 2012-03-20 23:26:40

+0

D'oh!我甚至都沒有想過去嘗試。今天再學習一些新的東西。謝謝! – 2012-03-21 01:15:09