Sea*_*nOB 5 sql-server change-tracking
如果我在名为 Production 的数据库上打开更改跟踪,是否可以使用这些函数从另一个数据库获取更改数据?
例如: CHANGE_TRACKING_CURRENT_VERSION();
我尝试了以下方法,并尝试用 替换模式,sys
但我认为这种方法不起作用:
Use [Analysis]
GO
SELECT Production.dbo.CHANGE_TRACKING_CURRENT_VERSION()
Run Code Online (Sandbox Code Playgroud)
我通过在 Production 上创建一个调用这个函数的存储过程来解决这个问题。然后我可以从该 SQL Server 上的其他数据库调用该存储过程。但是想知道是否有更直接的方法。
我正在尝试将数据从一个系统迁移到另一个系统(在一两周内,然后关闭旧系统)。在另一个数据库上启用了更改跟踪。我受 SQL Server 版本限制,CDC 需要 Enterprise、Developer 或 Evaluation。
CHANGE_TRACKING_CURRENT_VERSION
是一个内置函数而不是 UDF,所以Production.dbo.CHANGE_TRACKING_CURRENT_VERSION()
是不允许的。
它不接受任何参数来指定数据库。
我会想象以下任何一种都会起作用。
第一个调用Production.sys.sp_executesql
并执行该函数。第二个调用sys.sp_executesql
当前数据库并添加显式USE
语句来设置上下文。我还没有设置更改跟踪和明确测试,但两种方法都按需要工作DB_NAME()
DECLARE @CHANGE_TRACKING_CURRENT_VERSION BIGINT;
EXEC Production.sys.sp_executesql
N'SELECT @ReturnValue = CHANGE_TRACKING_CURRENT_VERSION()',
N'@ReturnValue BIGINT OUTPUT',
@ReturnValue = @CHANGE_TRACKING_CURRENT_VERSION OUTPUT
SELECT @CHANGE_TRACKING_CURRENT_VERSION
Run Code Online (Sandbox Code Playgroud)
DECLARE @CHANGE_TRACKING_CURRENT_VERSION BIGINT;
EXEC sys.sp_executesql
N'USE Production;
SELECT @ReturnValue = CHANGE_TRACKING_CURRENT_VERSION()',
N'@ReturnValue BIGINT OUTPUT',
@ReturnValue = @CHANGE_TRACKING_CURRENT_VERSION OUTPUT
SELECT @CHANGE_TRACKING_CURRENT_VERSION
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1589 次 |
最近记录: |