[DBA]启动账号和审核级别可以用脚本修改吗?

BigXuStyle 2009-05-27 10:03:03
加精
如题,SQL Server 2000 和 2005 的启动账号可以用脚本来修改么?实例-属性-安全性-审核级别(或叫登陆审核)该选项可以用脚本修改么?如何实现?
...全文
557 49 打赏 收藏 转发到动态 举报
写回复
用AI写文章
49 条回复
切换为时间正序
请发表友善的回复…
发表回复
BigXuStyle 2009-06-03
  • 打赏
  • 举报
回复
2k现已找到解决方案,请进群:88072669
lsd123 2009-05-31
  • 打赏
  • 举报
回复
.
BigXuStyle 2009-05-30
  • 打赏
  • 举报
回复
经过再次测试,以上方式在新装SQL Server 2000之后,不适合非Administrators组的成员作为启动账号的情况(以上脚本依然没有赋予3类权限);但以上代码用来修改密码不受群组的限制。
BigXuStyle 2009-05-30
  • 打赏
  • 举报
回复
/* =============================================
-- Author: UltraDBA
-- Date: 2009-05-30
-- Description: How to change SQL Server 2000 startup account(NO Administrators)
-- Step 1:Install the WMI.
-- Step 2:Programming with the WMI.
-- Step 3:Execute VBS.
-- =============================================
*/

--Step 1:Install the WMI.
[code=BatchFile]@echo on
cd\
msiexec /i "D:\sql server2000\X86\OTHER\WMI\SQLWMI80.MSI" /quiet /passive /qn /norestart
pause
@echo off[/code]

--Step 2:Programming with the WMI,Saved to D:\ChangeMSSQLSERVERAccount.vbs.
strComputer = "." 

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\MicrosoftSQLServer")

' Obtain an instance of the the class

' using a key property value.

Set objShare = objWMIService.Get("Win32_Service.Name='MSSQLServer'")

' Obtain an InParameters object specific

' to the method.

Set objInParam = objShare.Methods_("Change").inParameters.SpawnInstance_()

' Add the input parameters.

objInParam.Properties_.Item("StartName") = ".\SqlUser"

objInParam.Properties_.Item("StartPassword") = "123456"

' Execute the method and obtain the return status.

' The OutParameters object in objOutParams

' is created by the provider.

Set objOutParams = objWMIService.ExecMethod("Win32_Service.Name='MSSQLServer'", "Change", objInParam)

' List OutParams
If objOutParams.ReturnValue = 0 Then
Wscript.Echo "The service account of MSSQLServer was changed."
Else
Wscript.Echo "ReturnValue: " & objOutParams.ReturnValue
End If


--Step 3:Execute VBS D:\ChangeMSSQLSERVERAccount.vbs.
@echo on
cd\
D:\ChangeMSSQLSERVERAccount.vbs
@echo off

nzperfect 2009-05-29
  • 打赏
  • 举报
回复
一般users组用户作为启动帐号,权限设置太复杂了,等楼主的结果了.
uitgh 2009-05-29
  • 打赏
  • 举报
回复
跑来学习学习
nzperfect 2009-05-29
  • 打赏
  • 举报
回复
[Quote=引用 41 楼 ultradba 的回复:]
我说了users组的成员,你这样起不来吧。这样根本没有给注册表和文件夹以及账号权限啊。
我昨天试过了,报错,还没找到原因。
不过刚才看邹老大说可以。我再去试试。
http://topic.csdn.net/t/20041104/13/3521070.html
你加这个群吧,沟通方便:88072669
[/Quote]

哦,那就是还得操作注册表,我的天。
BigXuStyle 2009-05-29
  • 打赏
  • 举报
回复
我说了users组的成员,你这样起不来吧。这样根本没有给注册表和文件夹以及账号权限啊。
我昨天试过了,报错,还没找到原因。
不过刚才看邹老大说可以。我再去试试。
http://topic.csdn.net/t/20041104/13/3521070.html
你加这个群吧,沟通方便:88072669
nzperfect 2009-05-29
  • 打赏
  • 举报
回复
伟大的意大利的左后卫,他继承了意大利的光荣的传统...
nzperfect 2009-05-29
  • 打赏
  • 举报
回复
呵呵,其实用我说的方法也不繁琐
只不过是个批处理而已,然后用sqlcmd执行一下就ok了.


xp_logininfo N'win2003\admin', N'all'
exec sp_grantlogin N'win2003\admin'
exec sp_addsrvrolemember N'win2003\admin', sysadmin
exec xp_cmdshell 'sc config MSSQL$SQL2000 obj= "win2003\admin" password= admin'
BigXuStyle 2009-05-29
  • 打赏
  • 举报
回复
不用推测,文章里写得很清楚了:
http://support.microsoft.com/kb/283811/zh-cn

我刚搜了下,应该只是控制服务的,这条路走不通了。
http://topic.csdn.net/t/20040630/14/3134432.html
nzperfect 2009-05-29
  • 打赏
  • 举报
回复
sql管理器在进行帐号更改的时候,我推测至少有两个大过程,一个是数据库级的加帐号加权限,然后是系统级的,就是改服务帐号。
BigXuStyle 2009-05-29
  • 打赏
  • 举报
回复
我想应该也只是个服务控制管理的工具。只能对服务的账号和状态进行修改而已。再搜下看了。
nzperfect 2009-05-29
  • 打赏
  • 举报
回复
[Quote=引用 33 楼 ultradba 的回复:]
引用 32 楼 perfectaction 的回复:
所以可以用sqlcmd来设置帐号及其权限部分,然后使用sc来修改其启动服务帐号/密码.


不可行,这样的方式太繁琐了,不是值得提倡的方法。我在试SCM.exe,好像也不太行,正在网上搜一些关于它的资料。
http://support.microsoft.com/kb/283811/zh-cn
[/Quote]

24楼我贴过这个地址了.
scm就算可以成功,或也存在sc同样的问题,或会自动将启动帐号加入login里,这是必须的。


如果你每个机器上的实例名不同,那还要先取到服务器,那才繁琐呢,呵呵..
nzperfect 2009-05-29
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 ultradba 的回复:]
对于第一个问题是否可以用SCM呢?SCM有做添加文件夹目录和注册表读取权限么?只是纯粹修改服务启动账号?请大虾指教。


scm  -Action  {1  |  2  |  3  |  4  |  5  |  6  |  7}
-Service  service_name
[-Server  server_name]
[-Pwd  sa_password]
[-StartupOptions  startup_option  [  ...n]  ]
[-ExePath  exe_file_path]
[-SvcStartType  {1  |  2}]
[-SvcAccount  service_account]…
[/Quote]

从11楼的内容看应该可以更改服务帐号:
scm -action 7 MSSQLServer -SvcAccount win2003\admin -SvcPwd admin

不过没试过这个.
BigXuStyle 2009-05-29
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 perfectaction 的回复:]
所以可以用sqlcmd来设置帐号及其权限部分,然后使用sc来修改其启动服务帐号/密码.
[/Quote]

不可行,这样的方式太繁琐了,不是值得提倡的方法。我在试SCM.exe,好像也不太行,正在网上搜一些关于它的资料。
http://support.microsoft.com/kb/283811/zh-cn
nzperfect 2009-05-29
  • 打赏
  • 举报
回复
所以可以用sqlcmd来设置帐号及其权限部分,然后使用sc来修改其启动服务帐号/密码.
nzperfect 2009-05-29
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 ultradba 的回复:]
呵呵,不行啊。纯粹的配置服务的命令不行滴啊。
2000有点特殊啊。如果你添加的本地账号是Administrators组成员的话,配置服务就可以了。
但是大多数情况下,根据最小权限原则,为了安全性配置Users组是比较好的,这样,光配置服务,是起不来滴。
所以说对于2000配置启动账号,在企业管理器里配置是最标准的。
现在主要看2000是否支持2005那种修改账号的方式,以及2000自带的工具SCM.exe是否可以实现。
[/Quote]

你的启动帐号是必须要加到login帐号里的,你可以给它一个非sa权限.
然后用这个帐号就可以启动。

就算你是用sql2k管理器修改启动帐号,sql也会执行:
exec xp_logininfo N'win2003\admin', N'all'
exec sp_grantlogin N'win2003\admin'
exec sp_addsrvrolemember N'win2003\admin', sysadmin

默认这里是付sa权限,不过可以更改。

BigXuStyle 2009-05-29
  • 打赏
  • 举报
回复
呵呵,不行啊。纯粹的配置服务的命令不行滴啊。
2000有点特殊啊。如果你添加的本地账号是Administrators组成员的话,配置服务就可以了。
但是大多数情况下,根据最小权限原则,为了安全性配置Users组是比较好的,这样,光配置服务,是起不来滴。
所以说对于2000配置启动账号,在企业管理器里配置是最标准的。
现在主要看2000是否支持2005那种修改账号的方式,以及2000自带的工具SCM.exe是否可以实现。
nzperfect 2009-05-29
  • 打赏
  • 举报
回复
sc config MSSQL$SQL2000 obj= "win2003\admin" password= admin
注意:
obj=后面有一个空格.
password=后面有一个空格.
加载更多回复(28)

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧