仍然遇到使用SQLCMD进行映射的问题

时间:2014-11-10 21:51:25

标签: sqlcmd

我正在尝试映射MyDatabase,如下所示。它在SMS中工作正常但我的SQLCMD代码总是映射到'master。

enter image description here

这在短信中工作正常。

USE [MyDatabase]
GO
CREATE USER [TEST\MyUser] FOR LOGIN [TEST\MyUser]
GO
USE [MyDatabase]
GO
EXEC sp_addrolemember N'MyUser', N'TEST\MyUser'

如何在SQLCMD中实现它?我试过了:

SQLCMD.exe -E -S (local) -Q "USE [MyDatabase]"
SQLCMD.exe -E -S (local) -Q "CREATE USER [TEST\MyUser] FOR LOGIN \TEST\MyUser]"
SQLCMD.exe -E -S (local) -Q "USE [MyDatabase]"
SQLCMD.exe -E -S (local) -Q "EXEC sp_addrolemember N'MyUser', N'TEST\MyUser'"

1 个答案:

答案 0 :(得分:2)

使用-d开关在命令行上指定数据库。否则,数据库将在每个语句上重置为用户的默认值(在本例中为master)。所以,你需要像:

sqlcmd -S (local) -d MyDatabase -E -Q "CREATE USER [TEXT\MyUser] FOR LOGIN [TEST\MyUser]"
sqlcmd -S (local) -d MyDatabase -E -Q "EXEC sp_addrolemember N'MyUser', N'TEST\MyUser'"