2010-09-21 4 views
3

Est-ce dbo.dbo valide, si oui qu'est-ce que cela signifie? Je spoted cela sur une requête que quelqu'un d'autre a écrit:dbo.dbo est-ce valable?

from dbo.tmp_BDCode aob inner join dbo.dbo.tmp_BDCode_03 ao

aurait-il un effet négatif sur une requête, car dbo signifie simplement son objet global.

Merci à tous pour des éclaircissements à ce sujet.

+0

Sur les anciennes versions du serveur SQL (par exemple 2000), il est encore pire http://stackoverflow.com/questions/2974893/why-does-sql-server-2000-treat-select-test-and-select-t -est-la-même –

Répondre

2

Il peut exister une base de données nommée dbo ou un schéma nommé dbo.dbo ou une table nommée dbo.tablename.

Ces commandes sont valides:

create database dbo 
use dbo 
create schema [dbo.dbo] 
create table [dbo.dbo].[dbo.tablename] (id int, name varchar(10)) 

select * from [dbo.dbo].[dbo.tablename] as dt 
select * from dbo.[dbo.dbo].[dbo.tablename] as dt 

Il a certainement un effet négatif de ne pas être suffisamment clair pour les programmeurs qui devront lire ce code source par la suite.

+1

même si elles sont valides, c'est une convention de nommage assez pauvre ... – JNK

+4

Valid: Oui. Sane: Non. Quiconque a fait une telle cascade sur un de mes serveurs recevrait 40 coups de fouet avec une nouille humide. –

+0

À moins qu'il ne sorte lui-même des crochets, la seule façon de l'exécuter est s'il y a une base de données nommée dbo, n'est-ce pas? –

Questions connexes