2013-07-18 1 views
6

के साथ वीबीए से एसएएस चलाएं मुझे उम्मीद है कि कोई मदद कर सकता है। मैं वीबीए से एसएएस लॉन्च करने के लिए एक सबराउटिन बनाने की कोशिश कर रहा हूं। मैं एसएएस वर्कस्पेस मैनेजर के साथ ऐसा कर रहा हूं। चूंकि मैं अपने आराम क्षेत्र से बहुत दूर घूम रहा हूं, मैंने इन twosources में जो पाया है, उससे अधिकतर मैंने पीछा किया है।पूर्ण पहुंच

Public Sub SubmitSasProg(usrid As String, passid As String, path As String, sasprog As String, varinput As String, Optional logreturn) 
    Dim obWsMgr As New SASWorkspaceManager.WorkspaceManager 

Dim obSAS As SAS.Workspace 
Dim xmlInfo As String 

Set obSAS = obWsMgr.Workspaces.CreateWorkspaceByServer("Local", VisibilityProcess, Nothing, usrid, passid, xmlInfo) 

Dim obStoredProcessService As SAS.StoredProcessService 
Set obStoredProcessService = obSAS.LanguageService.StoredProcessService 

obStoredProcessService.Repository = "file:" & path 
obStoredProcessService.Execute sasprog, varinput 

If IsMissing(logreturn) Then logreturn = 100000 
MsgBox obSAS.LanguageService.FlushLog(logreturn) 

End Sub 

और मैं अपने आप एक छोटे से एसएएस कार्यक्रम है, की यह कॉल "Test.sas":: यहाँ क्या मैं अब तक VBA में के साथ आया है

%let loopTimes=3; 
*ProcessBody; 
data a; 
do x= 1 to &loopTimes; 
y=x*x*x; 
output; 
end; 
run; 

अब इस लाइन जस्ट से कार्य करेंगे :

Call SubmitSasProg("myuserid", "mypassword", "somepath", "Test", "loopTimes=10") 

लेकिन जब भी मैं एक एसएएस प्रक्रिया है कि फाइल को परिवर्तित कर निष्पादित करने के लिए कोशिश/libnames आदि मैं एक या तो एक "इस एसएएस सत्र के लिए अमान्य कार्रवाई" मिल जाएगा या "उपयोगकर्ता पहुँच नहीं है"। कृपया ध्यान दें कि मैं स्थानीय रूप से एसएएस का उपयोग कर रहा हूं, सर्वर पर नहीं। तो मुझे लगता है कि मैं अपने एसएएस वर्कशन और कमी की अनुमति के साथ सही ढंग से लॉग इन नहीं हूं। मैंने सोचा कि CreateWorkspaceByServer में उपयोगकर्ता आईडी और पासवर्ड पैरामीटर मुझे लॉग इन करना चाहते हैं।

तो मेरा सवाल यह होगा कि मेरे स्थानीय कंप्यूटर पर मेरे प्रमाण पत्र के साथ एसएएस सत्र सफलतापूर्वक शुरू करने के लिए और मेरे पास सामान्य पहुंच होगी खिड़कीदार वातावरण खोलकर।

बस स्पष्ट करने के लिए, इस एसएएस प्रक्रिया ठीक विडों environement में काम करेगा:

Data _NULL_; 
     *x del C:\WINDOWS; 
     x mkdir C:\Users\Myname\Desktop\NewFolder; 
    run; 

लेकिन यह कोड एक "इस एसएएस सत्र के लिए अमान्य कार्रवाई" के साथ विफल हो जाएगा यदि VBA से शुरू कर दिया। कुछ ऐसा होता है यदि मैं एसएएस डेटासेट लिखने का प्रयास करता हूं।

मैं अब कुछ समय ढूंढ रहा हूं लेकिन अधिकांश धागे एसएएस सर्वर सत्रों के बारे में हैं। किसी भी मदद की सराहना की जाएगी।

+0

वाह ... यह काफी बढ़त केस परिदृश्य है। मेरा अनुमान है कि एसएएस प्रक्रिया प्रक्रिया के अधिकारों के तहत चल रही है, जिसने इसे लॉन्च किया है और वीबीए प्रक्रिया ने अधिकारों को प्रतिबंधित कर दिया है (निर्दोष दिखने वाले दस्तावेजों में आपकी मशीन को लेने से दुर्भावनापूर्ण स्क्रिप्ट को रोकने के लिए)। – JDB

+0

एसएएस और ओएस का कौन सा संस्करण आप चल रहे हैं? –

+0

वह बेस एसएएस 9.2 और विन 7 32 बी होगा। यह भी ध्यान देने योग्य हो सकता है कि मेरे पास इस मशीन पर कोई व्यवस्थापक खाता नहीं है, हालांकि यह एसएएस खिड़की वाले वातावरण को परेशान नहीं करता है। मैं एक व्यवस्थापक खाते के साथ अपनी किस्मत आजमा रहा हूं ... कौन जानता है। – Pane

उत्तर

2

खैर, यह मेरी समस्या का सबसे तरह लग रहा है इस तथ्य से स्टेम:

इसके अलावा, आप एक ही मुद्दों मैं यहाँ पड़ा है में से कुछ अनुभव हो सकता है मेरे सिस्टम पर मैंने उपरोक्त तकनीक के साथ डेटासेट लिखने में कामयाब रहा है क्योंकि मेरे पास मेरे खाते (duuh) के साथ निर्देशिका पर विशेषाधिकार लिखने हैं। एलास, एक्स कमांड जिद्दी है और काम नहीं करेगा कि मैं खुद को एक व्यवस्थापक खाता प्राप्त करूं। तो, इस समस्या को हल करने के लिए दो विकल्प: 1. व्यवस्थापक विशेषाधिकार प्राप्त करें। या 2. वर्कस्पेस प्रबंधक को भूल जाएं। OleObjects का प्रयोग करें।

जबकि कम सुरुचिपूर्ण और संभवतः निष्पादन (परीक्षण नहीं किया गया) पर अधिक समय लेने वाला ओलेऑब्जेक्ट मुझे एसएएस का पूर्ण हद तक उपयोग करने देगा। यहाँ VBA कोड है:

Dim OleSAS As Object 
Set OleSAS = CreateObject("SAS.Application") 
OleSAS.Visible = True 
OleSAS.Top = 1 
OleSAS.Title = "Automation Server" 
OleSAS.Wait = True 
OleSAS.Submit(yourSAScode) 
OleSAS.Quit 
Set OleSAS = Nothing 

आप एक विशिष्ट प्रक्रिया चलाने के लिए और * ProcessBody साथ के रूप में कुछ मैक्रो चर बदलना चाहते हैं; बस OleSAS.Submit ("% let" & variable_name & "=" & "yourValue") और OleSAS.Submit ("% शामिल" & your_program)।

वैसे भी, मैं लॉग रिपोर्ट रिटर्न खोने के लिए बहुत दुखी हूं जो मेरे पास वॉर्स्पेस मैनेजर के साथ था, यह तेजी से डिबगिंग के लिए वास्तव में बहुत अच्छा था। आशा है कि यह उपयोगी था।

0

मुझे पता है कि पहले मैंने एसएएस/इंट्रनेट के साथ आवश्यक सुरक्षा नीतियों के सेटअप के मुद्दों का अनुभव नहीं किया है। मैं गारंटी नहीं दे सकते कि इस इसे ठीक होगा, लेकिन यह कहीं तलाश शुरू करने के लिए है:

नियंत्रण पैनल-> ​​प्रशासनिक उपकरण> स्थानीय सुरक्षा नीति

सुरक्षा सेटिंग्स> स्थानीय Policies-> उपयोगकर्ता अधिकार Assignments-> बैच नौकरी के रूप में लॉग ऑन करें

सुनिश्चित करें कि एसएएस नौकरियों को चलाने के लिए उपयोग करने वाला खाता यह अधिकार है।

इसके अलावा, क्या आप कह रहे हैं कि आपका test.sas प्रोग्राम विफल रहता है क्योंकि यह डेटासेट लिखने का प्रयास करता है? कि मैं एक व्यवस्थापक नहीं कर रहा हूँ

Using SAS and mkdir to create a directory structure in windows

संबंधित मुद्दे