有什么方法可以使用 MSBUILD 创建 SQL 服务器登录?

Is where a way to create an SQL Server login with MSBUILD?

我必须为我们的应用程序创建一个新的 SQL 服务器用户。为了省去在我们的每个安装上执行此操作的工作,我希望我们的 MSBUILD 脚本来处理它。我将登录用户和密码作为构建脚本中的变量。用户只能是 data-reader.

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

您可以使用

创建 sql 用户
create user $(username)

其中 $(username) 将是您的变量,并在 msbuild 执行期间与您的参数一起传递

您可以使用 SQL Server Command Line Utilities(这个包有不同的版本,确保您选择与您的 OS 匹配并且与您的 [=38= 版本兼容的版本] 服务器).

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"

您现在可以使用 Exec 任务创建一个 MSBuild 项目文件,该任务将为您调用该语句:

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

请注意,执行 sqlcmd 的用户应在 Sql 服务器中具有执行脚本操作的权限。 SqlCmd 允许您指定特定的用户名和密码。