部署 Analysis Services 2000 单个 Cube
此脚本允许将单个 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日 -- 首次发布