Comment créer un alias de base de données dans SQL Server
Nous avons un très vieux logiciel a été créé autour de 10 ans et nous n'avons pas de code source.
Le logiciel utilise deux bases de données, DB01
et DB02
sur la même instance de SQL Server 2012.
Il y a une requête SQL comme db01..table1 join db02..table2
, mais la question principale est de nos processus ne permettent pas l'utilisation db02
comme un nom de base de données.
La question est: comment on peut créer un alias de la base de données?
J'ai essayé d'utiliser CREATE SYNONYM
CREATE SYNONYM [db02] FOR [db02_new_name];
mais il ne fonctionne pas pour les noms de base de données.
Veuillez indiquer comment il peut être résolu sans avoir un des fichiers binaires pour corriger les instructions SQL.
- Je ne crois pas que vous le pouvez. À la fois de l'actuel réponses semblent manquer le point et de permettre un alias pour l'instance de serveur, et
SYNONYM
s seulement pour les objets dans une base de données. Je ne suis pas au courant de toute façon de faire un alias de nom de base de données.
Vous devez vous connecter pour publier un commentaire.
Créer une base de données avec le nom que vous souhaitez emprunter l'identité. Re-jigg le DDL générateur de code pour créer une vue pour chaque table de la base de données les tables j'ai besoin d'un accès via le nom codé en dur. Fondamentalement, chaque point de vue aura une déclaration qui ressemble à ceci..
Exemple:
La cible nom de base de données qui est codé en dur est appelé
ProdDBV1
et la base de données Source que vous avez est nomméProductDatabaseDatabaseV1
, le schéma estdbo
et le nom de la table estcustomer
ProdDBV1
l'aide de SSMS ou d'un script.CREATE VIEW dbo.customer as SELECT * FROM ProductDatabaseDatabaseV1.dbo.customer
Si vous pouvez énumérer chaque table dans votre "source" de la base de données, puis créer le DDL, comme ci-dessus. Si vous voulez je peux mettre à jour cette publication avec un exemple de code. (à l'aide de la
sp_msforeachtable
procédure si possible)J'ai eu un problème similaire.
Résolu avec cette solution de contournement, à l'aide de synonymes.
Version courte: Vous l'inondation de votre base de données avec un synonyme de chaque objet que vous aurez jamais besoin pour référence. Plus tard, vous re-créer chaque synonyme avec l'autre nom de base de données.
Voici une procédure stockée pour le faire. Il suffit de l'ajouter à votre base de données et de l'appeler avec la base de données cible. Il permettra de créer des synonymes pour toutes les tables dans la base de données cible, et de créer les schémas s'ils n'existent pas. J'ai laissé une commenté l'article au cas où quelqu'un connait un moyen d'obtenir le créer des schémas de travail sans un curseur.
Utiliser comme suit :
J'ai trouvé de Charles réponse (et le lien solution de contournement dans le commentaire par maxcastaneda) très utile. J'ai suivi cette approche et cela fonctionne pour moi. J'ai simplifié un peu et créé la requête suivante qui met en place tous les requis synonymes de créer.
Comme une condition préalable pour cet extrait de l'original de la DB et le synonyme/alias db doivent être sur le même serveur, sinon dans le cas où vous utilisez ce serveur ou si vous devez le modifier un peu.
Il devrait être assez facile de mettre cela en un petit ps pour mettre à jour la synonymes automatiquement.
N'oubliez pas de vous inscrire Db noms à la <...> spots.
Il suffit de copier le contenu de la
SynonymUpdateScript
de la Colonne et de l'exécuter dans le synonyme DB - ou créer une procédure stockée pour cette tâche.Être au courant il y a un problème si vous avez vues dans le lieu que se référer à des tables ou d'autres db objets sans les 2 parties à la convention de nommage. Ces synonymes ne fonctionne pas. Vous devez résoudre ce problème dans les objets d'origine /points de vue.
Aller à la Base de données que vous souhaitez créer un Alias,
Créer un Alias de table de Dossiers avec la conception préférée,
Aller à l'Id unique de la table et de vérifier la dernière séquence de code pour la table créée.
Par exemple, si le dernier code est 10, puis la mise à jour à 11.
Ouvrir les Armoires de table et aller à droite en bas et de créer le nom de l'Alias de l'armoire que vous voulez.
Je sais que c'est un vieux post mais...
C'est pourquoi je n'utilise que les 2 parties à la convention de nommage pour les objets SQL. Cela me permet d'avoir 2 partie synonymes de ce point de nommé différemment des bases de données en fonction de ce que je suis dans un environnement. Il y a certains endroits où il ne fonctionne pas si bien, mais, pour la plupart, ces endroits sont très rares.
Comme pour les logiciels que vous n'avez pas le code source de et si qui logiciel utilise la partie 3 convention de nommage, vous êtes probablement hors de la chance, sauf si vous savez ce que la partie 3 convention d'affectation des noms pour chaque objet et de créer une partie 3 synonyme pour chaque objet.
Vous pouvez créer un alias de "Gestionnaire de Configuration SQL Server" sous Paramètrage de l'Outil dans SQL Server Dossier.
Détaillée source : http://www.mssqltips.com/sqlservertip/1620/how-to-setup-and-use-a-sql-server-alias/
http://technet.microsoft.com/en-us/library/ms190445.aspx