创建登录用户的语法 sp_addlogin 中,参数应该不应该加上 单引号 定界符呀,我试了下,发现加不加都是一样的效果,这是为什么?
创建登录用户的语法 sp_addlogin 中,参数应该不应该加上 单引号 定界符呀,我试了下,发现加不加都是一样的效果,这是为什么?
以下两种写法,是完全相同的,我不明白为何会这样.
SQL code
exec sp_addlogin 'abc','0000','pubs'
exec sp_addlogin abc,0000,pubs
------解决方案-------------------- use 你的库名
go
--新增用户
exec sp_addlogin 'test' --添加登录
exec sp_grantdbaccess N'test' --使其成为当前数据库的合法用户
exec sp_addrolemember N'db_owner', N'test' --授予对自己数据库的所有权限
------解决方案-------------------- --添加只允许访问指定表的用户:
exec sp_addlogin '用户名','密码','默认数据库名'
--添加到数据库
exec sp_grantdbaccess '用户名'
--分配整表权限
GRANT SELECT , INSERT , UPDATE , DELETE ON table1 TO [用户名]
--分配权限到具体的列
GRANT SELECT , UPDATE ON table1(id,AA) TO [用户名]
------解决方案--------------------第一个问题,确实如此,人家MS自己的做的系统,让你行你就行,让你不行你就不行。
第二个问题,不是变量,是命名参数;使用命名参数,参数顺序可以不一致,有缺省值的参数可以省略(按缺省值)。
------解决方案--------------------内有转换
------解决方案--------------------SQL code
-->这是这个存储过程的参数部分
create procedure sp_addlogin
@loginame sysname
,@passwd sysname = Null
,@defdb sysname = 'master' -- UNDONE: DEFAULT CONFIGURABLE???
,@deflanguage sysname = Null
,@sid varbinary(16) = Null
,@encryptopt varchar(20) = Null
AS
......
-->可以这样调用
exec sp_addlogin 'test','123','master',null,null,null
--参数顺序要和存储过程的一一对应。后面的默认值可以省略,中间的不能,中间省略了,参数就不能一一对应了。
-->命名参数调用
exec sp_addlogin @passwd='123',@loginame='test'
--参数顺序可以乱写,默认参数全部可以省略。