我必须为我们的应用程序创建一个新的SQL Server用户。为了让我在每次安装时都做到这一点,我希望我们的MSBUILD脚本能够处理它。我在生成脚本中拥有登录用户和密码作为变量。用户只能是数据读取器。是用MSBUILD创建SQL Server登录的方法吗?
有没有办法轻松做到这一点?
我必须为我们的应用程序创建一个新的SQL Server用户。为了让我在每次安装时都做到这一点,我希望我们的MSBUILD脚本能够处理它。我在生成脚本中拥有登录用户和密码作为变量。用户只能是数据读取器。是用MSBUILD创建SQL Server登录的方法吗?
有没有办法轻松做到这一点?
你可以利用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让你指定一个特定的用户名和密码。
可以使用
create user $(username)
其中$(用户名)将是您的变量和MSBuild的执行过程中与您的参数传递创建SQL用户