J'ai importé un tas de tables de SQL Server 2000 vers ma base de données 2008. Toutes les tables importées sont préfixées avec mon nom d' utilisateur , par exemple: erpadmin.tablename
.
Dans les propriétés du tableau, il répertorie «erpadmin» comme schéma de base de données. Lorsque j'écris une requête, je dois maintenant inclure «erpadmin». devant tous les noms de table ce qui est déroutant.
Résultat actuel:
select *
from erpadmin.tablename
Résultat désiré:
select *
from tablename
la source
select ... from table5 ;
) et obtiennent des résultats différents. Ceci est mauvais pour la mise en cache du plan et également mauvais pour le dépannage (cue personne de support, "cette requête fonctionne bien ici"). De plus, la liaison de schémas, qui est requise pour l'indexation des fonctions et des vues, nécessite deux noms de partie. TLDR: arrêtez d'être paresseux - utilisez deux noms de partie.En plus de la réponse @AdamWenger. Pour créer des scripts pour le transfert vers un autre schéma, vous pouvez utiliser le script suivant
la source
Votre problème est probablement dû à la façon dont la migration a été effectuée. Les éléments ne doivent pas être attachés à votre utilisateur, sauf si vous êtes considéré comme le propriétaire.
Les schémas sont là pour vous aider à séparer les tables par n'importe quel sens. Supposons que vous ayez une table de ressources pour le département RH et que vous en vouliez une autre pour le département de production, tout en conservant les deux dans la même base de données. Dans ce cas, vous pouvez avoir deux tables nommées ressources, une dans le schéma de production et une autre dans le schéma HR. C'est pourquoi les shcemas doivent être spécifiés, sauf si vous introduisez des éléments dans le schéma par défaut.
Si vous ne refaites pas la migration pour une autre raison, le transfert d'Adam Wenger devrait être une option judicieuse.
la source
Lancez votre commande avec le
USE [tablename]
Votre requête n'a pas de base de données associée à référencer et la base de données que vous regardez n'est pas la valeur par défaut pour l'utilisateur connecté En haut de la fenêtre de requête, il est probablement dit "maître"la source
[database_name]
, non?