Tôi đã viết một thủ tục được lưu trữ để nhập và chuyển đổi dữ liệu từ cơ sở dữ liệu này sang cơ sở dữ liệu khác. Mỗi lần nhập sẽ lấy một ID công ty và nhập tất cả dữ liệu liên quan đến công ty này.Phạm vi của các bảng tạm thời trong SQL Server
Để trợ giúp với bước chuyển đổi, tôi sử dụng các bảng tạm thời. Là một phần của việc xem xét kịch bản, tôi được yêu cầu sử dụng các biến bảng thay vì các bảng tạm thời. Người đánh giá cho rằng nếu chúng tôi chạy hai lần nhập khác nhau cùng một lúc, bảng tạm thời sẽ được chia sẻ và làm hỏng quá trình nhập.
Câu hỏi:
- Có đúng là các bảng tạm thời sẽ được chia sẻ nếu chúng ta chạy hai nhập khác nhau cùng một lúc?
- Mỗi cuộc gọi có gọi tới số
EXEC
tạo phạm vi mới không?
Đây là ví dụ về kịch bản.
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
câu _có thể được thực hiện cùng một lúc bởi nhiều người dùng, Cơ sở dữ liệu phải có thể phân biệt các bảng được tạo bởi những người dùng khác nhau_ là khó hiểu! Dường như * cùng một người dùng * trong các phiên khác nhau chia sẻ bảng tạm thời. Và không phải như thế. – Alex
@ Alex - Tôi đồng ý rằng nó có thể hơi khó hiểu, nhưng thật không may, đó là cách Microsoft đã chọn để cụm từ nó. –