需要学习如何在SQL Server数据库上设置适当的权限以允许通过Sync Framework
技术问答
222 人阅读
|
0 人回复
|
2023-09-11
|
SQL Server不是我的强项,当我经过基本的“创建表”,“从表中选择”等内容时,我开始迷路。 u+ V0 ]2 _: Y" k( ]
我正在尝试使用通过代理与SQL 2008 R2数据库同步的Microsoft SQLCompact8 r6 I! `* X; h1 c( \8 h' J: C
3.5数据库来设置数据库同步方案。它正在通过Microsoft Sync Framework 2.1进行同步。& r6 R/ o3 j& }1 E9 Q% S
当用户帐户是数据库的db_owner时,我已通过代理进行了所有设置并正常工作。5 s+ M* _! S v3 a& f2 W
当然,现在需要对此进行锁定-因此我一直试图将权限限制为同步所需的最低限度。: K+ c9 V& a! z1 {
根据Microsoft的文章,我需要执行以下操作…
( p( s7 Z" M# F3 s" M/ G* ~2 _& v+ O
使用最小权限原则。授予的权限不要超过执行特定任务所需的权限。例如,不要为仅下载同步中涉及的服务器数据库表授予INSERT权限。同步操作需要以下权限:/ M) F) B/ a1 y. g) _! C
" \# N. I, `5 W8 M0 U6 _& d5 b
( Y f$ R) z- }& [5 {4 z- V4 P* S# L
Sync Framework用于读取和写入元数据表和基表的所有存储过程的EXECUTE权限。3 H9 L+ w! D/ m, W
对元数据表和将在同步会话期间更新的任何基本表的SELECT,INSERT,UPDATE和DELETE权限。 o/ X# ~3 M8 H: F! }
" e6 a, S! n! e q
设置使用SqlSyncProvider的SQL Server数据库时,请注意以下权限要求:3 h! s" \1 Y) C
* S+ Q5 a" l) a% ]1 r, F& _
; O' ^9 L- J' c' t2 v: lCREATE TABLE权限可启用元数据表的创建:scope_info和scope_config,以及为每个基本表创建的跟踪表。
" w' y4 j+ U: M: R& RALTER TABLE将触发器添加到基表。! w; D: y- n# A- {
CREATE PROCEDURE权限可创建Sync Framework所需的过程。/ ^9 d% p7 d1 S; O0 p' C& O
scope_info和scope_config表的SELECT和INSERT权限。& V4 u* f. Z M6 o5 X
基本表的SELECT权限。* k% J. ?8 ^8 s" o. Y. x; N
+ q" k8 F- J$ i. n# Z) k
, u2 P8 B) g# s; K" E2 f我允许Visual Studio 2010中的向导为我创建Sync数据库和代理。' @8 T4 ?8 V% v% c) t
因此,我无法在SQL Server数据库中找到scope_info和scope_config表,也无法找到元数据表,因此无法在这些表上设置权限。另外-: O# f) }+ c; T7 N$ U
我在哪里可以找到同步框架试图使用的存储过程-我已经找到了,但无法找到它们。
! q. q$ u, |# B* F4 \: D2 K0 I9 x我在哪里可以找到这些以及如何设置适当的权限?4 Y& _$ `0 r8 ?, n0 Z
我已授予SQL
9 v9 J4 h$ M, X5 GServer数据库的数据读取器和数据写入器,插入,更新,删除和选择以及执行权限,但同步失败。我还为用户授予了数据库的“创建表”,“创建过程”和“更改”权限,但仍然失败。7 _( h( f3 o6 @1 c
如果我为用户启用了db_owner角色-它可以工作。- S! x9 [+ P* |2 y/ E9 H0 K
我收到的错误是:
" d; t3 S0 f- b6 S3 _, w4 B* t- o& }: D4 H( q' E" m; I/ t( o
无法初始化客户端数据库,因为表’tblApplications,tblApplicationConfiguration,tblApplicationInstallProperties,tblApplicationPreRequisites,tblApplicationTypes,tblComputerApps,tblComputers,tblComputerTypes,tblDriveHWSerials,tblDrives,tblDriveTypes,tblFunctions,tblLocationblss,tblLocationbls,tblLocations,7 M$ K, K8 ?( w
,tblRegions,tblRegisteredModules,tblRequestFormats,tblRequestStatus,tblRequestTypes,tblRoles,tblRoleUsers,tblSecurity,tblUsers,tblVehicle,tblVehicleLocationMap,tblVehicleMake,tblRequestProcessingStatus,tblDriveStatus,tblVideoViewTypedProvider可以通过tblVideoViewTypes方法获取()确保可以建立与客户端数据库的连接,并且正确指定了SyncAdapter的SelectIncrementalInsertsCommand属性或SelectIncrementalUpdatesCommand属性。
9 |4 [5 q4 @( z: T5 n1 k% ~* d h! v3 y" e
db_owner角色发布后,我将无法使用它。
$ c2 \, z# M& s2 ~6 {- F& K# u t+ B& n5 ~* T
解决方案: |
|
|
|
|
|