【发布时间】:2011-06-27 14:57:47
【问题描述】:
我正忙于同步 SQL Azure 和 SQL CE 3.5 数据库的项目。每个客户在本地都有自己的 CE 数据库。当客户端与 SQL Azure 同步时,只需要同步与特定用户相关的数据。 所以我在服务器上为需要同步的表(此时只有一个)创建了过滤器模板。我已经为 SyncAdapter 指定了所有的 Select、Update 和 Delete 命令,包括检索 New 和 Max TimeStamps 的命令...
当我运行同步代码时,我收到以下错误:“无法执行提供程序命令'SelectNewTimestampCommand'。事务已回滚。确保命令语法正确并检查任何存储的内部异常 -具体错误。"
内部异常如下所示:" 内部异常:System.Data.SqlClient.SqlException 消息='–' 附近的语法不正确。 Source=.Net SqlClient 数据提供者 错误代码=-2146232060 班级=15 行号=1 数量=102 程序="" 服务器=tcp:lm5a34jqb2.database.windows.net 状态=1 堆栈跟踪: 在 System.Data.SqlClient.SqlConnection.OnError(SqlException 异常,布尔型 breakConnection) 在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() 在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj) 在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,RunBehavior runBehavior,字符串 resetOptionsString) 在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior,RunBehavior runBehavior,布尔 returnStream,布尔异步) 在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,布尔 returnStream,String 方法,DbAsyncResult 结果) 在 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult 结果,字符串方法名,布尔值 sendToPipe) 在 System.Data.SqlClient.SqlCommand.ExecuteNonQuery() 在 Microsoft.Synchronization.Data.DbSyncScopeHandler.GetLocalTimestamp(IDbConnection 连接,IDbTransaction 事务) 内部异常: "
错误指示:“'-' 附近的语法不正确”但这只是指定用于检索新时间戳的命令。创建该命令的代码如下所示: "SqlCommand selectNewTimestampCommand = new SqlCommand(); 字符串 newTimestampVariable = "@" + DbSyncSession.SyncNewTimestamp;
selectNewTimestampCommand.CommandType = CommandType.Text;
selectNewTimestampCommand.Parameters.Add(newTimestampVariable, SqlDbType.Timestamp);
selectNewTimestampCommand.Parameters[newTimestampVariable].Direction = ParameterDirection.Output;
selectNewTimestampCommand.CommandText = "SELECT " + newTimestampVariable + " = ((min_active_rowversion()) – 1)";
mySyncProvider.SelectNewTimestampCommand = selectNewTimestampCommand;"
我似乎在互联网上得到的唯一答案是没有安装 SQL Server 2005 的 SP2...由于我不使用 SQL 2005,因此该解决方案毫无用处。
可能是什么问题?
【问题讨论】:
标签: c# azure-sql-database microsoft-sync-framework