2010-07-20 7 views
0

Je suis tombé sur un code T-SQL étrange dans SQL Server 2005, dont j'essaie de comprendre comment cela pourrait fonctionner.SQL Server dbo et schéma

S'il existe deux tables appelées tblScenario dans deux schémas distincts, l'une se trouve dans le schéma Cache et l'autre dans le schéma Dimension.

Qu'attendrions-nous lorsque nous interrogerons SELECT * FROM dbo.tblScenario? Comment dbo mappage à l'un de ces schémas d'une manière fiable et prévisible?

Pour une raison quelconque cela fonctionne réellement mais nous ne savons pas pourquoi?

Nous allons le réparer afin qu'il appelle explicitement SELECT * FROM Dimension.tblScenario, mais j'étais curieux.

Merci,

Philip

+0

j'aurais bien que cela ne fonctionnerait pas, dbo est un schéma, mais c'est aussi un utilisateur. Se pourrait-il que l'utilisateur dbo possède le schéma qu'il sélectionne? - Edit je viens de le tester (en SQL 2008) et j'ai une erreur 'nom d'objet invalide'. –

Répondre

0

Si vous utilisez l'ancienne version de la requête dans le schéma de dimension j'attendre pour renvoyer des données à partir du schéma de dimension, si vous exécutez dans le schéma du cache Je m'attendrais à ce qu'il renvoie des données à partir du schéma Cache, et si vous l'exécutez à partir de n'importe quel autre schéma, je m'attendrais à ce qu'il renvoie une erreur (similaire à celle enregistrée par Chris Diver).

1

OLTP Check ... 1) est une vue DBO.tblScenario?

othewise, il semble que vous avez affaire à SQL Server Analysis Services (SSAS), qui traite des dimensions, des tables, etc. Plus mimant info: http://technet.microsoft.com/en-us/library/cc966452.aspx

+0

Je pensais que vous étiez peut-être sur quelque chose là car nous n'avions pas vérifié la vue ... hélas ce n'est pas une vue non plus. – Philip

Questions connexes