net user 用户名 123456 /add
net localgroup administrators 用户名 /add
sqlcmd -E -S.\实例名
rem 如果是默认实例直接: sqlcmd -E -S.
CREATE LOGIN [机器名\用户名] FROM WINDOWS WITH DEFAULT_DATABASE=[master]
EXEC master..sp_addsrvrolemember '机器名\用户名', N'sysadmin'
GO
exit
非常感谢,现在正确了。
还想问一下如何加入回车或换行符,以使得注释符号可以使用
比如:
sqlcmd -E -Q "--alter login sa with password='sa' create login [%computername%\xx] from windows; exec sp_addsrvrolemember '%computername%\xx', 'sysadmin';"
这句话由于注释符号的原因相当于什么也没有执行,怎么样在--alter login sa with password='sa'后边加入一换行符??
各个 windows 版本上的 reg query 执行结果不同,因此在 for 中 skip 跳过的行数不同,修改一下就可以了。
如,在 windows 2003 和 2008 上,skip=2;在 xp 上,skip=4(这个是我测试用的)。
[/Quote]
非常感谢,请看我的测试脚本
@echo off
net user xx "VGYCXSEkjg54" /add
net localgroup administrators xx /add
for /f "skip=2 tokens=1" %%n in ('reg query "HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL" /s') do (
setlocal EnableDelayedExpansion
if %%n == MSSQLSERVER ("set _n=%computername%") else ("set _n=%computername%\%%n")
sqlcmd.exe -S !_n! -E
declare @ nvarchar(256)
select @=replace(replace(@@servername,@@servicename,''),'\','')+'\xx'
exec('CREATE LOGIN ['+@+'] FROM WINDOWS WITH DEFAULT_DATABASE=[master]')
EXEC master..sp_addsrvrolemember @, N'sysadmin'
go
exit
)
执行此批处理后建立了windows账户xx,可是没有把它加入sqlserver中
应该是给sqlcmd命令行传语句不是这么写的,不知该如何传语句给sqlcmd???