Exception SyncFramework设置异常

Exception SyncFramework设置异常,exception,azure,provisioning,microsoft-sync-framework,Exception,Azure,Provisioning,Microsoft Sync Framework,当我尝试设置microsoft azure作用域时,我收到DbPartiallyProvisionidexception。它返回了一个错误“无效列名'ISQLHELPERCACHEDPRIMARYCLIENTNAME'。”我不知道为什么,因为它以前工作过。对ce数据库进行了一些更改(添加了更多表),但仅此而已。如果有人能帮忙,我将不胜感激 设置的代码: * SqlCeConnection sqlCEConnProv = new SqlCeConnection(SQLCEConnectionSt

当我尝试设置microsoft azure作用域时,我收到DbPartiallyProvisionidexception。它返回了一个错误“无效列名'ISQLHELPERCACHEDPRIMARYCLIENTNAME'。”我不知道为什么,因为它以前工作过。对ce数据库进行了一些更改(添加了更多表),但仅此而已。如果有人能帮忙,我将不胜感激

设置的代码:

*

SqlCeConnection sqlCEConnProv = new SqlCeConnection(SQLCEConnectionString);
                sqlCEConnProv.Open();
                SqlCeCommand cmd = sqlCEConnProv.CreateCommand();
                cmd.CommandText = "select table_name from information_schema.tables where TABLE_TYPE <> 'VIEW' AND TABLE_NAME NOT LIKE '__sys%'";
                SqlCeDataReader reader = cmd.ExecuteReader();
                List<string> tableNames = new System.Collections.Generic.List<string>();
                while (reader.Read())
                {
                    tableNames.Add(reader.GetString(0));
                }
                SqlConnection sqlAzureConnProv = new SqlConnection(SQLAzureConnectionString);
                DbSyncScopeDescription myScope = new DbSyncScopeDescription(scopeName);
                foreach (string tableName in tableNames)
                {
                    DbSyncTableDescription Customer = SqlCeSyncDescriptionBuilder.GetDescriptionForTable(tableName, sqlCEConnProv);
                    myScope.Tables.Add(Customer);
                }
                // Setup SQL Server for sync
                SqlCeSyncScopeProvisioning sqlServerProv = new SqlCeSyncScopeProvisioning(sqlCEConnProv, myScope);
                sqlServerProv.ObjectPrefix = syncPrefix;
                if (!sqlServerProv.ScopeExists(scopeName))
                    // Apply the scope provisioning.
                    sqlServerProv.Apply();
                // Setup SQL Database for sync
                SqlSyncScopeProvisioning sqlAzureProv = new SqlSyncScopeProvisioning(sqlAzureConnProv, myScope);
                sqlAzureProv.ObjectPrefix = syncPrefix;
                if (!sqlAzureProv.ScopeExists(scopeName))
                {
                    // Apply the scope provisioning.
                    //string script = sqlAzureProv.Script();  // debugging
                    sqlAzureProv.Apply();
                }
                sqlCEConnProv.Close();
                sqlAzureConnProv.Close();
*
SqlCeConnection sqlCEConnProv=新的SqlCeConnection(SQLCEConnectionString);
sqlCEConnProv.Open();
SqlCeCommand cmd=sqlCEConnProv.CreateCommand();
cmd.CommandText=“从信息_架构中选择表_名称。表_类型为“视图”且表_名称不象“u sys%”的表;
SqlCeDataReader=cmd.ExecuteReader();
List tableNames=new System.Collections.Generic.List();
while(reader.Read())
{
tableNames.Add(reader.GetString(0));
}
SqlConnection sqlAzureConnProv=新的SqlConnection(SQLAzureConnectionString);
dbsyncopedescription myScope=新的dbsyncopedescription(scopeName);
foreach(tableNames中的字符串tableName)
{
DbSyncTableDescription Customer=SqlCeSyncDescriptionBuilder.GetDescriptionForTable(表名,sqlCEConnProv);
myScope.Tables.Add(客户);
}
//设置SQL Server以进行同步
sqlcesyncopeprovisioningsqlserverprov=新的sqlcesyncopeprovisioning(sqlCEConnProv,myScope);
sqlServerProv.ObjectPrefix=syncPrefix;
如果(!sqlServerProv.ScopeExists(scopeName))
//应用范围设置。
sqlServerProv.Apply();
//为同步设置SQL数据库
SqlSyncScopeProvisioning SqlAzureProvisioning=新的SqlSyncScopeProvisioning(sqlAzureConnProv,myScope);
sqlAzureProv.ObjectPrefix=syncPrefix;
如果(!sqlAzureProv.ScopeExists(scopeName))
{
//应用范围设置。
//string script=sqlAzureProv.script();//调试
sqlAzureProv.Apply();
}
sqlCEConnProv.Close();
sqlAzureConnProv.Close();

*

您可以发布配置代码吗?或者更好的方法是,启用Sync-Fx跟踪并发布跟踪。我将代码添加到post@junett。您能确认表中确实存在该列吗?如果在设置期间该表已存在,SyncFx将不会向其中添加列。该列不存在于该表中。如果同步作用域定义来自SQLCE DB,则如果某列存在于客户端但不在服务器上,SyncFx将不会添加该列。Sync-Fx不进行架构同步。