创建用户自定义数据库用户注意事项

如果已忽略 FOR LOGIN,则新的数据库用户将被映射到同名的SQL Server登录名。

默认架构将是服务器为此数据库用户解析对象名时将搜索的第一个架构。 除非另外指定,否则默认架构将是此数据库用户创建的对象所属的架构。

如果用户具有默认架构,则将使用默认架构。 如果用户不具有默认架构,但该用户是具有默认架构的组的成员,则将使用该组的默认架构。 如果用户不具有默认架构而且是多个组的成员,则该用户的默认架构将是具有最低principle_id的Windows组的架构和一个显式设置的默认架构。(不可能将可用的默认架构之一显式选作首选架构。)如果不能为用户确定默认架构,则将使用 dbo 架构。

DEFAULT_SCHEMA可在创建它所指向的架构前进行设置。

在创建映射到证书或非对称密钥的用户时,不能指定DEFAULT_SCHEMA。

如果用户是sysadmin固定服务器角色的成员,则忽略DEFAULT_SCHEMA的值。sysadmin固定服务器角色的所有成员都有默认架构dbo

WITHOUT LOGIN子句可创建不映射到SQL Server登录名的用户。它可以作为guest连接到其他数据库。可以将权限分配给这一没有登录名的用户,当安全上下文更改为没有登录名的用户时,原始用户将收到无登录名用户的权限。

只有映射到Windows主体的用户才能包含反斜杠字符 (\)。

不能使用CREATE USER创建guest用户,因为每个数据库中均已存在guest用户。可通过授予guest用户CONNECT权限来启用该用户,如下所示:

可以在 sys.database_principals 目录视图中查看有关数据库用户的信息。

使用SSMS数据库管理工具创建用户自定义数据库用户

1、连接服务器-》在对象资源管理器窗口选择数据库-》展开数据库-》展开安全性-》展开用户-》右键点击用户-》选择新建。

2、在数据库用户-新建弹出框-》点击常规-》选择用户类型-》输入用户名(一个或多个登录对象在数据库中的映射,可以对用户对象进行授权,以便为登录对象提供对数据库的访问权限。用户定义信息存放在每个数据库的sysusers表中。)-》选择登录名(服务器方的一个实体,使用一个登录名只能进入服务器,但是不能让用户访问服务器中的数据库资源。每个登录名的定义存放在master数据库的syslogins表中。SQLSERVER把登录名与用户名的关系称为映射。用登录名登录SQLSERVER后,在访问各个数据库时,SQLSERVER会自动查询此数据库中是否存在与此登录名关联的用户名,若存在就使用此用户的权限访问此数据库,若不存在就是用guest用户访问此数据库)-》选择用户所属架构(数据库角色可以添加,可以定制不同权限数据库架构,类似于数据库对象的命名空间,用户通过架构访问数据库对象)。

3、在数据库用户-新建弹出框-》选择用户所拥有的架构(数据库角色可以添加,可以定制不同权限数据库架构,类似于数据库对象的命名空间,用户通过架构访问数据库对象)。

4、在数据库用户-新建弹出框-》点击成员身份-》选择数据库成员身份(数据库角色指定了可以访问相同数据库对象的一组数据库用户)。

5、在数据库用户-新建弹出框-》点击搜索选择一个安全对象(安全对象是SQL Server 数据库引擎授权系统控制对其进行访问的资源。)-》选择安全对象以后选择安全对象所拥有的权限(有权限就是可以资源操作,无权限就是不能对资源进行操作。)。

6、在数据库用户-新建弹出框-》选择扩展属性-》输入注释名称-》输入注释值(这是对自定义数据库用户添加注释,方便维护和其他人理解。)-》点击确定。

7、不需要刷新即可在对象资源管理器查看创建结果。

使用T-SQL脚本创建用户自定义数据库用户

语法

  1. ----创建用户自定义数据库用户
  2. ----声明数据库引用
  3. --use database_name;
  4. --go
  5. ----windows用户
  6. --create user user_name for login login_name with default_schema=architecture_name,allow_encrypted_value_modifications={ on | off };
  7. ----不带登录名的SQL用户
  8. --create user user_name without login with default_schema=architecrure_name,allow_encrypted_value_modifications={ on | off };
  9. ----带登录名的SQL用户
  10. --create user user_name for login login_name with default_schema=architecture_name,allow_encrypted_value_modifications={ on | off };
  11. ----映射到非对称密钥的用户
  12. --create user user_name for asymmetric key asym_key_name;
  13. ----映射到证书的用户
  14. --create user user_name for certificate certificate_name;
  15.  
  16. --拥有的架构
  17. --use database_name;
  18. --go
  19. --alter authorization on schema::[db_accessadmin] to user_name;
  20. --go
  21. --alter authorization on schema::[db_backupoperator] to user_name;
  22. --go
  23. --alter authorization on schema::[db_datareader] to user_name;
  24. --go
  25. --alter authorization on schema::[db_datawriter] to user_name;
  26. --go
  27. --alter authorization on schema::[db_ddladmin] to user_name;
  28. --go
  29. --alter authorization on schema::[db_denydatareader] to user_name;
  30. --go
  31. --alter authorization on schema::[db_denydatawriter] to user_name;
  32. --go
  33. --alter authorization on schema::[db_owner] to user_name;
  34. --go
  35. --alter authorization on schema::[db_securityadmin] to user_name;
  36. --go
  37. --alter authorization on schema::[guest] to user_name;
  38. --go
  39.  
  40. --成员身份
  41. --use database_name;
  42. --go
  43. --alter role [db_accessadmin] add member user_name;
  44. --go
  45. --alter role [db_backupoperator] add member user_name;
  46. --go
  47. --alter role [db_datareader] add member user_name;
  48. --go
  49. --alter role [db_datawriter] add member user_name;
  50. --go
  51. --alter role [db_ddladmin] add member user_name;
  52. --go
  53. --alter role [db_denydatareader] add member user_name;
  54. --go
  55. --alter role [db_denydatawriter] add member user_name;
  56. --go
  57. --alter role [db_owner] add member user_name;
  58. --go
  59. --alter role [db_securityadmin] add member user_name;
  60. --go
  61.  
  62. ----安全对象
  63. ----use database_name;
  64. ----go
  65. ----授予权限
  66. ----备份日志
  67. --grant backup log to user_name;
  68. --go
  69. ----备份数据库
  70. --grant backup database to user_name;
  71. --go
  72. ----插入
  73. --grant insert to user_name;
  74. --go
  75. ----查看定义
  76. --grant view definition to user_name;
  77. --go
  78. ----查看任意列加密密钥定义
  79. --grant view any column encryption key definition to user_name;
  80. --go
  81. ----查看任意列主密钥定义
  82. --grant view any column master key definition to user_name;
  83. --go
  84. ----查看数据库状态
  85. --grant view database state to user_name;
  86. --go
  87. ----撤销掩码
  88. --grant unmask to user_name;
  89. --go
  90. ----创建xml架构集合
  91. --grant create xml schema collection to user_name;
  92. --go
  93. ----创建表
  94. --grant create table to user_name;
  95. --go
  96. ----创建程序集
  97. --grant create assembly to user_name;
  98. --go
  99. ----创建队列
  100. --GRANT CREATE QUEUE to user_name;
  101. --go
  102. ----创建对称密钥
  103. --grant create symmetric key to user_name;
  104. --go
  105. ----创建非对称密钥
  106. --grant create asymmetric key to user_name;
  107. --go
  108. ----创建服务
  109. --grant create service to user_name;
  110. --go
  111. ----创建规则
  112. --grant create rule to user_name;
  113. --go
  114. ----创建过程
  115. --grant create procedure to user_name;
  116. --go
  117. ----创建函数
  118. --grant create function to user_name;
  119. --go
  120. ----创建架构
  121. --grant create schema to user_name;
  122. --go
  123. ----创建角色
  124. --grant create role to user_name;
  125. --go
  126. ----创建类型
  127. --grant create type to user_name;
  128. --go
  129. ----创建路由
  130. --grant create route to user_name;
  131. --go
  132. ----创建默认值
  133. --grant create default to user_name;
  134. --go
  135. ----创建全文目录
  136. --grant create fulltext catalog to user_name;
  137. --go
  138. ----创建视图
  139. --grant create view to user_name;
  140. --go
  141. ----创建数据库DDL事件通知
  142. --grant create database dll event notification to user_name;
  143. --go
  144. ----创建同义词
  145. --grant create synonym to user_name;
  146. --go
  147. ----创建消息类型
  148. --grant create message type to user_name;
  149. --go
  150. ----创建远程服务绑定
  151. --grant create remote service binding to user_name;
  152. --go
  153. ----创建约定
  154. --grant create contract to user_name;
  155. --go
  156. ----创建证书
  157. --grant create certificate to user_name;
  158. --go
  159. ----订阅查询通知
  160. --grant subscribe query notifications to user_name;
  161. --go
  162. ----更改
  163. --grant alter to user_name;
  164. --go
  165. ----更改任何外部数据源
  166. --grant alter any external data source to user_name;
  167. --go
  168. ----更改任何外部文件格式
  169. --grant alter any external file format to user_name;
  170. --go
  171. ----更改任何掩码
  172. --grant alter any mask to user_name;
  173. --go
  174. ----更改任意安全策略
  175. --grant alter any security policy to user_name;
  176. --go
  177. ----更改任意程序集
  178. --grant alter any assembly to user_name;
  179. --go
  180. ----更改任意对称密钥
  181. --grant alter any symmetric key to user_name;
  182. --go
  183. ----更改任意非对称密钥
  184. --grant alter any asymmetric key to user_name;
  185. --go
  186. ----更改任意服务
  187. --grant alter any service to user_name;
  188. --go
  189. ----更改任意架构
  190. --grant alter any schema to user_name;
  191. --go
  192. ----更改任意角色
  193. --grant alter any role to user_name;
  194. --go
  195. ----更改任意路由
  196. --grant alter any route to user_name;
  197. --go
  198. ----更改任意全文目录
  199. --grant alter any fulltext catalog to user_name;
  200. --go
  201. ----更改任意数据空间
  202. --grant alter any dataspace to user_name;
  203. --go
  204. ----更改任意数据库DDL数据库触发器
  205. --grant alter any database ddl trigger to user_name;
  206. --go
  207. ----更改任意数据库审核
  208. --grant alter any database audit to user_name;
  209. --go
  210. ----更改任意数据库事件通知
  211. --grant alter any database event notification to user_name;
  212. --go
  213. ----更改任意消息类型
  214. --grant alter any message type to user_name;
  215. --go
  216. ----更改任意应用程序角色
  217. --grant alter any application role to user_name;
  218. --go
  219. ----更改任意用户
  220. --grant alter any user to user_name;
  221. --go
  222. ----更改任意远程服务绑定
  223. --grant alter any remote service binding to user_name;
  224. --go
  225. ----更改任意约定
  226. --grant alter any contract to user_name;
  227. --go
  228. ----更改任意证书
  229. --grant alter any certificate to user_name;
  230. --go
  231. ----更新
  232. --grant update to user_name;
  233. --go
  234. ----检查点
  235. --grant checkpoint to user_name;
  236. --go
  237. ----接管所有权
  238. --grant take ownership to user_name;
  239. --go
  240. ----控制
  241. --grant control to user_name;
  242. --go
  243. ----控制聚合
  244. --grant create aggregate to user_name;
  245. --go
  246. ----连接
  247. --grant connect to user_name;
  248. --go
  249. ----连接复制
  250. --grant connect replication to user_name;
  251. --go
  252. ----删除
  253. --grant delete to user_name;
  254. --go
  255. ----身份验证
  256. --grant authenticate to user_name;
  257. --go
  258. ----显示计划
  259. --grant showplan to user_name;
  260. --go
  261. ----选择
  262. --grant select to user_name;
  263. --go
  264. ----引用
  265. --grant references to user_name;
  266. --go
  267. ----执行
  268. --grant execute to user_name;
  269. --go
  270.  
  271. ----授予并允许转售权限
  272. ----安全对象
  273. ----use database_name;
  274. ----go
  275. ----备份日志
  276. --grant backup log to user_name with grant option;
  277. --go
  278. ----备份数据库
  279. --grant backup database to user_name with grant option;
  280. --go
  281. ----插入
  282. --grant insert to user_name with grant option;
  283. --go
  284. ----查看定义
  285. --grant view definition to user_name with grant option;
  286. --go
  287. ----查看任意列加密密钥定义
  288. --grant view any column encryption key definition to user_name with grant option;
  289. --go
  290. ----查看任意列主密钥定义
  291. --grant view any column master key definition to user_name with grant option;
  292. --go
  293. ----查看数据库状态
  294. --grant view database state to user_name with grant option;
  295. --go
  296. ----撤销掩码
  297. --grant unmask to user_name with grant option;
  298. --go
  299. ----创建xml架构集合
  300. --grant create xml schema collection to user_name with grant option;
  301. --go
  302. ----创建表
  303. --grant create table to user_name with grant option;
  304. --go
  305. ----创建程序集
  306. --grant create assembly to user_name with grant option;
  307. --go
  308. ----创建队列
  309. --GRANT CREATE QUEUE to user_name with grant option;
  310. --go
  311. ----创建对称密钥
  312. --grant create symmetric key to user_name with grant option;
  313. --go
  314. ----创建非对称密钥
  315. --grant create asymmetric key to user_name with grant option;
  316. --go
  317. ----创建服务
  318. --grant create service to user_name with grant option;
  319. --go
  320. ----创建规则
  321. --grant create rule to user_name with grant option;
  322. --go
  323. ----创建过程
  324. --grant create procedure to user_name with grant option;
  325. --go
  326. ----创建函数
  327. --grant create function to user_name with grant option;
  328. --go
  329. ----创建架构
  330. --grant create schema to user_name with grant option;
  331. --go
  332. ----创建角色
  333. --grant create role to user_name with grant option;
  334. --go
  335. ----创建类型
  336. --grant create type to user_name with grant option;
  337. --go
  338. ----创建路由
  339. --grant create route to user_name with grant option;
  340. --go
  341. ----创建默认值
  342. --grant create default to user_name with grant option;
  343. --go
  344. ----创建全文目录
  345. --grant create fulltext catalog to user_name with grant option;
  346. --go
  347. ----创建视图
  348. --grant create view to user_name with grant option;
  349. --go
  350. ----创建数据库DDL事件通知
  351. --grant create database dll event notification to user_name with grant option;
  352. --go
  353. ----创建同义词
  354. --grant create synonym to user_name with grant option;
  355. --go
  356. ----创建消息类型
  357. --grant create message type to user_name with grant option;
  358. --go
  359. ----创建远程服务绑定
  360. --grant create remote service binding to user_name with grant option;
  361. --go
  362. ----创建约定
  363. --grant create contract to user_name with grant option;
  364. --go
  365. ----创建证书
  366. --grant create certificate to user_name with grant option;
  367. --go
  368. ----订阅查询通知
  369. --grant subscribe query notifications to user_name with grant option;
  370. --go
  371. ----更改
  372. --grant alter to user_name with grant option;
  373. --go
  374. ----更改任何外部数据源
  375. --grant alter any external data source to user_name with grant option;
  376. --go
  377. ----更改任何外部文件格式
  378. --grant alter any external file format to user_name with grant option;
  379. --go
  380. ----更改任何掩码
  381. --grant alter any mask to user_name with grant option;
  382. --go
  383. ----更改任意安全策略
  384. --grant alter any security policy to user_name with grant option;
  385. --go
  386. ----更改任意程序集
  387. --grant alter any assembly to user_name with grant option;
  388. --go
  389. ----更改任意对称密钥
  390. --grant alter any symmetric key to user_name with grant option;
  391. --go
  392. ----更改任意非对称密钥
  393. --grant alter any asymmetric key to user_name with grant option;
  394. --go
  395. ----更改任意服务
  396. --grant alter any service to user_name;
  397. --go
  398. ----更改任意架构
  399. --grant alter any schema to user_name with grant option;
  400. --go
  401. ----更改任意角色
  402. --grant alter any role to user_name with grant option;
  403. --go
  404. ----更改任意路由
  405. --grant alter any route to user_name with grant option;
  406. --go
  407. ----更改任意全文目录
  408. --grant alter any fulltext catalog to user_name with grant option;
  409. --go
  410. ----更改任意数据空间
  411. --grant alter any dataspace to user_name with grant option;
  412. --go
  413. ----更改任意数据库DDL数据库触发器
  414. --grant alter any database ddl trigger to user_name with grant option;
  415. --go
  416. ----更改任意数据库审核
  417. --grant alter any database audit to user_name with grant option;
  418. --go
  419. ----更改任意数据库事件通知
  420. --grant alter any database event notification to user_name with grant option;
  421. --go
  422. ----更改任意消息类型
  423. --grant alter any message type to user_name with grant option;
  424. --go
  425. ----更改任意应用程序角色
  426. --grant alter any application role to user_name with grant option;
  427. --go
  428. ----更改任意用户
  429. --grant alter any user to user_name with grant option;
  430. --go
  431. ----更改任意远程服务绑定
  432. --grant alter any remote service binding to user_name with grant option;
  433. --go
  434. ----更改任意约定
  435. --grant alter any contract to user_name with grant option;
  436. --go
  437. ----更改任意证书
  438. --grant alter any certificate to user_name with grant option;
  439. --go
  440. ----更新
  441. --grant update to user_name with grant option;
  442. --go
  443. ----检查点
  444. --grant checkpoint to user_name with grant option;
  445. --go
  446. ----接管所有权
  447. --grant take ownership to user_name with grant option;
  448. --go
  449. ----控制
  450. --grant control to user_name with grant option;
  451. --go
  452. ----控制聚合
  453. --grant create aggregate to user_name with grant option;
  454. --go
  455. ----连接
  456. --grant connect to user_name with grant option;
  457. --go
  458. ----连接复制
  459. --grant connect replication to user_name with grant option;
  460. --go
  461. ----删除
  462. --grant delete to user_name with grant option;
  463. --go
  464. ----身份验证
  465. --grant authenticate to user_name with grant option;
  466. --go
  467. ----显示计划
  468. --grant showplan to user_name with grant option;
  469. --go
  470. ----选择
  471. --grant select to user_name with grant option;
  472. --go
  473. ----引用
  474. --grant references to user_name with grant option;
  475. --go
  476. ----执行
  477. --grant execute to user_name with grant option;
  478. --go
  479.  
  480. ----拒绝权限
  481. ----安全对象
  482. --use database_name;
  483. --go
  484. ----备份日志
  485. --deny backup log to user_name;
  486. --go
  487. ----备份数据库
  488. --deny backup database to user_name;
  489. --go
  490. ----插入
  491. --deny insert to user_name;
  492. --go
  493. ----查看定义
  494. --deny view definition to user_name;
  495. --go
  496. ----查看任意列加密密钥定义
  497. --deny view any column encryption key definition to user_name;
  498. --go
  499. ----查看任意列主密钥定义
  500. --deny view any column master key definition to user_name;
  501. --go
  502. ----查看数据库状态
  503. --deny view database state to user_name;
  504. --go
  505. ----撤销掩码
  506. --deny unmask to user_name;
  507. --go
  508. ----创建xml架构集合
  509. --deny create xml schema collection to user_name;
  510. --go
  511. ----创建表
  512. --deny create table to user_name;
  513. --go
  514. ----创建程序集
  515. --deny create assembly to user_name;
  516. --go
  517. ----创建队列
  518. --deny CREATE QUEUE to user_name;
  519. --go
  520. ----创建对称密钥
  521. --deny create symmetric key to user_name;
  522. --go
  523. ----创建非对称密钥
  524. --deny create asymmetric key to user_name;
  525. --go
  526. ----创建服务
  527. --deny create service to user_name;
  528. --go
  529. ----创建规则
  530. --deny create rule to user_name;
  531. --go
  532. ----创建过程
  533. --deny create procedure to user_name;
  534. --go
  535. ----创建函数
  536. --deny create function to user_name;
  537. --go
  538. ----创建架构
  539. --deny create schema to user_name;
  540. --go
  541. ----创建角色
  542. --deny create role to user_name;
  543. --go
  544. ----创建类型
  545. --deny create type to user_name;
  546. --go
  547. ----创建路由
  548. --deny create route to user_name;
  549. --go
  550. ----创建默认值
  551. --deny create default to user_name;
  552. --go
  553. ----创建全文目录
  554. --deny create fulltext catalog to user_name;
  555. --go
  556. ----创建视图
  557. --deny create view to user_name;
  558. --go
  559. ----创建数据库DDL事件通知
  560. --deny create database dll event notification to user_name;
  561. --go
  562. ----创建同义词
  563. --deny create synonym to user_name;
  564. --go
  565. ----创建消息类型
  566. --deny create message type to user_name;
  567. --go
  568. ----创建远程服务绑定
  569. --deny create remote service binding to user_name;
  570. --go
  571. ----创建约定
  572. --deny create contract to user_name;
  573. --go
  574. ----创建证书
  575. --deny create certificate to user_name;
  576. --go
  577. ----订阅查询通知
  578. --deny subscribe query notifications to user_name;
  579. --go
  580. ----更改
  581. --deny alter to user_name;
  582. --go
  583. ----更改任何外部数据源
  584. --deny alter any external data source to user_name;
  585. --go
  586. ----更改任何外部文件格式
  587. --deny alter any external file format to user_name;
  588. --go
  589. ----更改任何掩码
  590. --deny alter any mask to user_name;
  591. --go
  592. ----更改任意安全策略
  593. --deny alter any security policy to user_name;
  594. --go
  595. ----更改任意程序集
  596. --deny alter any assembly to user_name;
  597. --go
  598. ----更改任意对称密钥
  599. --deny alter any symmetric key to user_name;
  600. --go
  601. ----更改任意非对称密钥
  602. --deny alter any asymmetric key to user_name;
  603. --go
  604. ----更改任意服务
  605. --deny alter any service to user_name;
  606. --go
  607. ----更改任意架构
  608. --deny alter any schema to user_name;
  609. --go
  610. ----更改任意角色
  611. --deny alter any role to user_name;
  612. --go
  613. ----更改任意路由
  614. --deny alter any route to user_name;
  615. --go
  616. ----更改任意全文目录
  617. --deny alter any fulltext catalog to user_name;
  618. --go
  619. ----更改任意数据空间
  620. --deny alter any dataspace to user_name;
  621. --go
  622. ----更改任意数据库DDL数据库触发器
  623. --deny alter any database ddl trigger to user_name;
  624. --go
  625. ----更改任意数据库审核
  626. --deny alter any database audit to user_name;
  627. --go
  628. ----更改任意数据库事件通知
  629. --deny alter any database event notification to user_name;
  630. --go
  631. ----更改任意消息类型
  632. --deny alter any message type to user_name;
  633. --go
  634. ----更改任意应用程序角色
  635. --deny alter any application role to user_name;
  636. --go
  637. ----更改任意用户
  638. --deny alter any user to user_name;
  639. --go
  640. ----更改任意远程服务绑定
  641. --deny alter any remote service binding to user_name;
  642. --go
  643. ----更改任意约定
  644. --deny alter any contract to user_name;
  645. --go
  646. ----更改任意证书
  647. --deny alter any certificate to user_name;
  648. --go
  649. ----更新
  650. --deny update to user_name;
  651. --go
  652. ----检查点
  653. --deny checkpoint to user_name;
  654. --go
  655. ----接管所有权
  656. --deny take ownership to user_name;
  657. --go
  658. ----控制
  659. --deny control to user_name;
  660. --go
  661. ----控制聚合
  662. --deny create aggregate to user_name;
  663. --go
  664. ----连接
  665. --deny connect to user_name;
  666. --go
  667. ----连接复制
  668. --deny connect replication to user_name;
  669. --go
  670. ----删除
  671. --deny delete to user_name;
  672. --go
  673. ----身份验证
  674. --deny authenticate to user_name;
  675. --go
  676. ----显示计划
  677. --deny showplan to user_name;
  678. --go
  679. ----选择
  680. --deny select to user_name;
  681. --go
  682. ----引用
  683. --deny references to user_name;
  684. --go
  685. ----执行
  686. --deny execute to user_name;
  687. --go
  688.  
  689. ----扩展属性
  690. ----声明数据库引用
  691. ----use database_name
  692. --go
  693. ----添加扩展注释
  694. --exec sys.sp_addextendedproperty @name=N'description_name', @value=N'description_value', @level0type=N'user',@level0name=N'user_name';
  695. --go

语法注释

--database_name
--数据库名称
--user_name
--指定在此数据库中用于识别该用户的名称。user_name 为 sysname。
--它的长度最多是 128 个字符。在创建基于Windows主体的用户时,除非指定其他用户名,否则Windows主体名称将成为用户名。
--login_name
--指定要为其创建数据库用户的登录名。login_name必须是服务器中的有效登录名。
--可以是基于Windows主体(用户或组)的登录名,也可以是使用SQL Server身份验证的登录名。
--当此SQL Server登录名进入数据库时,它将获取正在创建的这个数据库用户的名称和ID。
--在创建从 Windows 主体映射的登录名时,请使用格式 [<domainName>\<loginName>]。
--如果CREATE USER语句是SQL批处理中唯一的语句,则Windows Azure SQL Databas 将支持WITH LOGIN子句。
--如果CREATE USER语句不是SQL批处理中唯一的语句或在动态SQL中执行,则不支持 WITH LOGIN 子句。
--with default_schema=architecture_name;
--指定服务器为此数据库用户解析对象名时将搜索的第一个架构。
--allow_encrypted_value_modifications={ on | off }
--适用范围:SQL Server 2016 (13.x) 到SQL Server 2017、SQL Database。
--取消在大容量复制操作期间对服务器进行加密元数据检查。这使用户能够在表或数据库之间大容量复制加密数据,
--而无需对数据进行解密。默认为 OFF。
--without login
--指定不应将用户映射到现有登录名。
--asymmetric KEY asym_key_name
--适用范围:SQL Server 2008到SQL Server 2017、SQL Database。
--指定要为其创建数据库用户的非对称密钥。
--certificate certificate_name
--适用范围:SQL Server 2008到SQL Server 2017、SQL Database。
--指定要为其创建数据库用户的证书。
--description_name
--用户自定义用户注释名称。
--description_value
--用户自定义用户注释值。

示例

  1. /**********示例**********/
  2. --声明数据库引用
  3. use [testss];
  4. go
  5. --判断用户是否存在,如果存在则删除,不存在则创建
  6. if exists(select * from sys.database_principals where name='tests')
  7. --把架构修改回来架构自身
  8. alter authorization on schema::[db_accessadmin] to db_accessadmin;
  9. --删除角色拥有的成员
  10. alter role [db_accessadmin] drop member tests;
  11. --删除用户
  12. drop user tests;
  13. go
  14. --创建当前数据库用户自定义用户
  15. create user tests
  16. for login tests
  17. with default_schema=dbo,allow_encrypted_value_modifications=on;
  18.  
  19. --拥有的架构
  20. use testss;
  21. go
  22. alter authorization on schema::[db_accessadmin] to tests;
  23. go
  24.  
  25. --成员身份
  26. use testss;
  27. go
  28. alter role [db_accessadmin] add member tests;
  29. go
  30.  
  31. --安全对象
  32. use testss;
  33. go
  34. --授予权限
  35. --备份日志
  36. grant backup log to tests;
  37. go
  38.  
  39. --扩展属性
  40. --声明数据库引用
  41. --use database_name
  42. go
  43. --添加扩展注释
  44. exec sys.sp_addextendedproperty @name=N'tests_description', @value=N'用户自定义用户描述', @level0type=N'user',@level0name=N'tests';
  45. go

示例结果

SQLServer创建用户自定义数据库用户的更多相关文章

  1. SQLServer之修改用户自定义数据库用户

    修改用户自定义数据库用户注意事项 默认架构将是服务器为此数据库用户解析对象名时将搜索的第一个架构. 除非另外指定,否则默认架构将是此数据库用户创建的对象所属的架构. 如果用户具有默认架构,则将使用默认 ...

  2. SQLServer之删除用户自定义数据库用户

    删除用户自定义数据库用户注意事项 不能从数据库中删除拥有安全对象的用户. 必须先删除或转移安全对象的所有权,才能删除拥有这些安全对象的数据库用户. 不能删除 guest 用户,但可在除 master ...

  3. ABP框架使用Mysql数据库,以及基于SQLServer创建Mysql数据库的架构和数据

    ABP默认的数据库是SQLServer,不过ABP框架底层是EF框架,因此也是很容易支持其他类型的数据库的,本篇随笔介绍在ABP框架使用Mysql数据库,以及基于SQLServer创建MySql数据库 ...

  4. 使用PLSQL 创建Oracle数据库用户并设置权限

    转至https://blog.csdn.net/ying890/article/details/14083029?utm_medium=distribute.pc_relevant_download. ...

  5. Chapter 2 User Authentication, Authorization, and Security(8):创建映射到登录名的数据库用户

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/38944121,专题目录:http://blog.csdn.net/dba_huangzj ...

  6. Confluence 6 PostgreSQL 创建数据库和数据库用户

    一旦你成功的安装了 PostgreSQL 数据库: 创建一个数据库用户,例如 confluenceuser. 你的新用户必须能够  创建数据库对象(create database objects) 和 ...

  7. SQLSever--基础学习--创建登录用户&创建数据库用户&分配权限

    如题,本文简记一下SQL Sever里面登录用户(login)的创建,数据库用户(DBUser)的创建,以及给数据库用户分配权限(Grant). 数据库有三层保护机制: 第一层:登录用户以及登录密码的 ...

  8. sqlserver 标准系统数据库

    SQL server系统数据库很重要,大部分时候都不应该修改他们.唯一例外的是model数据库和tempdb数据库.model数据库允许部署更改到任何新创建的数据库(如存储过程),而更改tempdb数 ...

  9. sqlserver使用SQL语句创建数据库登录对象、数据库用户以及对为该用户赋予操作权限

    --创建登录名USE masterGO--PbMaster,密码123456CREATE LOGIN PbMaster with PASSWORD='1234GO --创建数据库用户USE E_Mar ...

随机推荐

  1. 《OdooERP应用与开发基础》试读:第一章-Odoo概述

    文/开源智造联合创始人老杨 本文来自<OdooERP应用与开发基础>的试读章节.书籍尚未出版,请勿转载.欢迎您反馈阅读意见. Odoo是什么   Odoo,以前叫OpenERP,是比利时O ...

  2. 3.App Inventor 2项目导入与导出

    首先熟悉导入.导出项目是为了养成良好的备份习惯. 一.登陆App Inventor 2编程界面都大同小异,在项目菜单下面有导入项目和导出项目菜单. 二.打开导入项目界面,选择要导入的aia文件. 三. ...

  3. 重庆3Shape TRIOS都有哪些功能

    1.高质量的临床结果高准确度的数字化印模确保高质量的修复体密合度即时制备和印模确认就位修复体时无需多次调整和研磨2.轻松取模无需喷粉扫描无需印模材料,可保持操作台整洁无需重复取模3.更稳健的业务联系加 ...

  4. Lnmp一键脚本

    #!/bin/bash #================================================================ # Copyright (C) 2018 A ...

  5. 基于开源CA系统ejbca community 6.3.1.1构建私有CA管理数字证书

    最后更新于2017年01月24日 一.为什么 为什么写这篇文章?ca是什么?数字证书是什么?ejbca又是什么? 让我们从http与https说起.http是超文本传输协议(HyperText Tra ...

  6. 使用BeanUtils类实现DTO之间的同名属性复制

    开发中经常碰到这样的场景,从数据库查询出来全部的字段,但是有些字段是不想给 客户端看到,这时就需要将属性从DAO复制到传给客户端的DTO对象,如果采用get/set, 那显得很麻烦.可使用反射实现. ...

  7. 关于Bulk加载模式

    Bulk加载模式是Informatica提供的一种高性能数据加载模式,它利用数据库底层机制,依靠调用数据库本身提供的Utility来进行数据的加载 该方式将绕过数据库的log记录,以此提高数据库加载性 ...

  8. ASP.NET Core Web API 集成测试中使用 Bearer Token

    在 ASP.NET Core Web API 集成测试一文中, 我介绍了ASP.NET Core Web API的集成测试. 在那里我使用了测试专用的Startup类, 里面的配置和开发时有一些区别, ...

  9. 为什么要重写hashcode和equals方法?初级程序员在面试中很少能说清楚。

    我在面试 Java初级开发的时候,经常会问:你有没有重写过hashcode方法?不少候选人直接说没写过.我就想,或许真的没写过,于是就再通过一个问题确认:你在用HashMap的时候,键(Key)部分, ...

  10. [开源]基于Log4Net简单实现KafkaAppender

    背景 基于之前基于Log4Net本地日志服务简单实现 实现本地日志服务,但是随着项目开发演进,本地日志服务满足不了需求,譬如在预发布环境或者生产环境,不可能让开发人员登录查看本地日志文件分析. Kaf ...