如果我在名为 Production 的数据库上打开更改跟踪,我可以使用这些函数从另一个数据库获取更改数据吗?
例如:CHANGE_TRACKING_CURRENT_VERSION();
我尝试了以下方法,还尝试使用替换架构,sys
但我认为这种方法不起作用:
Use [Analysis]
GO
SELECT Production.dbo.CHANGE_TRACKING_CURRENT_VERSION()
我通过在 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()