我了解到,当同时启用数据库副本时,无法在MS SQL DB上启用CDC,因为该副本将覆盖cdc捕获作业并将其禁用,但是我试图在我的计算机中使用CDC功能使用CDC控制任务的SSIS包,我可以将副本用作CDC源还是有其他方法
***请注意,由于性能原因,我将无法使用变更跟踪功能
答案 0 :(得分:0)
如果使用SQL Server 2016,则可以使用时态表。 SQL Server 2016引入了对时态表(也称为系统版本的时态表)的支持,这是一种数据库功能,它内置支持,可以在任何时间点提供有关表中存储的数据的信息,而不仅仅是提供正确的数据在当前时间。时间性是ANSI SQL 2011中引入的数据库功能。 喜欢:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (resultCode == Activity.RESULT_OK) { // Check for the request code, we are usign multiple startActivityForReslut
when (requestCode) {
PICK_CONTACT -> {
var cursor: Cursor? = null
try {
val contactUri:Uri=data!!.data!!
cursor=contentResolver.query(contactUri,null,null,null,null)
if (cursor!!.moveToFirst()){
val name= cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME))
val no= cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))
Log.e("data", "name: $name, Number: $no")
cursor.close()
}
} catch (e: Exception) {
e.printStackTrace()
Toast.makeText(this, e.message, Toast.LENGTH_SHORT).show()
}
}
}
} else {
Log.e("MainActivity", "Failed to pick contact")
}
}
对于保存CREATE TABLE dbo.Employee
(
[EmployeeID] int NOT NULL PRIMARY KEY CLUSTERED
, [Name] nvarchar(100) NOT NULL
, [Position] varchar(100) NOT NULL
, [Department] varchar(100) NOT NULL
, [Address] nvarchar(1024) NOT NULL
, [AnnualSalary] decimal (10,2) NOT NULL
, [ValidFrom] datetime2 GENERATED ALWAYS AS ROW START
, [ValidTo] datetime2 GENERATED ALWAYS AS ROW END
, PERIOD FOR SYSTEM_TIME (ValidFrom, ValidTo)
)
WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.EmployeeHistory));
语句的历史记录,效果很好
参考:MICROSOFT DOCUMENTATION - Click here
关于复制,更改跟踪和更改数据捕获的其他指南Find here