Orleans为Liveness指定SqlServer

时间:2016-01-05 20:41:40

标签: c# sql-server orleans

我正在尝试为奥尔良设置一个使用SQL Server实现的测试环境。这是我的服务器配置文件:

<?xml version="1.0" encoding="utf-8" ?>
<OrleansConfiguration xmlns="urn:orleans">
  <Globals>
    <Liveness LivenessType="SqlServer" DeploymentId="42783519-d64e-44c9-9c29-111111111133" DataConnectionString="Data Source=.\\SQLEXPRESS;Initial Catalog=Orleans;Integrated Security=True;" />
    <!--<SeedNode Address="localhost" Port="11111" />-->
  </Globals>
  <Defaults>
    <Networking Address="localhost" Port="11111" />
    <ProxyingGateway Address="localhost" Port="30000" />
    <Tracing DefaultTraceLevel="Info" TraceToConsole="true" TraceToFile="{0}-{1}.log">
      <TraceLevelOverride LogPrefix="Application" TraceLevel="Info" />
    </Tracing>
    <Statistics MetricsTableWriteInterval="30s" PerfCounterWriteInterval="30s" LogWriteInterval="300s" WriteLogStatisticsToTable="true" />
  </Defaults>
  <Override Node="Primary">
    <Networking Address="localhost" Port="11111" />
    <ProxyingGateway Address="localhost" Port="30000" />
  </Override>
</OrleansConfiguration>

当我使用此配置时,运行时出现此错误:

  

在没有种子节点的情况下,MembershipTableGrain无法运行 - 请检查您的   silo配置文件,并确保它指定SeedNode元素。   或者,您可能希望将AzureTable用于LivenessType。   参数名称:grain = MembershipTableGrain异常=   System.ArgumentException:如果没有Seed,则MembershipTableGrain无法运行   节点 - 请检查您的silo配置文件并确保它   指定SeedNode元素。或者,您可能想要使用   AzureTable for LivenessType。

进一步说,日志说Liveness是MembershipTableGrain(这是默认值并需要SeeNode)。我在这里缺少什么?

3 个答案:

答案 0 :(得分:2)

我的SQLServer成员资格的silo配置如下所示

select * from 
(
SELECT DISTINCT 
RIGHT('0' + CAST(DATEPART(M, TableA.DateTime) AS varchar), 2) 
+ RIGHT ('0' + Cast(DATEPART(DD, TableA.DateTime) AS varchar), 2) 
+ RIGHT('0' + CAST(DATEPART(HH, TableA.DateTime) AS varchar), 2) 
+ RIGHT('0' + CAST(DATEPART(MINUTE, TableA.DateTime) AS varchar), 2) AS [VarChar Number], 
ColA, DateTime FROM TableA WHERE ColB IS NOT NULL 
AND DateTime NOT IN (SELECT DateTime From TableB) 
AND DateTime NOT IN (SELECT DateTime From tableC WHERE DateTime IS NOT NULL)
) t
where substring([VarChar Number], 6, 1) not in ('0','1','4','9')

无需指定活动类型。它通过查看SystemStoreType来计算出来。

客户端配置确实需要指定的网关

<?xml version="1.0" encoding="utf-8"?>
<OrleansConfiguration xmlns="urn:orleans">
    <Globals>
        <SystemStore SystemStoreType="SqlServer" DeploymentId="YYYYY" DataConnectionString="Server=THESERVER;Database=Orleans;User ID=USER;password=PASSWORD;"/>
    </Globals>
    <Defaults>
        <Networking Address="" Port="11111"/>
        <ProxyingGateway Address="" Port="30000"/>
    </Defaults>
</OrleansConfiguration>

答案 1 :(得分:1)

您还可以使用可编程API进行配置,而不是使用XML。

答案 2 :(得分:0)

我发现了问题。这不是如何改变活力类型。它应该是这样的:

<SystemStore SystemStoreType="SqlServer" DeploymentId="42783519-d64e-44c9-9c29-111111111133" DataConnectionString="Data Source=.\SQLEXPRESS;Initial Catalog=Orleans;Integrated Security=True;" />
<Liveness LivenessType="SqlServer" />

此外,您必须确保参考&#34; Microsoft.Orleans.OrleansSqlUtils&#34; NuGet打包并运行此SQL Create Script