65.9K
CodeProject 正在变化。 阅读更多。
Home

部署 Analysis Services 2000 单个 Cube

starIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIconemptyStarIcon

1.80/5 (2投票s)

2007年10月5日

CPOL
viewsIcon

23515

downloadIcon

62

此脚本允许将单个 Cube 从一个服务器部署到另一个服务器

引言

此脚本简化了从一台服务器到另一台服务器的单个 Cube 的部署。

背景

为了以简单直接的方式访问如此丰富、可扩展、范围广泛的功能集,决策支持对象 (DSO) 库为任何可以支持组件对象模型 (COM) 对象和接口的开发环境(例如 Microsoft Visual C++®、Microsoft Visual Basic® 和 Microsoft Visual Basic Scripting Edition)提供了一个分层对象模型。

有关更多信息,请参阅 介绍决策支持对象

Using the Code

此脚本使用 DSO 对象以 VBScript 编写。

'--------------------------------------------------------------------------

' Name       : DeployAS2kCUBE.vbs

' Author     : Manuel Cavalieri

' Date       : 27 Sep 2007

' Description: 

' Notes      : 

'

'              

'

' Revision History:

' Date          Description


'----------------------------------------------------------------------------

Dim vbCrLf
Dim m_sSourceServer     
Dim m_sSourceDatabase     
Dim m_sSourceCube     
Dim m_sTargetServer     
Dim m_sTargetDatabase     
Dim m_sTargetCube     

vbCrLf = chr(13) & chr(10)
Const olapLockWrite = 8

If WScript.Arguments.Count = 6 Then
    m_sSourceServer     = WScript.arguments(0)
    m_sSourceDatabase     = WScript.arguments(1)
    m_sSourceCube         = WScript.arguments(2)
    
    m_sTargetServer     = WScript.arguments(3)
    m_sTargetDatabase     = WScript.arguments(4)
    m_sTargetCube         = WScript.arguments(5)
Else
    sMsg = WScript.ScriptName & " richiede 6 argomenti:" & vbCrLf _
           & "    - Nome/IP Address of Analysis Services Server source" & vbCrLf _
           & "    - Source Database Namee" & vbCrLf _
           & "    - Source Cube Name" & vbCrLf _
           & vbCrLf _
           & "    - Name/IP Address of Analysis Services Server Destination" & vbCrLf _
           & "    - Target Database Name" & vbCrLf _
           & "    - Target Cube Name" & vbCrLf _

           & "This script copy Cube from a source OlapDB to another and process the cube" & vbCrLf
    WScript.echo sMsg
    WScript.quit(1)
End If


Dim oSourceServer
Dim oSourceCube

Dim oTargetServer
Dim oTargetDatabase
Dim oTargetCube
Dim oCubeBkp


Set oSourceServer = CreateObject("DSO.Server")
Call oSourceServer.Connect(m_sSourceServer)
Set oSourceCube = oSourceServer.MDStores(m_sSourceDatabase).MDStores(m_sSourceCube)

Set oTargetServer = CreateObject("DSO.Server")
Call oTargetServer.Connect(m_sTargetServer)
Set oTargetDatabase = oTargetServer.MDStores(m_sTargetDatabase)

Call oTargetDatabase.LockObject(olaplockWrite, "Deploy Cubes...")

If Not oTargetDatabase.MDStores.Find(m_sTargetCube) Then
    '== Set oSourceCube = oSourceServer.MDStores(m_sSourceDatabase).MDStores(m_sSourceCube)

    Set oTargetCube = oTargetDatabase.MDStores.AddNew(m_sTargetCube)
    Call oSourceCube.Clone(oTargetCube)
    Call oTargetCube.Update()
Else
    Set oTargetCube = oSourceServer.MDStores(m_sSourceDatabase).MDStores(m_sTargetCube)
    Set oCubeBkp = oTargetDatabase.MDStores.AddNew(m_sTargetCube & "_" & Year(Now()) & _
                                     Month(Now()) & Day(Now()) & Hour(Now()) & Minute(Now()))
    Call oTargetCube.Clone(oCubeBkp)
    Call oCubeBkp.Update()
    Call oTargetDatabase.MDStores.Remove(m_sTargetCube)
    
    Set oTargetCube = oTargetDatabase.MDStores.AddNew(m_sTargetCube)
    Call oSourceCube.Clone(oTargetCube)
    
    Call oTargetCube.Update()
End If
Call oTargetDatabase.Update()
Call oTargetDatabase.UnLockObject()
Call oTargetCube.Process()
Call oTargetServer.Update()

WScript.echo "Done."

关注点

此脚本非常有用,可以部署单个 Cube,而无需部署数据库中包含的整个 Cube 集。

历史

  • 2007年10月5日 -- 首次发布
© . All rights reserved.