Schéma de procédure stockée CLR Au cours de déploiement
-
29-09-2019 - |
Question
Je suis intéressé à configurer Visual Studio (2010) de sorte que lors du déploiement de C # CLR projets de base de données, il met des choses dans les schémas autres que dbo. Je comprends que je peux mettre à jour la fonction / procédure / etc ... wrappers qu'il crée manuellement pour ce faire: procédures stockées CLR: comment définir le schéma / propriétaire
Cependant, je voudrais vraiment automatiser le processus en quelque sorte. Si quelqu'un sait, j'apprécie vraiment la réponse!
La solution
Il convient de mentionner que cette question est obsolète à partir de Visual Studio 2012 qui a un champ de configuration « schéma par défaut » pour le T-SQL wrapper objets générés. Cela a également été mentionné dans la section "Mise à jour" en haut de la réponse suivante ; -) :
procédures stockées CLR: comment configurer le schéma / propriétaire
Autres conseils
Vous pouvez modifier la procédure stockée d'un schéma à un autre en utilisant
ALTER SCHEMA Org TRANSFER dbo.spUdpateCompany
Il semble être liés à la sécurité et fait « par la conception ». http://support.microsoft.com/kb/918346
Vous pouvez mettre des scripts pour chaque objet dans le script post déploiement comme celui ci-dessous. Ci-dessous le script recrée la procédure stockée avec le schéma [Org]. Espérons que cela aide.
Etape 1 - Supprimer procédure stockée automatiquement ajoutée par le projet car il est créé avec le schéma par défaut [dbo]
.IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[spUpdateCompany]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[spUpdateCompany]
GO
Étape 2 -. Retirer la procédure stockée si elles existent déjà dans [Org] schéma et recréer la procédure stockée dans le schéma [Org]
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Org].[spUpdateCompany]') AND type in (N'P', N'PC'))
DROP PROCEDURE [Org].[spUpdateCompany]
GO
CREATE PROCEDURE [Org].[spUpdateCompany]
@Id int,
@Name [nvarchar](4000)
WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [SQLServerProject.CLR].[StoredProcedures].[spUpdateCompany]
GO
Dans les propriétés SQLCLR du projet SSDT, vous pouvez désactiver « Générer DDL ». Ensuite, vous pouvez créer votre propre objet SQL qui se fixe à l'assemblage CLR. Par exemple, ajouter une nouvelle procédure stockée comme
CREATE PROCEDURE [schema].[StoredProcedure]
@parameter BIGINT NULL
AS EXTERNAL NAME [AssemblyNameFromProjectProperties].[ClassWithProcedure].[Method];
GO
Cela vous permettra de mettre différents objets dans différents schémas