2017-07-14 32 views
1

我必须为我们的应用程序创建一个新的SQL Server用户。为了让我在每次安装时都做到这一点,我希望我们的MSBUILD脚本能够处理它。我在生成脚本中拥有登录用户和密码作为变量。用户只能是数据读取器。是用MSBUILD创建SQL Server登录的方法吗?

有没有办法轻松做到这一点?

回答

1

你可以利用SQL Server Command Line Utilities(有不同版本的请确保选择了与您的操作系统相匹配并与您的SQL Server版本兼容的那个)。

sqlcmd实用程序允许您在命令提示符下输入Transact-SQL语句,系统过程和脚本文件。

现在,您可以创建一个SQL脚本(如createuser.sql):

USE [$(DatabaseName)] 
GO 

-- If the user exists, drop it first 
IF EXISTS (select principal_id FROM sys.database_principals where [name] = '$(DatabaseUser)' AND type = 'U') 
BEGIN 
    DROP USER [$(DatabaseUser)] 
END 

-- Create it 
CREATE USER [$(DatabaseUser)] FOR LOGIN [$(SqlLogin)] 

-- And add it to the Role db_datareader 
ALTER ROLE db_datareader ADD MEMBER [$(DatabaseUser)] 

使用SQLCMD你现在可以从命令行调用这个脚本,像这样:

sqlcmd -v DatabaseName="MyDatabase" DatabaseUser="Pete" SqlLogin="John" -i "createuser.sql" -S "mymachine\mySqlInstance"

您现在可以创建一个MSBuild项目文件与Exec tas K表将调用语句您:

<Exec Command="sqlcmd -v ..." ... > 
</Exec> 

请注意,正在执行SQLCMD用户应该在SQL Server中的权限来执行脚本操作。 SqlCmd让你指定一个特定的用户名和密码。

0

可以使用

create user $(username) 

其中$(用户名)将是您的变量和MSBuild的执行过程中与您的参数传递创建SQL用户

相关问题