使用C#同步远程数据库 [英] Synchronize remote databases with C#

查看:72
本文介绍了使用C#同步远程数据库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用C#同步SQL Server 2008中的两个数据库.
我在下面关注了这篇文章,但遇到了一些问题.
http://msdn.microsoft.com/en-us/library/ff928758 (v = SQL.110).aspx [
有人可以帮我吗?
非常感谢~~


这是我完整的代码.

使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Text;
//使用System.Windows.Forms;
使用System.Data;
使用System.Data.SqlClient;


使用Microsoft.Synchronization;
使用Microsoft.Synchronization.Data;
使用Microsoft.Synchronization.Data.SqlServer;


命名空间ProvisionClient
{
课程计划
{
静态void Main(string [] args)
{
SqlConnection clientConn =新的SqlConnection(@"Data
来源=.\\ SQLEXPRESS;初始目录= SyncExpressDB;
Trusted_Connection =是);


SqlConnection serverConn =新的SqlConnection("Data
来源= 192.168.8.45 \\ SQLEXPRESS,1433;
初始目录= SyncDB;
用户ID = sa;密码= 123);


DbSyncScopeDescription scopeDesc =
SqlSyncDescriptionBuilder.GetDescriptionForScope
("ProductsScope",serverConn);

错误在这里
====> SqlSyncScopeProvisioning clientProvision =新
SqlSyncScopeProvisioning(clientConn,scopeDesc);


clientProvision.SetCreateTableDefault
(DbSyncCreationOption.CreateOrUseExisting);

clientProvision.Apply();
}
}
}

I''m trying to synchronize two databases in SQL Server 2008 by using C#.
I followed this article below but I got some problems.
http://msdn.microsoft.com/en-us/library/ff928758(v=SQL.110).aspx[^]

I can obtain it within two databases on a single computer.
But when I was trying to synchronize two databases which were on different computers, I got some errors at
"SqlSyncScopeProvisioning clientProvision = new SqlSyncScopeProvisioning(clientConn, scopeDesc);"

Could someone help me?
Thank you very much~~


This is my complete code.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;


using Microsoft.Synchronization;
using Microsoft.Synchronization.Data;
using Microsoft.Synchronization.Data.SqlServer;


namespace ProvisionClient
{
class Program
{
static void Main(string[] args)
{
SqlConnection clientConn = new SqlConnection(@"Data
Source=.\\SQLEXPRESS; Initial Catalog=SyncExpressDB;
Trusted_Connection=Yes");


SqlConnection serverConn = new SqlConnection("Data
Source=192.168.8.45\\SQLEXPRESS,1433;
Initial Catalog=SyncDB;
User ID=sa;Password=123");


DbSyncScopeDescription scopeDesc =
SqlSyncDescriptionBuilder.GetDescriptionForScope
("ProductsScope", serverConn);

error is here
====> SqlSyncScopeProvisioning clientProvision = new
SqlSyncScopeProvisioning(clientConn, scopeDesc);


clientProvision.SetCreateTableDefault
(DbSyncCreationOption.CreateOrUseExisting);

clientProvision.Apply();
}
}
}

推荐答案

顺便说一句,我认为服务器正常,因为我可以通过ODBC和Visual Studio Server Explorer将其连接
By the way, I think the server is OK because I can connect it by ODBC and Visual Studio Server Explorer


这是错误消息.非常抱歉,非英语版本.


未处理的例外状况:System.InvalidOperationException:执行个体失败. 于System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo,SqlInternal
ConnectionTds connHandler,布尔值ignoreSniOpenTimeout,Int64 timerExpire,Bool
ean加密,布尔值trustServerCert,布尔值IntegratedSecurity,SqlConnection
owningObject)
于System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo
serverInfo,字符串newPassword,布尔值ignoreSniOpenTimeout,Int64 timerExpire,
SqlConnection owningObject)
于System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host
,字符串newPassword,布尔型redirectedUserInstance,SqlConnection owningObject
,SqlConnectionString connectionOptions,Int64 timerStart)
于System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnecti
关于owningObject,SqlConnectionString connectionOptions,字符串newPassword,Bool
ean redirectedUserInstance)
于System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdent
身份,SqlConnectionString connectionOptions,对象providerInfo,字符串
newPassword,SqlConnection owningObject,布尔值redirectedUserInstance)
于System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOp
选项,对象poolGroupProviderInfo,DbConnectionPool池,DbConnection
owningConnection)
于System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConn
拥有owningConnection,DbConnectionPool池,DbConnectionOptions选项)
于System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection拥有
对象)
于System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection o
wningObject)
于System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection ownin
gObject)
于System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection ow
ningConnection)
于System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection ou
terConnection,DbConnectionFactory connectionFactory)
于System.Data.SqlClient.SqlConnection.Open()
于Microsoft.Synchronization.Data.SyncUtil.TryOpenConnection(IDbConnection co <​​br/> nnection)
于Microsoft.Synchronization.Data.SyncUtil.OpenConnection(IDbConnection连接
部门)
于Microsoft.Synchronization.Data.SqlServer.SqlEditionHelper.GetEdition(SqlCo
连接)
于Microsoft.Synchronization.Data.SqlServer.SqlSyncScopeProvisioning.set_Conn
ection(SqlConnection值)
于Microsoft.Synchronization.Data.SqlServer.SqlSyncScopeProvisioning..ctor(Sq
lConnection连接,DbSyncScopeDescription scopeDescription,SqlSyncScopePro
visioningType ProvisioningType,布尔值ExpectConnection)
于Microsoft.Synchronization.Data.SqlServer.SqlSyncScopeProvisioning..ctor(Sq
lConnection连接,DbSyncScopeDescription scopeDescription)
于ProvisionClient.Program.Main(String [] args)于C:\ Users \ Administrator \ Desk
top \新增资料夹\ SyncSQLServerAndSQLExpress \ ProvisionClient \ Program.cs:行33
请按任意键继续. .
This is error message. So sorry for non-english version.


未處理的例外狀況: System.InvalidOperationException: 執行個體失敗。
於 System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternal
ConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Bool
ean encrypt, Boolean trustServerCert, Boolean integratedSecurity, SqlConnection
owningObject)
於 System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo
serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire,
SqlConnection owningObject)
於 System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host
, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject
, SqlConnectionString connectionOptions, Int64 timerStart)
於 System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnecti
on owningObject, SqlConnectionString connectionOptions, String newPassword, Bool
ean redirectedUserInstance)
於 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdent
ity identity, SqlConnectionString connectionOptions, Object providerInfo, String
newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
於 System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOp
tions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection
owningConnection)
於 System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConn
ection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
於 System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owning
Object)
於 System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection o
wningObject)
於 System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection ownin
gObject)
於 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection ow
ningConnection)
於 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection ou
terConnection, DbConnectionFactory connectionFactory)
於 System.Data.SqlClient.SqlConnection.Open()
於 Microsoft.Synchronization.Data.SyncUtil.TryOpenConnection(IDbConnection co
nnection)
於 Microsoft.Synchronization.Data.SyncUtil.OpenConnection(IDbConnection conne
ction)
於 Microsoft.Synchronization.Data.SqlServer.SqlEditionHelper.GetEdition(SqlCo
nnection connection)
於 Microsoft.Synchronization.Data.SqlServer.SqlSyncScopeProvisioning.set_Conn
ection(SqlConnection value)
於 Microsoft.Synchronization.Data.SqlServer.SqlSyncScopeProvisioning..ctor(Sq
lConnection connection, DbSyncScopeDescription scopeDescription, SqlSyncScopePro
visioningType provisioningType, Boolean expectConnection)
於 Microsoft.Synchronization.Data.SqlServer.SqlSyncScopeProvisioning..ctor(Sq
lConnection connection, DbSyncScopeDescription scopeDescription)
於 ProvisionClient.Program.Main(String[] args) 於 C:\Users\Administrator\Desk
top\新增資料夾\SyncSQLServerAndSQLExpress\ProvisionClient\Program.cs: 行 33
請按任意鍵繼續 . . .


原来应该是

SqlConnection clientConn =新的SqlConnection(@"Data
来源=.\ SQLEXPRESS;初始目录= SyncExpressDB;
Trusted_Connection =是);

在字符串前面加上"@"时,只能有一个/

><</xml>
It turned out that should be

SqlConnection clientConn = new SqlConnection(@"Data
Source=.\SQLEXPRESS; Initial Catalog=SyncExpressDB;
Trusted_Connection=Yes");

there should be only one / while putting ''@'' before a string

>"<</xml>


这篇关于使用C#同步远程数据库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆