查阅了一些资料,对几个概念先有了个大概的认识。登录名用来连接SQL SERVER数据库,也就是连接字符串里USER ID的值。同一个登录名可以操作很多数据库,只需要这些数据库中有拥有操作权限的数据库用户名映射到这个登录名(这要求一个数据库只能有一个用户名映射到此登陆名)。我想这种设定的目的是让一个名字在不同数据库里有不同的操作权限吧。
因为建立登录名时可以指定默认数据库(如果指定了默认数据库,又没有用户名映射,则实际上无法登陆),建立用户名必须指定登录名,所以我的创建顺序是,数据库、登录名、数据库用户名、给用户名添加操作权限。
因为要创建高权限的登录名和用户,而且这个操作一般用户也可进行,我直接在程序代码里写死了sa账户(System Administrator)的登录名和密码,用sa账户来连接数据库。不知道有没有更好的方法。
创建数据库的SQL很常用
CREATE DATABASE 新建数据库名称
新建登录名的SQL是(以下SQL都是Transact-SQL)
CREATE LOGIN 新建登录名 WITH PASSWORD = '{登录名密码}',DEFAULT_DATABASE = {默认数据库名}
新建数据库用户名的SQL,需要先使用数据库,新建的用户名属于当前使用的数据库
USE 新建数据库名
CREATE USER 新建用户名 FOR LOGIN 映射的登录名 WITH DEFAULT_SCHEMA = 默认架构名
(架构的意思?)
跟新用户名添加身份(权限)的存储过程,当成SQL执行就好
EXEC sp_addrolemember '身份名','用户名'