2009-04-28 6 views
15

Ich habe in letzter Zeit viel DB Refactoring gemacht und Synonyme sind unglaublich nützlich geworden. Als ich ursprünglich die Synonyme einbrachte, dachte ich, dass sie während des Refactorings sehr temporär wären. Jetzt denke ich, es könnte einige gute Gründe geben, einige dieser Synonyme beizubehalten.SQL Server - Synonyme Tipps & Tricks?

  • Hat jemand sie als volle Schlag Abstraktionsschicht verwendet?

  • Was sind die Leistungskosten?

  • Irgendwelche Fehler mit Indizes?

  • Tipps oder Tricks?

Meine erste Frage, also bitte sei sanft.

Dank

Antwort

12

als Synonym ist eine Abstraktion/alternative Bezeichnung für ein bereits bestehendes Datenbankobjekt, in dem Fall einer Tabelle, ist Indexverhalten diejenige des zugrunde liegenden Objekt dh wenn Ausführungspläne erzeugt werden, identisch die Der gleiche Plan wird unabhängig von der Verwendung des Tabellennamens oder des entsprechenden Synonyms generiert.

+0

Nice work steve –

+0

wir die Liste der Tabellen von Quering erhalten können SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES' gleiche Weise > Wie kann ich die Liste von Synonymen erhalten Abfrage ??? – RSK

+0

Wählen Sie schema_name (schema_id) + '.' + Name aus sys.tables select schema_name (schema_id) + '.' + name, * aus sys.procedures select schema_name (schema_id) + '.' + Name aus sys.views – Sage

3

Ja, Synonyme können als Abstraktionsschicht oder Indirektionsebene verwendet werden. Zum Beispiel, wenn Sie auf Objekte in einer externen Datenbank zugreifen müssen, bei denen der tatsächliche Datenbankname erst zur Laufzeit bekannt sein wird. Sie können Ihre SQL-Referenz auf Objekte mit Synonymnamen schreiben und anschließend die Synonyme später dynamisch erstellen.

Es gibt keine Index-Fehler: Wenn das Synonym auf eine Tabelle oder eine indizierte Sicht verweist, werden die Indizes für diese Objekte angezeigt.

Die Leistung sollte dieselbe sein wie die explizite Bezugnahme auf das Objekt anhand des vollständig qualifizierten Namens.

5

Eigentlich bin ich bei der Verwendung von Indizes auf einen Fehler gestoßen .... Ich bin nicht sicher, ob es eine Möglichkeit gibt, verwandte Beiträge auf dieser Site zu erstellen, aber hier ist der Link zu meinem Problem mit Synonymen und Tabellenindizes .

SQL Server Table Synonyms with Indexes