需要了解如何在SQL Server数据库上设置适当的权限,以允许通过同步框架2.1进行同步

需要了解如何在SQL Server数据库上设置适当的权限,以允许通过同步框架2.1进行同步,sql,permissions,synchronization,microsoft-sync-framework,Sql,Permissions,Synchronization,Microsoft Sync Framework,SQL Server不是我的强项,当我经过基本的Create Table、Select from Table等时,我开始迷失方向 我正在尝试设置一个数据库同步场景,通过代理将Microsoft SQLCompact 3.5数据库同步到SQL 2008 R2数据库。它正在通过Microsoft Sync Framework 2.1进行同步 当用户帐户是数据库的db_所有者时,我通过代理完成了所有设置并正常工作 当然,这现在需要被锁定-所以我一直试图将权限限制在同步所需的最低限度 根据微软的文章,我

SQL Server不是我的强项,当我经过基本的Create Table、Select from Table等时,我开始迷失方向

我正在尝试设置一个数据库同步场景,通过代理将Microsoft SQLCompact 3.5数据库同步到SQL 2008 R2数据库。它正在通过Microsoft Sync Framework 2.1进行同步

当用户帐户是数据库的db_所有者时,我通过代理完成了所有设置并正常工作

当然,这现在需要被锁定-所以我一直试图将权限限制在同步所需的最低限度

根据微软的文章,我需要做以下工作

使用最少许可的原则。授予的权限不要超过执行特定任务所需的权限。例如,不要为仅下载同步中涉及的服务器数据库表授予插入权限。同步操作需要以下权限:

对同步框架用于读取和写入元数据表和基表的所有存储过程执行权限

选择、插入、更新和删除元数据表以及将在同步会话期间更新的任何基表的权限

设置使用SqlSyncProvider的SQL Server数据库时,请注意设置的以下权限要求:

创建表权限以启用元数据表的创建:scope_info和scope_config,以及为每个基表创建的跟踪表

ALTER TABLE向基表添加触发器

创建过程权限以创建同步框架所需的过程

选择并插入作用域信息和作用域配置表的权限

选择基本表的权限

我允许VisualStudio2010中的向导为我创建同步数据库和代理

因此,我无法在SQL Server数据库中找到scope_info和scope_config表,也无法找到元数据表,因此无法对这些表设置权限。另外,我在哪里可以找到同步框架尝试使用的存储过程?我已经查找了,但找不到它们

在哪里可以找到这些文件,如何设置适当的权限

我已授予SQL Server数据库上的datareader和datawriter、插入、更新、删除、选择以及执行权限,但同步失败。我还为用户授予了对数据库的CREATETABLE、CREATEPROCEDURE和ALTER权限,但仍然失败

如果我为用户启用db_所有者角色,它会工作

我收到的错误是:

无法初始化客户端数据库,因为表“tblApplications、tblApplicationConfiguration、tblApplicationInstallProperties、TBLApplicationPremissions、tblApplicationTypes、tblComputers、tblComputerTypes、tblDriveHWSerials、tblDrives、tblDriveTypes、TBLFfunctions、tblLocationApps、tblLocationComputers、,tblLocationIPAddress、tblLocations、tblLocationUsers、tblPermissions、TBLRRegionLocations、TBLRRegionLocations、TBLRRegisteredModules、tblRequestFormats、tblRequestStatus、tblRequestTypes、tblRoles、tblSecurity、TBluser、TBLVehichile、TBLVehileLocationMap、TBLVehileMake、tblRequestProcessingStatus、tblDriveStatus、,DbServerSyncProvider的GetSchema()方法无法检索tblVideoViewTypes“”。 确保您可以建立到客户端数据库的连接,并且SyncAdapter的SelectIncrementalInsertsCommand属性或SelectIncrementalUpdatesCommand属性指定正确


发布db_owner角色时,我无法使用它。

我不确定它是否有用,但我发现:

改为尝试在SyncTable对象上设置UploadOnly。在SyncAdapterBuidler上进行设置时,生成器不会生成“选择增量”命令。这些命令用于从数据库获取表架构。由于缺少这些内容,因此将出现架构错误


此外,博客条目可能会有所帮助。

同步框架中有两种类型的数据库提供程序,本地数据库缓存项目项使用的脱机提供程序(SqlCeClientSyncProvider/DbServerSyncProvider)和协作/对等提供程序(SqlSyncProvider/SqlCeSyncProvider)

脱机提供商不使用scope_xxx表,因为您找不到它


假设在通过向导配置同步时使用了默认的SQL Server更改跟踪,请尝试向用于连接数据库的帐户授予查看更改跟踪权限

正如JuneT提到的,您应该打开更改跟踪

ALTER DATABASE YourDataBaseName  
SET CHANGE_TRACKING = ON  
(CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON)  

谢谢你,先生,这是我错过的许可。非常感谢您及时准确的回答。谢谢您的回答,但表上的权限是我问题的原因。当db_所有者角色被分配时,我可以进行同步,这一事实证明它是有效的——我只需要获得正确的权限。当我将视图更改跟踪授权给模式时,同步就重新上线了。