Empêcher la chute des utilisateurs lors de la publication d'un DACPAC à l'aide de SqlPackage.exe
Est-il possible d'empêcher les utilisateurs d'être tombé lors de la publication d'un DACPAC à l'aide de SqlPackage.exe autres que de changer les paramètres ci-dessous, ce qui empêche tous les objets d'être supprimées si elles ne sont pas dans le DACPAC.
<DropObjectsNotInSource>True</DropObjectsNotInSource>
Nous déployer à un certain nombre d'environnements, chacun avec différents utilisateurs. Courant des solutions de contournement sont:
- Script pour les utilisateurs pour chaque environnement pour les recréer après le déploiement de
- Utilisation
/Action:Script
et modifier manuellement le script de déploiement.
Aucune de ces sont idéal...
OriginalL'auteur Matt | 2013-07-01
Vous devez vous connecter pour publier un commentaire.
Dans le mois de février 2015 communiqué, il est (enfin) le soutien à l'exclusion des objets spécifiques de chute.
http://blogs.msdn.com/b/ssdt/archive/2015/02/23/new-advanced-publish-options-to-specify-object-types-to-exclude-or-not-drop.aspx
OriginalL'auteur Anders Abel
Utilisation SqlPackage.exe paramètres (depuis février 2015 de presse: De nouvelles Avancées Options de publication pour Spécifier les Types d'Objet d'Exclure ou de ne Pas Déposer):
Voici les paramètres que nous utilisons dans notre déploiement:
La première ligne nettoie toutes les, mais la ligne suivante permet d'affiner ce que ne pas le faire tomber. Cette combinaison s'est avérée la plus efficace, avec nous, de supprimer tous les objets inutiles, tout en conservant les mappages de connexion comme ils étaient.
Une documentation détaillée de tous les paramètres et leurs valeurs possibles peuvent être trouvés à partir de MSDN - SqlPackage.exe
Credentials;DatabaseScopedCredentials
Je pensais que basé sur la réalisation de ces modifications dans le fichier de projet (en fait, il est enregistré à la .sqlproj.fichier de l'utilisateur), il avait compilé dans le dacpac. N'est-ce pas le cas? Le seul moyen est de passer comme SqlPackage.exe les paramètres?
Nevemind, je ne savais pas qu'on pouvait utiliser un profil de publication au lieu de paramètres.
OriginalL'auteur Tuukka Haapaniemi
J'ai rencontré le même problème et utilisés en Pré/Post scripts de déploiement à réinsérer les utilisateurs, les autorisations, les rôles, etc comme l'a suggéré blog. Toutefois, cela est devenu difficile à maintenir dans le long terme (les utilisateurs sont incapables de s'authentifier lors du déploiement, si le déploiement échoue autorisations ne sont pas restaurés, des modifications de sécurité nécessitent d'aller par le biais de la source de contrôle et de re-déploiement).
Récemment, j'ai réévalué le problème que nous avons de la migration de notre plate-forme de déploiement. Avec le API DacFx (et corrections de bugs) a publié, j'ai été en mesure d'étendre le processus de déploiement dans SSDT par la création d'un DeploymentPlanModifier. Ils fournissent une exemple de filtrage des objets sur la création, avec de simples modifications je filtre tout les gouttes d'autorisation en fonction des types d'objet (à l'aide de /p:AdditionalDeploymentContributors argument).
Hey sidux - vous pouvez soit utiliser ce qui est déjà fait pour vous, ou l'utiliser comme base pour écrire votre propre: agilesqlclub.codeplex.com (je l'ai écrit) - plus de détails l'.agilesql.club/Blogs/Ed-Elliott/...
Comment utiliser votre propre? Je communique avec Ed (auteur de agilesqlclub déjà) et nous ne pouvons pas le faire fonctionner encore. Je suis en train de travailler avec VS2012 SSDT. Le principal problème est que je n'ai aucune idée de l'endroit où l'SqlPackage.exe situé utilisé par VS2012. J'ai essayé de la recherche, beaucoup d'autres choses et n'a pas d'effets
OriginalL'auteur DanStory
Nous traitons ce sujet en post-déploiement de scripts. C'est un peu plus difficile à mettre en place, mais une fois mis en place vous permet de configurer un peu différente de script pour chaque environnement. Cela nous permet, en conjonction avec des Profils de publication avec un profil différent par l'environnement. Fondamentalement, vous utiliser Powershell pour générer un tas de scripts pour les utilisateurs et autorisations, ajouter des scripts à votre projet(s), et ensuite Inclure les fichiers dans le projet. Ajouter ce qu'on appelle dans le blog en tant que "SecurityAdditionsWrapper.sql" à votre post-script de déploiement, et vous devriez être bon. Il suffit de retirer la sécurité de l'autre de votre projet pour vous assurer qu'il est configuré correctement.
http://schottsql.blogspot.com/2013/05/ssdt-setting-different-permissions-per.html
Il y a aussi des options dans SSDT pour:
"Baisse des Autorisations de pas dans la source" - Faux
"Supprimer le rôle des membres ne sont pas définis dans la source" - Faux
"Ignorer les autorisations" - le Vrai
"Ignorer l'appartenance au rôle de" Vraies
Nous utilisons ceux-ci, mais si vous avez besoin d'un meilleur contrôle sur vos utilisateurs/permissions en environnement, je recommanderais fortement de vérifier que blog. (Merci à Jamie Thomson pour l'idée originale.)
OriginalL'auteur Peter Schott