SQL Server-Fehler: “maximale Anzahl von Präfixen. Das maximum ist 3" mit den untergeordneten select-syntax
Versuchen, eine cross-server-update:
UPDATE asilive.Contoso.dbo.lsipos
SET PostHistorySequencenNmber = (
SELECT TransactionNumber
FROM Transactions
WHERE Transactions.TransactionDate =
asilive.CMSFintrac.dbo.lsipos.TransactionDate)
Gibt den Fehler:
Server: Msg 117, Level 15, State 2, Line 5
The number name 'asilive.Contoso.dbo.lsipos' contains more than
the maximum number of prefixes. The maximum is 3.
Was gibt?
Hinweis: Neuanordnung der Abfrage in ein weniger lesbar join-form:
UPDATE asilive.Contoso.dbo.lsipos
SET PostHistorySequenceNumber = B.TransactionNumber
FROM cmslive.Contoso.dbo.lsipos A
INNER JOIN Transactions B
ON A.TransactionDate = B.TransactionDate
nicht einen Fehler.
Siehe auch
- SQL Server-Fehler: maximale Anzahl von Präfixen. Das maximum ist 3. mit der join-syntax
(Befasst sich mit der join-syntax; diese Frage befasst sich mit sub-select-syntax)
InformationsquelleAutor Ian Boyd | 2010-03-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, das ist genau so, wie es ist. Sie können nicht mehr als drei Präfixe, so dass Sie einen Aliasnamen, wenn Sie über die 3 (vor allem, wenn der Beitritt zu anderen Servern). Es ist schon seit Sql Server 7 (und vielleicht vor ich kann mich nicht erinnern, 6.5).
Wenn Sie möchten, um Ihren code leichter lesbar, wenn Sie Aliase verwenden, geben Sie mehr aussagekräftigen alias-die machen es viel einfacher zu Folgen.
Beispiel:
+1 wenn können Sie ein Beispiel geben von einer der alias-form.
Meine wählen Sie nicht ein problem haben mit einem vier-Teil-Präfix, das update hat. Und die
update
nicht zulässt, dass ein alias. Also ich bin immer noch neugierig zu sehen, eine funktionierende syntax.Sie können den alias zu verwenden, mit updates. Update der tn-Satz tn.x=y aus tableName tn
InformationsquelleAutor kemiller2002