Ich habe eine Reihe von Tabellen aus SQL Server 2000 in meine 2008-Datenbank importiert. Allen importierten Tabellen wird mein Benutzername vorangestellt, z erpadmin.tablename
. B.: .
In den Tabelleneigenschaften wird 'erpadmin' als Datenbankschema aufgeführt. Wenn ich eine Abfrage schreibe, muss ich jetzt 'erpadmin' einfügen. vor allen Tabellennamen, was verwirrend ist.
Aktuelles Ergebnis:
select *
from erpadmin.tablename
Erwünschtes Ergebnis:
select *
from tablename
quelle
select ... from table5 ;
) denselben Code ausführen und unterschiedliche Ergebnisse erzielen. Dies ist schlecht für das Plan-Caching und auch schlecht für die Fehlerbehebung (Cue-Support-Person, "diese Abfrage läuft hier einwandfrei"). Für die Schemabindung, die für die Indizierung von Funktionen und Ansichten erforderlich ist, sind zwei Teilenamen erforderlich. TLDR: Hören Sie auf, faul zu sein - verwenden Sie zwei Teilenamen.Als Ergänzung zu @AdamWenger Antwort. Um Skripte für die Übertragung in ein anderes Schema zu erstellen, können Sie das folgende Skript verwenden
quelle
Ihr Problem ist wahrscheinlich darauf zurückzuführen, wie die Migration durchgeführt wurde. Sachen sollten nicht an Ihren Benutzer angehängt werden, es sei denn, Sie gelten als Eigentümer.
Schemata helfen Ihnen dabei, Tabellen nach Belieben zu trennen. Angenommen, Sie haben eine Ressourcentabelle für die Personalabteilung und möchten eine separate für die Produktionsabteilung, während beide in derselben Datenbank gespeichert sind. In diesem Fall können Sie zwei Tabellen mit dem Namen Ressourcen haben, eine im Produktionsschema und eine im HR-Schema. Aus diesem Grund müssen shcemas angegeben werden, es sei denn, Sie bringen Inhalte in das Standardschema.
Wenn Sie die Migration aus einem anderen Grund nicht wiederholen, sollte die Übertragung von Adam Wenger eine sinnvolle Option sein.
quelle
Starten Sie Ihren Befehl mit dem
USE [tablename]
Ihrer Abfrage ist keine Datenbank zugeordnet, auf die verwiesen werden kann, und die Datenbank, die Sie anzeigen, ist nicht die Standardeinstellung für den angemeldeten Benutzer. Am oberen Rand des Abfragefensters steht wahrscheinlich "master".quelle
[database_name]
, richtig?