static void Main(){string srcConnString = "Data Source=(local);Integrated Security=true;Initial Catalog=testdb";string desConnString = "Data Source=****.sqlserver.rds.aliyuncs.com,3433;User ID=**;Password=**;Initial Catalog=testdb"; SqlConnection srcConnection = new SqlConnection();SqlConnection desConnection = new SqlConnection(); SqlCommand sqlcmd = new SqlCommand();SqlDataAdapter da = new SqlDataAdapter();DataTable dt = new DataTable(); srcConnection.ConnectionString = srcConnString;desConnection.ConnectionString = desConnString;sqlcmd.Connection = srcConnection; sqlcmd.CommandText = @"SELECT top 1000000 [PersonType],[NameStyle],[Title],[FirstName],[MiddleName],[LastName],[Suffix],[EmailPromotion] ,[AdditionalContactInfo],[Demographics],NULL as rowguid,[ModifiedDate] FROM [testdb].[dbo].[Person]";sqlcmd.CommandType = CommandType.Text;sqlcmd.Connection.Open();da.SelectCommand = sqlcmd;da.Fill(dt);using (SqlBulkCopy blkcpy = new SqlBulkCopy(desConnString, SqlBulkCopyOptions.CheckConstraints))//using (SqlBulkCopy blkcpy = new SqlBulkCopy(desConnString, SqlBulkCopyOptions.Default)){blkcpy.BatchSize = 2000;blkcpy.BulkCopyTimeout = 5000;blkcpy.SqlRowsCopied += new SqlRowsCopiedEventHandler(OnSqlRowsCopied);blkcpy.NotifyAfter = 2000; foreach (DataColumn dc in dt.Columns){blkcpy.ColumnMappings.Add(dc.ColumnName, dc.ColumnName);} try{blkcpy.DestinationTableName = "Person";blkcpy.WriteToServer(dt);}catch (Exception ex){Console.WriteLine(ex.Message);}finally{sqlcmd.Clone();srcConnection.Close();desConnection.Close(); }} } private static void OnSqlRowsCopied(object sender, SqlRowsCopiedEventArgs e){Console.WriteLine("Copied {0} so far...", e.RowsCopied);}2、通过jdbc sqlbulkcopy 方式:
2. 直接使用SQL Server Business Intelligence Development Stuidio新建 SSIS包
3、通过BCP方式
1. 先将数据BCP出来 BCP ...OUT
BCP testdb.dbo.person Out "bcp_data" /t /N /U **** /P *** /S "****.sqlserver.rds.aliyuncs.com,3433"
2. 然后将数据BCP进去 BCP...IN ,但需要指定提示:/h "CHECK_CONSTRAINTS"
BCP testdb.dbo.person In "bcp_data" /C /N /q /k /h "CHECK_CONSTRAINTS" /U *** /P *** /b 500 /S "***.sqlserver.rds.aliyuncs.com,3433"
4、通过bulk insert方式(在RDS不可是实现,因为不允许上传文件)
BULK INSERT testdb.dbo.person_inFROM N"D: racecp.txt"WITH( CHECK_CONSTRAINTS );四种方式教你在SQL Server中避免触发镜像SUSPEND,希望对大家的学习有所帮助。