创建只能看到自己有权限库的登录名和用户

来源:互联网 发布:sqlserver exists 编辑:程序博客网 时间:2024/05/29 12:03
--注:--1. 将所有 mydb 替换成需要执行的DB名称--2. 用户名 test_login, test_login 也需要替换USE [master]GO--删除所有库中用户名为 test_login 的用户EXEC sp_msforeachdb 'IF EXISTS(SELECT 1 FROM sys.database_principals WHERE NAME=''test_login'' AND type_desc=''SQL_USER'')DROP USER test_login'IF EXISTS(SELECT * FROM sys.syslogins AS s WHERE NAME='test_login')BEGINDROP LOGIN [test_login]END/*如果执行出错,消息 15174,级别 16,状态 1,第 7 行登录名 'test_login' 拥有一个或多个数据库。在删除该登录名之前,请更改相应数据库的所有者。则执行下面的脚本修正use mydbgoEXEC Sp_changedbowner 'sa',true*/GOCREATE LOGIN [test_login] WITH PASSWORD=N'test_login', CHECK_EXPIRATION=OFF, CHECK_POLICY=OFFGOUSE [mydb]GOIF EXISTS(SELECT 1 FROM sys.database_principals WHERE NAME='test_login' AND type_desc='SQL_USER')DROP USER test_loginGOUSE [master]  --任何库都无法看到Deny VIEW any DATABASE TO test_login;  GO--可以看到mydbALTER AUTHORIZATION ON DATABASE::mydb TO test_loginGO--创建用户CREATE USER [test_login] FOR LOGIN [test_login]GO--给予 db_owner 角色EXEC sp_addrolemember N'db_owner', N'test_login'GO

阅读全文
0 0
原创粉丝点击