需要学习如何在SQL Server数据库上设置适当的权限以允许通过Sync Framework
技术问答
341 人阅读
|
0 人回复
|
2023-09-11
|
SQL Server不是我的强项,当我经过基本的“创建表”,“从表中选择”等内容时,我开始迷路。' W# z/ i: x2 ]7 G6 l$ i* o) n! v7 `
我正在尝试使用通过代理与SQL 2008 R2数据库同步的Microsoft SQLCompact* ~& |+ Y4 Z% u, x& P
3.5数据库来设置数据库同步方案。它正在通过Microsoft Sync Framework 2.1进行同步。4 z) q( G5 o* x& T5 m W/ d, \
当用户帐户是数据库的db_owner时,我已通过代理进行了所有设置并正常工作。
$ J) @; a) u% M) d+ T当然,现在需要对此进行锁定-因此我一直试图将权限限制为同步所需的最低限度。
( i: ^5 G# P4 r( |( w根据Microsoft的文章,我需要执行以下操作…
x) Q' D3 w, J! J
9 p _' V. u( @' o& d* D6 ]; q使用最小权限原则。授予的权限不要超过执行特定任务所需的权限。例如,不要为仅下载同步中涉及的服务器数据库表授予INSERT权限。同步操作需要以下权限:
2 ^1 a' W# G% o) H Z) _' w: ^2 c5 {5 m9 ]' ^
4 R7 L2 G9 Y+ A! ]Sync Framework用于读取和写入元数据表和基表的所有存储过程的EXECUTE权限。+ X5 m# h+ H" g' V$ y' y8 \& m
对元数据表和将在同步会话期间更新的任何基本表的SELECT,INSERT,UPDATE和DELETE权限。
5 ^. e+ B8 x0 ~7 V! S7 e6 [
! n% Q+ `( z# P) U+ x$ R( ^设置使用SqlSyncProvider的SQL Server数据库时,请注意以下权限要求:8 @: J) J% o% P+ E9 Y) o+ f
- y* P w- K/ K I& ` i) M3 U
# G8 |9 D9 p: r( K& s/ w3 _8 XCREATE TABLE权限可启用元数据表的创建:scope_info和scope_config,以及为每个基本表创建的跟踪表。
1 m; Y& h6 A$ T& ?4 r" s8 c% a; ~1 OALTER TABLE将触发器添加到基表。
% ~5 N" G% \( ^1 d. B) d0 VCREATE PROCEDURE权限可创建Sync Framework所需的过程。
0 h9 ^: [) \9 p9 [scope_info和scope_config表的SELECT和INSERT权限。2 I+ i, C% [6 d ]( i
基本表的SELECT权限。
1 r' @6 v5 Y3 ~4 m$ a! A, x6 e: G) _( Q8 `
6 L* l+ r! z3 B4 k
我允许Visual Studio 2010中的向导为我创建Sync数据库和代理。4 Y0 c7 W1 |& M; Z9 L
因此,我无法在SQL Server数据库中找到scope_info和scope_config表,也无法找到元数据表,因此无法在这些表上设置权限。另外-6 A; F+ o/ ]& y" ]# U7 ]0 u" {
我在哪里可以找到同步框架试图使用的存储过程-我已经找到了,但无法找到它们。8 L& a) q) D& E$ p h# T
我在哪里可以找到这些以及如何设置适当的权限?
% s- ~6 M8 L% A& i我已授予SQL9 ?6 J5 W. d9 S& I
Server数据库的数据读取器和数据写入器,插入,更新,删除和选择以及执行权限,但同步失败。我还为用户授予了数据库的“创建表”,“创建过程”和“更改”权限,但仍然失败。3 z( k0 u8 O: Y+ W" T# k8 G
如果我为用户启用了db_owner角色-它可以工作。. E$ s2 b9 l1 r H
我收到的错误是:+ `+ W+ ]6 I! _/ E7 G, @1 k
# a4 s8 \0 {: ]5 D4 e7 F( Y1 r/ O
无法初始化客户端数据库,因为表’tblApplications,tblApplicationConfiguration,tblApplicationInstallProperties,tblApplicationPreRequisites,tblApplicationTypes,tblComputerApps,tblComputers,tblComputerTypes,tblDriveHWSerials,tblDrives,tblDriveTypes,tblFunctions,tblLocationblss,tblLocationbls,tblLocations,0 o7 I$ ^3 B9 s0 ^) Q; d
,tblRegions,tblRegisteredModules,tblRequestFormats,tblRequestStatus,tblRequestTypes,tblRoles,tblRoleUsers,tblSecurity,tblUsers,tblVehicle,tblVehicleLocationMap,tblVehicleMake,tblRequestProcessingStatus,tblDriveStatus,tblVideoViewTypedProvider可以通过tblVideoViewTypes方法获取()确保可以建立与客户端数据库的连接,并且正确指定了SyncAdapter的SelectIncrementalInsertsCommand属性或SelectIncrementalUpdatesCommand属性。
6 V) @8 z. x) w: l- b, F
B$ p) M8 o' i, M, H! d! kdb_owner角色发布后,我将无法使用它。
+ t% l+ x+ d, G) x$ L
% b- w* E3 k9 g0 A解决方案: |
|
|
|
|
|