我有兩個我想同步到讀取sql數據庫的sql服務器表。我想使用同步框架將來自源數據庫的數據平鋪到讀數據庫中的一個表中。我可以這樣做嗎?使用Microsoft同步框架將兩個表同步到一個讀取表中
回答
源和目標中的模式需要匹配。您可以添加一個視圖,將源數據庫中的兩個源表連接起來,並以與「讀取」數據庫期望的格式相同的格式顯示數據。
如果您使用的是較早的提供程序(與VS Local Database Cache項目使用的提供程序相同),則可以在服務器端使用一個視圖,但是,您的客戶端只能是SQL Ce。但即使這很棘手,如果在兩個源表上發生更改,是什麼限制了更改的行?如果表1更新,表2不是,反之亦然?
較新的SqlSyncProvider提供程序不支持視圖,因爲其更改跟蹤基於觸發器,並且整個配置對錶都有效。
@Scott,架構或表結構不需要匹配。
我想要做同樣的事情,我想。 這是我對計算器的問題: Merging 2 tables in a single table with different schema
我曾在這個問題上的一些時間和我達成了一些結果... 現在,我工作中的變化的僅爲跟蹤的情況下, PERSON表(所以如果ADDRESS中的某些內容發生更改,則更改不會同步)。但我想代碼可以改進以跟蹤ADDRESS中的變化......而現在我沒有考慮到目標數據庫中的變化(在CUSTOMER表中)。這將是更難以編碼,我想...
無論如何,我的解決方案添加一個處理程序changesSelected,那裏我改變了DataTable添加我需要的列(地址和城市)。我通過sql SELECT獲取地址和城市,並更新行...這適用於更新和插入的行... 問題引發了刪除的行。在我的db CUSTOMER中,主鍵必須是Id-Address,而不僅僅是Id(或者我不能爲每個人擁有多個ADDRESS)。因此,當SyncFX嘗試執行刪除操作時,鍵不匹配,並且刪除操作不會影響任何行...我不知道如何更改刪除狀態的DataRow,而且我也無法獲取從數據庫的地址...所以我不能有刪除的DataRow中的Id-Address信息...現在,我只能使用Id(唯一可用的信息爲已刪除的行)執行一個sql刪除。 ..
請嘗試改進代碼併發回,以便我們可以互相幫助!
這是代碼。首先是addhandler,然後將代碼放入處理程序。
AddHandler remoteProvider.ChangesSelected, AddressOf remoteProvider_ChangesSelected
...
Private Shared Sub remoteProvider_ChangesSelected(ByVal sender As Object, ByVal e As DbChangesSelectedEventArgs)
If (e.Context.DataSet.Tables.Contains("PersonGlobal")) Then
Dim person = e.Context.DataSet.Tables("PersonGlobal")
Dim AddressColumn As New DataColumn("Address")
AddressColumn.DataType = GetType(String)
AddressColumn.MaxLength = 10
AddressColumn.AllowDBNull = False
'NULL is not allowed, so set a defaultvalue
AddressColumn.DefaultValue = "Nessuna"
Dim CityColumn As New DataColumn("City")
CityColumn.DataType = GetType(String)
CityColumn.AllowDBNull = False
CityColumn.DefaultValue = 0
persona.Columns.Add(AddressColumn)
persona.Columns.Add(CityColumn)
Dim newPerson = person.Clone()
For i = 0 To person.Rows.Count - 1 Step 1
Dim row = person.Rows(i)
If (row.RowState <> DataRowState.Deleted) Then
Dim query As String = "SELECT * FROM dbo.address WHERE Id = " & row("AddressId")
Dim sqlCommand As New SqlCommand(query, serverConn)
serverConn.Open()
Dim reader As SqlDataReader = sqlCommand.ExecuteReader()
Try
While reader.Read()
row("Address") = CType(reader("Address"), String)
row("City") = CType(reader("City"), String)
' Solo importando mantengo i valori di RowState
newPerson.ImportRow(row)
End While
Finally
reader.Close()
End Try
serverConn.Close()
Else
' TODO - Non funziona la cancellazione!!!
' La cancellazione cerca la chiave primaria su cliente, che è ID-Via
' Noi abbiamo l'ID corretto, ma "nessuna" come via...
' Dobbiamo recuperare la via giusta...
Dim query As String = "DELETE FROM dbo.customer WHERE Id = " & row("Id", DataRowVersion.Original)
Dim sqlCommand As New SqlCommand(query, clientConn)
clientConn.Open()
sqlCommand.ExecuteNonQuery()
clientConn.Close()
End If
Next
newPerson.Columns.Remove(newPerson.Columns("AddressId"))
e.Context.DataSet.Tables.Remove(person)
e.Context.DataSet.Tables.Add(newPerson)
End If
End Sub
- 1. 同步兩個列表框
- 2. 同步兩個項目(同步使用的框架)
- 3. 與Microsoft CRM同步框架
- 4. 同步框架 - 不同作用域中的一個表
- 5. 在線MSSQL服務器同步使用Microsoft同步框架
- 6. 同步框架:如何指定多個表的同步順序?
- 7. 同步使用MS同步框架
- 8. 使用MS同步框架將SQL Server 2012同步到Postgres 9
- 9. 的MySQL,同步兩個表
- 10. 與jquery同步兩個表
- 11. 同步兩個MySQL表
- 12. 兩個列表同步
- 13. SSIS使用查找同步兩個表
- 14. 使用Apache Camel同步兩個表
- 15. MS同步框架 - 同步2個分支到中央分支
- 16. 同步讀取到一個java集合
- 17. 同步框架:我可以只同步我的表的一個子集嗎?
- 18. 同步相對錶中的同步框架2.1
- 19. 同步框架2.0同步數據庫中的所有表格
- 20. Microsoft同步框架DateTime問題
- 21. 同步框架Microsoft加密和壓縮
- 22. 同步MySQL中的兩個表格
- 23. 在兩個不同的框架中同步列表間的列寬等
- 24. 表不是在Microsoft同步得到同步frameword
- 25. 使用相同顏色在兩個表格中同步選區
- 26. 兩次同步表
- 27. 如何限制使用Microsoft同步框架的記錄同步到某個限制
- 28. 使用Microsoft同步框架2.1更新架構更改
- 29. 同步框架2.1未完成同步
- 30. 如何在同一頁中同步兩個表單