我来操作dts olap

新单位新任务,上一个任务就是在asp代码中操作启动dts,dts里面是对olap进行分析。老板给了asp脚本代码,可以启动dts。
<form action='dts.asp' method=post>
servername:<input type=text name=servername value=''><br>
usrname:<input type=text name=usrname><br>
pwd:<input type=password name=pwd><br>
conn:<input type=text name=DTSSQLStgFlag_Default2><br>
dtsname:<input type=text name=dtsname><br>
<input type=submit value=ok></form>


<%
dtsname=request.form("dtsname")
usrname=request.form("usrname")
servername=request.form("servername")
pwd=request.form("pwd")
DTSSQLStgFlag_Default2=request.form("DTSSQLStgFlag_Default2")
if dtsname="" or DTSSQLStgFlag_Default2="" or usrname="" or servername="" or pwd="" then
response.write("error")
response.end
else
response.write("dtsname:"&dtsname&"<br>")
response.write("usrname:"&usrname&"<br>")
response.write("servername:"&servername&"<br>")
response.write("DTSSQLStgFlag_Default2:"&DTSSQLStgFlag_Default2&"<br>")
dim objDTSPackage
dim objDTSStep
dim strResult
dim blnSucceeded

const DTSSQLStgFlag_Default = 0
const DTSStepExecResult_Failure = 1

set objDTSPackage = Server.CreateObject("DTS.Package")
blnSucceeded = true

objDTSPackage.LoadFromSQLServer servername, usrname, pwd, DTSSQLStgFlag_Default2, "", "", "", dtsname
objDTSPackage.Execute

for each objDTSStep in objDTSPackage.Steps
if objDTSStep.ExecutionResult = DTSStepExecResult_Failure then
strResult = strResult & "Package " & objDTSStep.Name & " failed.<br>"
blnSucceeded = false
else
strResult = strResult & "Package " & objDTSStep.Name & " succeeded.<br>"
end if
next

if blnSucceeded then
Response.Write "<h1>Package Succeeded</h1>"
else
Response.Write "<h1>Package Failed</h1>"
end if

Response.Write strResult
end if
%>
先自我解释一下,建立工作流最dts进行监视,如果出问题就报错。objDTSPackage.LoadFromSQLServer servername, usrname, pwd, DTSSQLStgFlag_Default2, "", "", "", dtsname
这个市关键的调动语句,没有什么难得,只要能连接就好。关于dtssqlstgflag_default参数也是无所谓的。0和256都可以。只要验证方式向符合就好。

理解起来并不难,但是实际操作总有点小问题。
首先启动dts,作任何东西都可以。只要连接了sql服务器就好。但是如果进行相应的sql数据库操作,你的启动账号必须在sql中有相应的数据库操作全县。
下面我就要把相应的dts放入我用的olap工作了。这时候问题就一大队了。
总是报告无法廉洁。就不说什么现象了。反正正确的配置我写一下六个记录好了
一般要有一个olap administrator管理员组。你的远程账号一定要是在这个组内如果是匿名就要用iusr等等。然后再将C:\Program Files\Microsoft Analysis Services\Bin目录分配管理组读写全县,其实说明白就是两个日志数据库的读写全县。一般这样远程用户同时可以启动连接olap在控制台上。其实从web上连接olap都是一样的进行操作。
我的测试环境是w2k3和winxp但是我换了w2k就不行了,怎么找都不知道原因,但是老板还是坚持操作。如何是好!???亏了我查了资料有另外的解决办法虽然不是很安全,但是达到了目的,使用bat文件进行远程asp操作。赫赫。如果哪位大哥知道w2k的权限分配的解决办法,请交流一下了。小生不胜感激。


@@echo off
 
  if [%1] == [] goto Usage
  if [%2] == [] goto Usage
  if [%3] == [] goto Usage
  if [%4] == [] goto Usage
 

  SET LOGFILE=c:\DTSRUN.LOG

  echo %TIME% Manual DTS package start run......... >> %LOGFILE%
  echo ------------------------------------------ >> %LOGFILE%

@dtsrun /S %1 /U %2 /P %3 /N %4 >> %LOGFILE%
  if errorlevel 1 goto Error

  echo %TIME% Manual DTS package end......... >> %LOGFILE%
  echo ------------------------------------------ >> %LOGFILE%
 
  goto FINISH

  :Error
  echo ------------------------------------------- >> %LOGFILE%
  echo DTSRUN ERROR PLS CHECK LOG .........
  echo %TIME% GlobalStore Backup abnormal end. >> %LOGFILE%
 
  goto FINISH

  :Usage
  echo.
  echo Usage:crundts %1 servername %2 use_name %3 password %4 dts_name
  :FINISH
<%

Set FileSys = Server.CreateObject("Scripting.FileSystemObject")
FileName = FileSys.GetTempName

Set WShShell = Server.CreateObject("WScript.Shell")


RetCode = WShShell.Run("d:\mint\dts\crundts.bat  tjpc014 sa sa mint2" & " " & FileName, 1, True)

if RetCode = 0 Then

'There were no errors

else

Response.write("error")

end if


Set TextFile = FileSys.OpenTextFile("d:\mint\dts\" & FileName & ".txt", 1)
TextBuffer = TextFile.ReadAll

For i = 1 to Len(TextBuffer)

If Mid(TextBuffer,i,1) = chr(13) Then

Response.Write("<BR>")

else

Response.Write(Mid(TextBuffer,i,1))

end if

Next

TextFile.Close

'FileSys.DeleteFile "d:\mint\dts\" & FileName & ".txt"

%>

原文地址:https://www.cnblogs.com/Mint/p/234875.html