利用PowerShell复制SQLServer账户的所有权限
问题对于DBA或者其他运维人员来说授权一个账户的相同权限给另一个账户是一个很普通的任务。但是随着服务器、数据库、应用、使用人员地增加就变得很枯燥乏味又耗时费力的工作。那么有什么容易的办法来实现这个任务吗? 当然,作为非DBA在测试甚至开发环境也会遇到这种问题,要求授予所有服务器数据库的某个权限给一个人的时候。我们是不是有什么其他办法提高效率? 解决方案如果这个时候我们网上去搜索解决方案,大多数时候搜到的都是使用T-SQL解决方案,但是这又会产生下面几个小问题:
本篇技巧的主要目的就是提供一个更好的基于PowerShell和SMO的解决方案来解决上述问题。 新的PS方法
测试环境现在我把从网上找到的脚本进行修改完善,然后如下的脚本列出来如下: if exists (select * from sys.server_principals where name = 'Bobby') drop login [Bobby]; CREATE LOGIN [Bobby] WITH PASSWORD = 'User$To!Clon3@'; EXEC sp_addsrvrolemember @loginame = 'Bobby',@rolename = 'securityadmin'; GRANT ALTER ANY SERVER ROLE TO [Bobby]; -- 2nd. Create databases CREATE DATABASE TestA; IF EXISTS(SELECT name FROM sys.databases WHERE name = 'TestB') CREATE DATABASE TestB; -- 3rd,create permissions or db role memberships for [Bobby] CREATE USER [Bobby] FROM LOGIN [Bobby]; EXEC sp_addrolemember @rolename = 'db_securityadmin',@membername = 'Bobby'; CREATE ROLE TestRoleInTestA; EXEC sp_addrolemember @rolename = 'TestRoleInTestA',@membername = 'Bobby'; if object_id('dbo.t','U') is not null GRANT SELECT ON SCHEMA::dbo TO [Bobby]; USE TestB; CREATE USER [Bobby] FROM LOGIN [Bobby]; GRANT IMPERSONATE ON USER::dbo TO [Bobby]; CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'S0m3Str0ng!!P4ssw0rd@'; CREATE ASYMMETRIC KEY ASymKey WITH ALGORITHM = RSA_2048; CREATE SYMMETRIC KEY SymKey1 WITH ALGORITHM = AES_256 CREATE CERTIFICATE TestCert CREATE SYMMETRIC KEY SymKey2 WITH ALGORITHM = AES_256 CREATE PROCEDURE dbo.SimpleProc SELECT 'Test Procedure'; GRANT CONTROL ON ASYMMETRIC KEY::ASymKey TO [Bobby]; GRANT VIEW DEFINITION ON CERTIFICATE::TestCert TO [Bobby]; GRANT CONTROL ON SYMMETRIC KEY::SymKey1 TO [Bobby]; GRANT CONTROL ON SYMMETRIC KEY::SymKey2 TO [Bobby]; GRANT EXECUTE ON dbo.SimpleProc TO [Bobby]; DENY VIEW DEFINITION ON dbo.SimpleProc TO [Bobby]; Use testB
' ;
GO
GRANT ALTER ON XML SCHEMA COLLECTION::dbo.XSC TO [BOBBY]; GO alter database testA set enable_broker; use testA create contract [//Mytest/Sample/MyContract] ( create queue InitQu; --create queue TargetQu; create service [//MyTest/Sample/InitSvc] on queue InitQu; create route ExpenseRoute with service_name= '//MyTest/Sample/InitSvc',Address='tcp://www.sqlserver.com:1234'; grant alter on Contract::[//Mytest/Sample/MyContract] to [Bobby] Grant references on message type::[//MyTest/Sample/ReplyMsg] to [Bobby] Deny view definition on Route::ExpenseRoute to [Bobby] Grant alter on route::ExpenseRoute to [Bobby] Grant View Definition on Service::[//MyTest/Sample/InitSvc] to [Bobby] create fulltext catalog ftCat as default; USE master (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 在SQL Server 2005中的存储过程上设置查询超时
- sql-server – EF:文本数据类型不能被选择为DISTINCT,因为
- 将组百分比计算为2位小数 – SQL
- SQL Server Linq to SQL 插入数据时的一个问题
- mysql部分替换sql语句分享
- SQL ORDER BY with CASE with UNION ALL
- SQL Server SQL学习笔记七函数 数字,日期,类型转换,空值
- MySQL性能优化之路---修改配置文件my.cnf
- 数据表选择具有多个条件的SQL Query问题
- sql-server – SSRS Count Distinct Fields!B.value Where
