SQL Server不是我的强项,当我经过基本的“创建表”,“从表中选择”等内容时,我开始迷路。
我正在尝试使用通过代理与SQL 2008 R2数据库同步的Microsoft SQLCompact 3.5数据库来设置数据库同步方案。它正在通过Microsoft Sync Framework 2.1进行同步。
当用户帐户是数据库的db_owner时,我已通过代理进行了所有设置并正常工作。
当然,现在需要对此进行锁定-因此我一直试图将权限限制为同步所需的最低限度。
根据Microsoft的文章,我需要执行以下操作…
使用最小权限原则。授予的权限不要超过执行特定任务所需的权限。例如,不要为仅下载同步中涉及的服务器数据库表授予INSERT权限。同步操作需要以下权限: Sync Framework用于读取和写入元数据表和基表的所有存储过程的EXECUTE权限。 对元数据表和将在同步会话期间更新的任何基本表的SELECT,INSERT,UPDATE和DELETE权限。 设置使用SqlSyncProvider的SQL Server数据库时,请注意以下权限要求: CREATE TABLE权限可启用元数据表的创建:scope_info和scope_config,以及为每个基本表创建的跟踪表。 ALTER TABLE将触发器添加到基表。 CREATE PROCEDURE权限可创建Sync Framework所需的过程。 scope_info和scope_config表的SELECT和INSERT权限。 基本表的SELECT权限。
使用最小权限原则。授予的权限不要超过执行特定任务所需的权限。例如,不要为仅下载同步中涉及的服务器数据库表授予INSERT权限。同步操作需要以下权限:
Sync Framework用于读取和写入元数据表和基表的所有存储过程的EXECUTE权限。 对元数据表和将在同步会话期间更新的任何基本表的SELECT,INSERT,UPDATE和DELETE权限。
Sync Framework用于读取和写入元数据表和基表的所有存储过程的EXECUTE权限。
对元数据表和将在同步会话期间更新的任何基本表的SELECT,INSERT,UPDATE和DELETE权限。
设置使用SqlSyncProvider的SQL Server数据库时,请注意以下权限要求:
CREATE TABLE权限可启用元数据表的创建:scope_info和scope_config,以及为每个基本表创建的跟踪表。 ALTER TABLE将触发器添加到基表。 CREATE PROCEDURE权限可创建Sync Framework所需的过程。 scope_info和scope_config表的SELECT和INSERT权限。 基本表的SELECT权限。
CREATE TABLE权限可启用元数据表的创建:scope_info和scope_config,以及为每个基本表创建的跟踪表。
ALTER TABLE将触发器添加到基表。
CREATE PROCEDURE权限可创建Sync Framework所需的过程。
scope_info和scope_config表的SELECT和INSERT权限。
基本表的SELECT权限。
我允许Visual Studio 2010中的向导为我创建Sync数据库和代理。
因此,我无法在SQL Server数据库中找到scope_info和scope_config表,也无法找到元数据表,因此无法在这些表上设置权限。另外- 我在哪里可以找到同步框架试图使用的存储过程-我已经找到了,但无法找到它们。
我在哪里可以找到这些以及如何设置适当的权限?
我已授予SQL Server数据库的数据读取器和数据写入器,插入,更新,删除和选择以及执行权限,但同步失败。我还为用户授予了数据库的“创建表”,“创建过程”和“更改”权限,但仍然失败。
如果我为用户启用了db_owner角色-它可以工作。
我收到的错误是:
无法初始化客户端数据库,因为表’tblApplications,tblApplicationConfiguration,tblApplicationInstallProperties,tblApplicationPreRequisites,tblApplicationTypes,tblComputerApps,tblComputers,tblComputerTypes,tblDriveHWSerials,tblDrives,tblDriveTypes,tblFunctions,tblLocationblss,tblLocationbls,tblLocations, ,tblRegions,tblRegisteredModules,tblRequestFormats,tblRequestStatus,tblRequestTypes,tblRoles,tblRoleUsers,tblSecurity,tblUsers,tblVehicle,tblVehicleLocationMap,tblVehicleMake,tblRequestProcessingStatus,tblDriveStatus,tblVideoViewTypedProvider可以通过tblVideoViewTypes方法获取()确保可以建立与客户端数据库的连接,并且正确指定了SyncAdapter的SelectIncrementalInsertsCommand属性或SelectIncrementalUpdatesCommand属性。
db_owner角色发布后,我将无法使用它。
在Sync Framework中,有两种类型的数据库提供程序,即本地数据库缓存项目项使用的脱机提供程序(SqlCeClientSyncProvider / DbServerSyncProvider)和协作/对等提供程序(SqlSyncProvider / SqlCeSyncProvider)。
脱机提供程序不会使用scope_xxx表,因为您不会找到它。
假设通过向导配置同步时使用了默认的SQL Server更改跟踪,请尝试将VIEW CHANGE TRACKING权限授予用于连接数据库的帐户。