出国留学网小编们精心为广大考生准备了“计算机三级考试2017网络技术辅导资料”,各位同学赶快学起来吧,做好万全准备,祝各位同学考试顺利通过。更多相关资讯请持续关注出国留学网。
SQLServer数据转换服务小妙招
在数据转换任务中,就提供了一系列类似的工具,来简化数据库管理员的工作。如在DTS组套种,有一个发送邮件的工具。通过相关的设置,数据库会在包成功或者失败的时候自动发送一个电子邮件给数据库管理员,以提醒他作业是成功还是失败。并且会附上比较详细的信息,以便于数据库管理员进行后续的操作。
数据转换功能中,还包含了一个执行包任务,是的一个包运行另一个作为包步骤。这可以让我们的工作更加的自动化。如在数据库导入过程中,我们可以通过包运行计划,把需要导入的数据表一步步按顺序写入执行包计划中。而让数据库在比较空闲的时候,自动按序导入数据。而数据库管理员不用在旁边指挥。
可见,数据转换服务是功能很强的一项服务。在数据导入与转换的过程中,笔者首推这个工具。特别是在数据量比较大的情况下,这个数据转换服务确实能够起到画龙点睛的作用。
以上的相关内容就是对SQL Server数据转换服务的四个妙之执行一些自动化的操作的介绍,望你能有所收获。
上述的相关内容就是对SQL Server数据转换服务的四个妙之执行一些自动化的操作的描述,希望会给你带来一些帮助在此方面。
Varchar与char的区别
char 对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节
Varchar 的类型不以空格填满,比如varchar(100),但它的值只是"qian",则它的值就是"qian"
而char 不一样,比如char(100),它的值是"qian",而实际上它在数据库中是"qian "(qian后共有96个空格,就是把它填满为100个字节)。
由于char是以固定长度的,所以它的速度会比varchar快得多!但程序处理起来要麻烦一点,要用trim之类的函数把两边的空格去掉!
使用BulkCopy将大量数据复制到数据库
.Net FrameWork 2.0 新增功能 Bulk Copy 可以很快将大量数据加载到数据库中, 现在利用这一新功能来实现上述功能. 这里从 MS Sql Server 2000 的 NorthWind 的 Orders 表加载数据到 DateTable 模拟要向数据库服务器提交的多条记录集 . 用 Tempdb 库来模拟目标数据库服务器 . 先在 Tempdb 建一个表 temp_orders USE TEMPDB CREATE TABLE TEMP_ORDERS ( TEMP_ORDERID INT, TEMP_CUSTOMERID NCHAR(5), TEMP_ORDERDATE DATETIME, TEMP_SHIPNAME NVARCHAR(40) ) 下面为模拟程序 protected void Page_Load(object sender, EventArgs e) { #region 从NorthWind的Orders表获取要插入的数据 DataTable dtNorthWindOrders = new DataTable(); using ( SqlConnection northWindConnection = new SqlConnection( "Data Source=.;Initial Catalog=NorthWind;Integrated Security=True" ) ) { using ( SqlDataAdapter northWindAdapter = new SqlDataAdapter( "SELECT ORDERID,CUSTOMERID,ORDERDATE,SHIPNAME FROM ORDERS" , northWindConnection ) ) { northWindAdapter.Fill( dtNorthWindOrders ); } } #endregion using ( SqlConnection tempdbConnection = new SqlConnection( "Data Source=.;Initial Catalog=Tempdb;Integrated Security=True" ) ) { tempdbConnection.Open( ); using ( SqlTransaction tran = tempdbConnection.BeginTransaction( ) ) { SqlBulkCopy bulkCopyOrders = new SqlBulkCopy( tempdbConnection , SqlBulkCopyOptions.Default , tran ); bulkCopyOrders.DestinationTableName = "TEMP_ORDERS"; //将数据源表字段和目标表的字段做个映射 bulkCopyOrders.ColumnMappings.Add( "ORDERID" , "TEMP_ORDERID" ); bulkCopyOrders.ColumnMappings.Add( "CUSTOMERID" , "TEMP_CUSTOMERID" ); bulkCopyOrders.ColumnMappings.Add( "ORDERDATE" , "TEMP_ORDERDATE" ); bulkCopyOrders.ColumnMappings.Add( "SHIPNAME" , "TEMP_SHIPNAME" ); bulkCopyOrders.BulkCopyTimeout = 1000; //每处理10行触发一个事件向页面上输出一个消息 bulkCopyOrders.SqlRowsCopied += new SqlRowsCopiedEventHandler( onRowsCopy ); bulkCopyOrders.NotifyAfter = 10; try { bulkCopyOrders.WriteToServer( dtNorthWindOrders ); tran.Commit( ); } catch ( Exception ex ) { Response.Write( ex.ToString( ) ); } finally { dtNorthWindOrders = null; } } } } private void onRowsCopy ( object Sender , SqlRowsCopiedEventArgs args ) { Response.Write("已复制:"+ args.RowsCopied.ToString( ) + "" ); } 通过SQL SERVER 事件探察器发现执行的SQL为: insert bulk TEMP_ORDERS ([TEMP_ORDERID] Int, [TEMP_CUSTOMERID] NChar(5) COLLATE Chinese_PRC_CI_AS, [TEMP_ORDERDATE] DateTime, [TEMP_SHIPNAME] NVarChar(40) COLLATE Chinese_PRC_CI_AS) 通过运行程序可以看出这个速度是相当的快 , 使用这个方法的最大优点是 : 减少对数据库的访问次数 . WriteToServer不仅可以处理 DataTable 对象 , 还可以处理 DataReader , DataRow 对象数组 .