Comment crypter toutes les procédures stockées de la base de données
Est-il possible de chiffrer toutes les procédures stockées existantes d'un Serveur SQL server 2008 de la base de données APRÈS qu'ils ont été créés par le biais d'un SQLCMD script?
La raison pour laquelle je tiens à ce faire est la suivante:
J'aimerais développer les procédures stockées, sans cryptage, donc je peux facilement cliquer sur "Modifier" dans SQL Server Management Studio pour vérifier leur contenu.
Cependant, pour le déploiement, je voudrais crypter donc j'ai pensé que je pourrais peut-être écrire un script qui permet de crypter seulement après leur création. Pour dev systèmes que je simplement ne pas exécuter le script, tandis que sur les systèmes des utilisateurs finaux, le script sera exécuté.
OriginalL'auteur Marc | 2009-11-25
Vous devez vous connecter pour publier un commentaire.
J'ai le même problème.
Ma solution est de mettre "-- AVEC CRYPTAGE" dans toutes mes procédures stockées. Cette version est utilisée par les développeurs et stockées dans la source de contrôle.
Je puis utiliser un outil (comme sed) dans mon build pour remplacer "-- AVEC CRYPTAGE" avec "AVEC CHIFFREMENT" sur les fichiers avant de me les envoyer pour être installé.
Pour un pur SQL solution vous pouvez utiliser le REMPLACER.
-- , ENCRYPTION
qui nous permet d'avoir d'autres AVEC des propriétés telles queWITH SCHEMABINDING -- , ENCRYPTION
OriginalL'auteur Darryl Peterson
Vous pourriez vouloir vérifier Le chiffrement de toutes les Procédures Stockées de la Base de données :
OriginalL'auteur QV1
WITH ENCRYPTION
signifie que le code derrière le proc n'est pas stocké dans le SysComments table.Vous pouvez écrire un script qui fait un
exec sp_helptext 'MyProcName'
et obtient le contenu dans un VarChar (MAX) de sorte qu'il peut contenir plusieurs lignes /grand procédures facilement et puis modifiez la procédure à partir de l'initiale de l'étatchangement
CREATE
àALTER
etAS
entouré par un espace ou une tabulation ou retour à la ligne (bon endroit pour utiliser des Expressions Régulières) pourWITH ENCRYPTION AS
Cela permet de masquer l'ensemble du code de la procédure stockée sur le serveur de production.
Vous pouvez mettre ceci dans un
LOOP
ou unCURSOR
(pas vraiment un ensemble de base de fonctionnement à mon humble avis) pour tous les objets d'un type spécifique et/ou convention de nommage que vous souhaitez crypter, et de l'exécuter à chaque fois que vous déployez.réponse édité pour les commentaires
Je vous remercie pour l'information sur le
SysComments
table. Je ne savais pas cela.OriginalL'auteur Raj More
Je recommande la création de la procédure stockée dans un multi-ligne de chaîne variable, puis d'introduire ou de modifier à l'aide de
sp_executesql
. Le seul ennuyeux inconvénient de cette approche est doublement des apostrophes pour les chaînes.[Notez que les espaces autour des variables.]
Tous mes scripts utilisent cette méthode, qui fonctionne bien, une fois que vous vous habituez à la citation de doubler chose.
J'ai aussi utiliser un fichier de commandes pour appeler le script, et SQLCMD-mode de variables en ligne de commande pour sélectionner des comportements différents, ce qui en fait reproductible et facile à tester.
OriginalL'auteur devstuff
Utiliser Cette Requête qui Crypter Toutes les Procédures dans la base de données
OriginalL'auteur Ranjeet
J'ai écrit un curseur, étapes de travers et chiffre la plupart des objets.
OriginalL'auteur Jannie Dieanderou Geyser
1) - je exporter Créer un code pour la SP et les fonctions. Garder sauvegardés. par exemple D:\SP2.sql"
2) cette instruction transact SQL code, générer le script de supprimer les sP & Fonctions
3) Ce code Poweshell
remplacer
par
Le code
Serait plus rapide avec une .remplacer( ,), mais le problème avec la Fin de lignes...
4) exécutez le service pack WithEncrypt.sql dans SSMS
OriginalL'auteur thomas correge
J'ai fait une mise à jour de l'une des réponses ci-dessus, par la suppression de la dépendance à l'initiale de Commencer Tag. J'ai eu une situation où toutes mes procédures stockées eu de début et de FIN.
J'ai utilisé la clause de la place, et également utilisé un casse version de la charindex (par l'ajout d'un classement)
Ce n'est pas une solution parfaite, mais a aidé à obtenir plus de mes procédures stockées chiffrées.
Voici mon code mis à jour:
OriginalL'auteur Conroy Smith