gpt4 book ai didi

sql - 如何设置可在多个批处理中使用的 session 变量?

转载 作者:行者123 更新时间:2023-12-02 22:13:12 24 4
gpt4 key购买 nike

我有一个大型数据库脚本,用于将多个具有相同结构的数据库迁移到一个目标数据库。该目标数据库更加通用,因此它能够存储来自不同源数据库的数据。我使用变量来跟踪当前正在迁移的实体,以便我知道要在目标表中插入什么 ID。

目前迁移性能非常糟糕。为了能够更好地分析脚本,我想通过在每个表迁移之后放置“go”来分割脚本,但这会破坏变量。有没有办法声明一个可供整个连接/ session 访问的变量?就像临时#table 一样?

最佳答案

查询:

DECLARE
@UserID TINYINT = 1
, @LocaleID INT = 123456789
, @ApplicationID BIGINT = 123456789123456789
, @UserName VARCHAR(10) = 'User1'
, @context VARBINARY(128)

SELECT @context =
CAST(@UserID AS BINARY(1)) +
CAST(@LocaleID AS BINARY(4)) +
CAST(@ApplicationID AS BINARY(8)) +
CAST(@UserName AS BINARY(10))

SET CONTEXT_INFO @context

GO

SELECT
UserID = CAST(SUBSTRING(ci, 1, 1) AS TINYINT)
, LocaleID = CAST(SUBSTRING(ci, 2, 4) AS INT)
, ApplicationID = CAST(SUBSTRING(ci, 6, 8) AS BIGINT)
, UserName = CAST(SUBSTRING(ci, 14, 10) AS VARCHAR)
FROM (SELECT ci = CONTEXT_INFO()) t

结果:

UserID      LocaleID    ApplicationID      UserName
----------- ----------- ------------------ ------------------------------
1 123456789 123456789123456789 User1

其他信息:

MSDN - CONTEXT_INFO

关于sql - 如何设置可在多个批处理中使用的 session 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16415998/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com