2017-07-14 4 views
1

Je dois créer un nouvel utilisateur SQL Server pour notre application. Pour m'épargner l'effort de le faire sur chacune de nos installations, je veux que notre script MSBUILD le gère. J'ai l'utilisateur de connexion et le mot de passe comme variables dans le script de construction. L'utilisateur doit uniquement être un lecteur de données.Est-ce qu'un moyen de créer une connexion SQL Server avec MSBUILD?

Existe-t-il un moyen de le faire facilement?

Répondre

1

Vous pouvez utiliser les SQL Server Command Line Utilities (il existe des versions différentes de ce paquet, assurez-vous de choisir celui qui correspond à votre système d'exploitation et est compatible avec votre version de SQL Server). L'utilitaire sqlcmd vous permet d'entrer des instructions, des procédures système et des fichiers script Transact-SQL à l'invite de commande.

Vous pouvez maintenant créer un script SQL (par exemple 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)] 

En utilisant SQLCMD vous pouvez maintenant appeler ce script à partir de la ligne de commande comme ceci:

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

Vous pouvez maintenant créer un fichier de projet MSBuild avec un Exec tas k qui appellera cette déclaration pour vous:

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

S'il vous plaît noter que l'utilisateur qui exécute le sqlcmd doit disposer des autorisations dans Sql Server pour effectuer les actions scriptées. SqlCmd vous permet de spécifier un nom d'utilisateur et un mot de passe spécifiques.

0

Vous pouvez créer utilisateur SQL en utilisant

create user $(username) 

Où $ (nom d'utilisateur) sera votre variable et passé avec votre paramètre lors de l'exécution msbuild