SSAS-如何从SQL Server更改只有SSAS服务器IP地址的ServerProperty
我有以下脚本,可以非常方便地更改安装在同一服务器上的SSAS实例的服务器属性:SSAS-如何从SQL Server更改只有SSAS服务器IP地址的ServerProperty,sql,sql-server,ssas,linked-server,session-timeout,Sql,Sql Server,Ssas,Linked Server,Session Timeout,我有以下脚本,可以非常方便地更改安装在同一服务器上的SSAS实例的服务器属性: CREATE PROCEDURE [dbo].[Utility_SetMinIdleSessionTimeout] @TimeoutInSeconds INT ,@ServiceAccountUsername NVARCHAR(MAX) ,@ServiceAccountPassword NVARCHAR(MAX) ,@DataSource VARCHAR(50) = '127.0.0.1'
CREATE PROCEDURE [dbo].[Utility_SetMinIdleSessionTimeout] @TimeoutInSeconds INT
,@ServiceAccountUsername NVARCHAR(MAX)
,@ServiceAccountPassword NVARCHAR(MAX)
,@DataSource VARCHAR(50) = '127.0.0.1'
WITH EXECUTE AS 'ABC_Admin'
AS
BEGIN
SET NOCOUNT ON;
--==================================================
--Create linked server
--==================================================
IF (
NOT EXISTS (
SELECT 1
FROM sys.servers
WHERE [Name] = 'ServerSettings'
)
)
BEGIN
EXEC master.dbo.sp_addlinkedserver @server = 'ServerSettings'
,@srvproduct = ''
,@provider = 'MSOLAP'
,@datasrc = @DataSource
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = 'ServerSettings'
,@useself = N'False'
,@locallogin = NULL
,@rmtuser = @ServiceAccountUsername
,@rmtpassword = @ServiceAccountPassword
EXEC master.dbo.sp_serveroption @server = 'ServerSettings'
,@optname = N'rpc out'
,@optvalue = N'true'
END
--==================================================
--Create and Execute XMLA
--==================================================
DECLARE @XMLA XML
,@XMLAString NVARCHAR(MAX) =
'<Batch xmlns="http://schemas.microsoft.com/analysisservices/2003/engine" Transaction="true">
<Alter AllowCreate="true" ObjectExpansion="ObjectProperties" xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
<Object />
<ObjectDefinition>
<Server xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2" xmlns:ddl100_100="http://schemas.microsoft.com/analysisservices/2008/engine/100/100" xmlns:ddl200="http://schemas.microsoft.com/analysisservices/2010/engine/200" xmlns:ddl200_200="http://schemas.microsoft.com/analysisservices/2010/engine/200/200" xmlns:ddl300="http://schemas.microsoft.com/analysisservices/2011/engine/300" xmlns:ddl300_300="http://schemas.microsoft.com/analysisservices/2011/engine/300/300" xmlns:ddl400="http://schemas.microsoft.com/analysisservices/2012/engine/400" xmlns:ddl400_400="http://schemas.microsoft.com/analysisservices/2012/engine/400/400" xmlns:ddl500="http://schemas.microsoft.com/analysisservices/2013/engine/500" xmlns:ddl500_500="http://schemas.microsoft.com/analysisservices/2013/engine/500/500">
<ID>' + CAST(SERVERPROPERTY('MachineName') AS VARCHAR(MAX)) + '</ID>
<Name>' + CAST(SERVERPROPERTY('MachineName') AS VARCHAR(MAX)) + '</Name>
<ServerProperties>
<ServerProperty>
<Name>MinIdleSessionTimeout</Name>
<Value>' + CAST(@TimeoutInSeconds AS NVARCHAR) + '</Value>
</ServerProperty>
</ServerProperties>
</Server>
</ObjectDefinition>
</Alter>
</Batch>'
SET @XMLA = @XMLAString
EXEC (@XMLAString) AT [ServerSettings]
--==================================================
--Clean up
--==================================================
EXEC master.dbo.sp_dropserver @server = N'ServerSettings'
,@droplogins = 'droplogins'
END
现在我在另一台服务器上安装了SSA,我想在第一台服务器上的SQL server上在该服务器上运行它。这提供了一个挑战,我需要新服务器的IP地址,而不是服务器名称,要使此脚本正常工作,我需要有bothDataSource是新的IP,server name是XML中的新MachineName
不是在SQL Server中本机执行此操作的方法。不过,我注意到的一点是,当我将数据源和计算机名的每个属性都设置为新服务器的IP地址时,进程失败,但错误消息包含新SSAS服务器的服务器名,因此SQL server必须以某种方式意识到这一点:
已返回链接服务器设置的OLE DB提供程序MSOLAP
元数据管理器中的消息错误。对象ID不能为空
已将的从“ServerNameABC”更改为“NewIPAddress”
“ServerNameABC”服务器。对象ID不能由ALTER更改
声明
这里有没有我遗漏的东西,有没有一个简单的方法来实现我在这里看到的东西?1您的脚本创建了一个
2然后在链接的服务器上执行
行SERVERPROPERTY'MachineName'是一条sql语句,用于检索服务器的机器名,因此在您的情况下,将检索当前服务器名并在字符串中替换
您可以打印@XMLAString变量来交叉检查确切的XMLA
现在,当XMLA通过EXEC运行时。。。在语法,它在远程服务器上运行。这可能是您收到服务器名称错误的原因
总之,您可以尝试以下方法:
移除ID标签
将新服务器IP地址用作名称标记,而不是将CASTSERVERPROPERTY'MachineName'用作VARCHARMAX
我的官方文件不是很清楚