Umfang temporärer Tabellen in SQL Server
Bei der Arbeit mit SQL Server ist es wichtig, den Umfang temporärer Tabellen zu verstehen, um Datenbeschädigungen zu verhindern . Dieser Artikel untersucht die Missverständnisse rund um die temporäre Tabellenfreigabe in Mehrbenutzerumgebungen und verdeutlicht die Rolle von EXEC bei der Erstellung neuer Bereiche.
Temporärer Tabellenbereich
Entgegen der Behauptung Da temporäre Tabellen gemeinsam genutzt werden, stellt SQL Server die Isolation für gleichzeitige Importvorgänge sicher. Wie in der Dokumentation von Microsoft angegeben:
Umfang EXEC
Jeder Aufruf von EXEC erstellt einen neuen Bereich. Dies bedeutet, dass eine temporäre Tabelle, die innerhalb einer gespeicherten Prozedur erstellt wurde, für andere gespeicherte Prozeduren, die gleichzeitig ausgeführt werden, nicht sichtbar ist.
Betrachten Sie das bereitgestellte Beispiel:
CREATE PROC [dbo].[ImportCompany] ( @CompanyId AS INTEGER ) AS EXEC [dbo].[ImportAddress] @CompanyId = @CompanyId --Import other data CREATE PROC [dbo].[ImportAddress] ( @CompanyId AS INTEGER ) AS CREATE TABLE #Companies (OldAddress NVARCHAR(128), NewAddress NVARCHAR(128)) INSERT INTO #Companies(OldAddress, NewAddress) SELECT Address as OldAddress, 'Transformed ' + Address as NewAddress FROM [OldDb].[dbo].[Addresses] WHERE CompanyId = @CompanyId --Do stuff with the transformed data DROP TABLE #Companies EXEC [dbo].[ImportCompany] @CompanyId = 12345
In diesem Fall ist die Tabelle #Companies Wird am Ende des ImportAddress-Vorgangs automatisch gelöscht, um sicherzustellen, dass kein gleichzeitiger Importvorgang darauf zugreifen oder ihn beschädigen kann it.
Fazit
Temporäre Tabellen in SQL Server sind auf die aktuelle Sitzung beschränkt und können nicht von gleichzeitigen Importen gemeinsam genutzt werden. Jeder Aufruf von EXEC erstellt einen neuen Bereich, der die Isolation gewährleistet und Datenbeschädigungen verhindert. Daher ist die Verwendung von Tabellenvariablen zur Aufrechterhaltung der Datenintegrität in diesem Szenario nicht erforderlich.
Das obige ist der detaillierte Inhalt vonWie stellt SQL Server die Isolierung temporärer Tabellen in gleichzeitigen Prozessen sicher?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!