Hallo,
MS SQL ...
1 physikalischer Server (Hardware) mit einem Windows Betriebssystem
-> n MS SQL Server Instanzen (Server-Installationen), wie z.b. SERVER\Instanz1, SERVER\Instanz2 usw.
-> 1 Master Datenbank, 1 Model Datenbank, 1 Temp Datenbank, 1 MSDB Datenbank
-> n Benutzerdatenbanken (imho ist da bei 1024 noch nicht Schluss)
Eine "Datenbank" ist in diesem Sinne eine "logische Einheit", u.a. gekennzeichnet durch eigene Dateien.
Objekte unter MS SQL werden mit Teilen des oder mit dem vollen qualifizierten Namen innerhalb einer Instanz angesprochen:
[Server].[Datenbank].[Owner/Schema].[Objekt]
Also z.b.
- voller Name: [MIPFADDEV01].[TradeVision].[Common].[Dim_Date]
- vom selben Server/Instanz quer über Datenbanken ginge auch
[TradeVision].[Common].[Dim_Date] - innerhalb der DB [TradeVision] geht auch [Common].[Dim_Date]
- für einen Benutzer gibt es immer ein Default-Schema, dessen Objekte er auch ohne die Angabe des Schema, meistens [dbo], referenzieren kann
Aus Gründen der Übersicht, sollte aber mindestens immer [Owner/Schema].[Objekt] zur Identifikation benutzt werden.
Auf Aliase geh ich jetzt nicht ein.
Für den Zugriff quer über mehrere Server gibt es das Feature "Linked Server", wo man eine andere (entfernte) Instanz von MS SQL oder auch Oracle und diverses andere registrieren kann. Ohne diese Registrierung sind Abfragen über mehrere Server/Instanzen _nicht_ möglich, weil die eigene MS SQL Instanz den ersten Teil [Server] vom voll-qualifizierenden Namen nicht kennt.
Da von "Zweideutigkeiten" zu sprechen, ist einfach schwachsinnig. Genauso schwachsinnig, als wenn ich mich halbwissend über Oracle auslassen würde. Es ist einfach ein anderes Konzept.(Punkt)
Ciao, Frank