回答

收藏

tSQL在SQL Azure上设置具有查看定义权限的用户

技术问答 技术问答 267 人阅读 | 0 人回复 | 2023-09-14

我正在尝试.bacpac使用Azure门户将SQL Azure数据库导出到文件中。我的数据库上的管理员 用户名
, x' c5 |; d( I) O6 Y包含一个*。当我在用户名字段中使用它时,出现此错误。6 k" b5 c' U: f( X
登录名必须满足以下要求:
& ]5 S$ h- L2 e$ K& N它必须是一个SQL标识符。
5 K& \! H4 n$ `7 Q/ g" F5 o它不能是系统名称,例如:
) K. W2 y" X& l( T: j  Z# }-管理员,管理员,sa,root,dbmanager,loginmanager等。: [, v0 f6 q5 [. i# C! l
-内置的数据库用户或角色,例如dbo,guest,public等。
/ `; y8 S9 C! [4 [" v6 U; S! \% W它不能包含:
% [0 N8 q0 \/ W) u( w5 G -空格,制表符或返回等空格
1 f; N3 M$ |& D# N- }6 T -Unicode字符
7 U* ], k4 B$ a$ ~) I9 O -非字母字符(“ |:*?\ /#&;,%=)9 z5 ]! W* G' o; k9 b2 T6 g
它不能以以下内容开头:
1 X0 E7 \, y( ~1 r: H* { -数字(0到9)/ |- t$ a1 Q* ]7 U9 K; v
-@,$,+# W6 |6 D0 r' g' M! e! T
因此,我使用以下tSQL将新用户添加到数据库中。
+ Y6 B, I& a: ?8 vUSE master;7 f* y1 h1 W& [8 I
CREATE LOGIN gu6t6rdb WITH PASSWORD = 'kjucuejcj753jc8j'; ^! B+ \" o% u
USE MyActualDB;
  H% ^0 W: i/ V) x5 GCREATE USER gu6t6rdb FOR LOGIN gu6t6rdb( _6 p  N0 d$ u8 e3 |* k( j6 Y8 A
门户网站导出表单接受该用户名,但随后出现以下消息并出错。
5 W& c2 `# ~+ ^+ u$ q* E7 f# w. G8 p
服务操作期间遇到错误。无法从指定的数据库中提取软件包。逆向工程操作无法继续,因为您没有对“ MyActualDB”数据库的“视图定义”权限。7 f0 l3 Z6 K' \
9 g$ @# x* D- l2 @8 d  ]( K. l. t
为了解决这个问题,我尝试了以下tSQL
2 h; {% x" t7 K9 _GRANT VIEW ANY DEFINITION TO gu6t6rdb" c# n$ z2 \6 Y) }  q! \% p- V
引发以下错误6 |' ?4 |. J1 q, X
1 o, L! P0 u, M! L/ m4 Z1 B
此版本的SQL Server不支持安全类“服务器”" v# [0 L5 C  q- B
' l" j7 q( L1 w' A1 Q
如何使用tSQL在数据库上提供其他用户,并赋予该用户足够的特权,以通过Azure门户将数据库导出到.bacpacAzure blobstore中的文件?
3 u# G# F( r; w: D5 Z               
& |3 N  ]  ?1 }- B  B  }解决方案:
7 [1 C, V% p" F- _8 Q8 L1 n                ; C# M" g* ^7 q$ @) ^

" M) G* @; S! j+ k9 V1 B
3 s& B  I" u1 Y# d- R: W$ I                知道了。我可以将用户添加到db_owner角色中,然后导出将继续进行而不会出现错误。
6 N: G  B! W7 |3 ]! x; A/ C7 eEXEC sp_addrolemember 'db_owner', 'gu6t6rdb'
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则