如何使用.NET2.0以编程方式复制SQLServer2000表?我想备份一个表,用另一个名称将副本保存在同一个数据库中。我想以编程方式使用.NET2.0(最好是C#)。有人可以指出我应该怎么做吗?只需将此查询发送到服务器:SELECT*INTO[BackupTable]FROM[OriginalTable]这将从头开始创建备份表(如果它已经存在将抛出错误)。对于大桌子,需要一段时间才能准备好。这应该模仿数据类型、排序规则和NULLness(NULL或NOTNULL),但不会复制索引、键或类似的约束。如果您需要帮助将SQL查询发送到数据库,那是另一个问题。一种方法是在SQL中使用INTO以这种方式简单地执行常规查询:SELECT*INTONewTableNameFROMExistingTableName这会自动创建一个新表并插入旧表的行。另一种方法是使用System.Data.SqlClient命名空间中的SqlBulkCopy。有一篇很好的CodeProject文章解释了如何执行此操作:SQLBulkCopywithC#.Net程序员通常需要传输生产数据以进行测试或分析。将大量数据从任何资源复制到SQLServer的最简单方法是BulkCopying。.NETFramework2.0在ADO.NET“System.Data.SqlClient”命名空间中包含一个类:SqlBulkCopy。批量复制操作通常有两个独立的阶段。在第一阶段,您将拥有源数据。数据源可以是各种数据平台,如Access、Excel、SQL。您必须在代码中获取源数据,将其包装在DataTable或任何实现IDataReader的DataReader类中。之后,在第二阶段,您必须连接到目标SQL数据库并执行批量复制操作。.Net中的批量复制操作是将大量数据复制到SQLServer的一种非常快速的方法。原因是BulkcopySqlServer的机制。逐行插入所有数据,一个一个地消耗时间和系统资源。但是批量复制机制一次处理所有数据。所以数据插入变得非常快。代码很简单://建立连接SqlConnectionStringBuildercb=newSqlConnectionStringBuilder();cb.DataSource="SQLProduction";cb.InitialCatalog="销售额";cb.IntegratedSecurity=true;SqlConnectioncnn=newSqlConnection(cb.ConnectionString);//获取源数据SqlCommandcmd=newSqlCommand("SELECT*FROMPendingOrders",cnn);cnn.Open();SqlDataReaderrdr=cmd.ExecuteReader();//初始化SqlBulkCopy对象SqlBulkCopysbc=newSqlBulkCopy("server=.;database=ProductionTest;"+"IntegratedSecurity=SSPI");//复制数据到目的地sbc.DestinationTableName="Temp";sbc.WriteToServer(rdr);//关闭连接和其他sbc.Close();rdr.Close();cnn.关闭();您可以使用SQLServer管理对象(SMO)。您可以复制数据库(数据和模式)。您可以设置许多选项。以下示例复制整个数据库://连接到服务器Serverserver=newServer(".");//获取要复制的数据库Databasedb=server.Databases["MyDatabase"];//设置选项Transfertransfer=newtransfer.CopyAllObjects=true;transfer.DropDestinationObjectsFirst=true;transfer.CopySchema=true;transfer.CopyData=true;transfer.DestinationServer=".";transfer.DestinationDatabase="我的备份数据库";transfer.Options.IncludeIfNotExists=true;//传输模式和数据transfer.TransferData();您可以在MSDN上找到TransferClass的文档。根据表中记录的数量,这可能是一个非常糟糕的主意,无论是从C#还是从UI。对于小表,使用以下SQLCreatetabletable2(field1int,field2varchar(10))-当然有实际的字段名称和数据类型)INSERTtable2(field1,field2)SELECTfield1,field2fromtable1我建议创建表创建一次然后insert这样您就可以多次向表中添加记录。选择只会工作一次。至少,您可以执行“SELECT*INTONEWTableFROMOldTable”。您要创建所有索引/约束等吗?编辑:添加到splattne的评论中,您将必须获得要复制的表的Table实例的句柄。使用Script方法获取它将生成的脚本。修改脚本字符串以用新名称替换旧名称并在数据库上运行它。EDIT2:http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.table.table.aspxhttp://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.tableviewtabletypebase.script.aspx以上是C#教程:HowtoprogrammaticallycopySQLServer2000tablesusing.NET2.0?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
