Comment définir le nom de la base de données de manière dynamique dans une procédure stockée SQL Server?Définir dynamiquement le nom de la base de données dans une procédure stockée SQL Server?
Répondre
Les procédures stockées sont spécifiques à la base de données. Si vous souhaitez accéder dynamiquement aux données d'une autre base de données, vous devez créer un SQL dynamique et l'exécuter.
Declare @strSQL VarChar (MAX)
Declare @DatabaseNameParameter VarChar (100) = 'MyOtherDB'
SET @strSQL = 'SELECT * FROM ' + @DatabaseNameParameter + '.Schema.TableName'
Vous pouvez utiliser si des clauses pour régler le @DatabaseNameParameter
à la DB de votre goût. Exécutez l'instruction pour obtenir vos résultats.
Attention, il y a beaucoup de limites à cette approche. Par exemple, le SQL dynamique est dans une portée complètement différente, donc il n'a pas accès aux variables de table, tables temporaires, etc. qui sont dans votre procédure stockée. En outre, il existe de gros problèmes de sécurité potentiels. Vous devriez vérifier http://www.sommarskog.se/dynamic_sql.html avant d'utiliser cette approche. –
Ceci est pas SQL dynamique et travaille pour l'utilisation de SYNONYMES est une bonne stratégie procs stockées
Declare @ThreePartName varchar (1000)
Declare @DatabaseNameParameter varchar (100)
SET @DatabaseNameParameter = 'MyOtherDB'
SET @ThreePartName = @DatabaseNameParameter + '.Schema.MyOtherSP'
EXEC @ThreePartName @p1, @p2... --Look! No brackets
Parfois,:
CREATE SYNONYM [schema.]name FOR [[[linkedserver.]database.]schema.]name
Ensuite, reportez-vous à l'objet par son synonyme dans votre procédure stockée. La modification du point de synonyme est une question de SQL dynamique, mais vos procédures stockées principales peuvent être entièrement sans SQL dynamique. Créez une table pour gérer tous les objets à référencer et une procédure stockée qui permute tous les synonymes souhaités dans le bon contexte.
Cette fonctionnalité est uniquement disponible dans SQL Server 2005 et versions ultérieures.
Cette méthode ne convient PAS pour une commutation fréquente ou pour des situations où des connexions différentes doivent utiliser des bases de données différentes. Je l'utilise pour une base de données qui se déplace parfois entre les serveurs (elle peut s'exécuter dans la base de données prod ou sur la base de données de réplication et ils ont des noms différents). Après avoir restauré la base de données à sa nouvelle maison, je lance mon SP de switcheroo dessus et tout fonctionne dans environ 8 secondes.
Est-il possible de créer un synonyme juste pour le nom de la base de données? Exemple: le nom de ma base de données est: MYDB_01. Puis-je créer un synonyme pour cela? – FrenkyB
Non, ce n'est pas possible. Dommage, hein? – ErikE
Welll. mieux que rien. Au moins, aucun SQL dynamique n'est nécessaire. Mais, chaque objet (table, vue) doit être défini séparément. – FrenkyB
- 1. SQL Server - SELECT de la procédure stockée
- 2. Procédure stockée SQL Server
- 3. Dans une procédure stockée, comment puis-je obtenir le nom du sproc dans SQL Server 2005?
- 4. Sql Server procédure stockée nom de curseur conflit
- 5. signifie SQL Server procédure stockée
- 6. SQL Server 2008: Sauvegarde de la base de données avant l'exécution de la procédure stockée
- 7. Création d'une procédure stockée dans une autre base de données
- 8. Marquage du nom de la procédure stockée
- 9. Sauvegarde de la base de données SQL Server dans ASP.NET
- 10. SQL Server: récupérer l'ID auto-incrémenté dans une procédure stockée?
- 11. Procédure stockée SQL Server 2008
- 12. Comment transmettre des collections de données dans une procédure stockée T-SQL dans SQL Server 2003
- 13. Dynamiquement créer la base de données dans SQL Server Express
- 14. Quand une procédure stockée recompiler? (Sql Server)
- 15. Exportation de XML dans une procédure stockée SQL Server
- 16. Dynamic SQL Server procédure stockée
- 17. Impossible d'accéder à la procédure stockée dans la procédure stockée - Débogage SQL à l'aide de VS2010 et SQL Server
- 18. Procédure stockée de référence dans une autre base de données?
- 19. Procédure stockée dans SQL Server (distinct)?
- 20. dynamique procédure stockée dans Sql Server 2005
- 21. Erreur de capture SQL Server de la procédure stockée étendue
- 22. Problème de procédure stockée SQL Server appelant une autre procédure stockée
- 23. Paramètres de sortie de procédure stockée dans SQL Server Profiler
- 24. Comment définir le délai d'attente pour une procédure stockée dans SQL Server
- 25. SQL Server 2005 requête XML procédure stockée
- 26. Instructions imbriquées dans la procédure stockée SQL Server Instruction SELECT
- 27. Passage de données binaires à une procédure stockée dans SQL Server 2008
- 28. procédure stockée dans le planificateur dans SQL Server 2005
- 29. Créer une procédure stockée avec CONTIENT dans SQL Server 2008
- 30. Procédure stockée SQL où la base de données à interroger est le paramètre
Ce que vous demandez n'est pas tout à fait clair à partir de votre question. Peut-être devriez-vous ajouter plus de détails à la question. –