宝哥软件园

使用SQL Server 2012自带数据库维护工具的技巧

编辑:宝哥软件园 来源:互联网 时间:2021-08-03

类型:编程工具大小:4.9M语言:中文评分:1.6标签:立即下载2012年第二季度,SQL Server 2012已经发布。作为一个普通的开发者,我没有太多的热情去关注这些技术。经过短暂的早期采用,我决定把它们放在一边,忽略它们。自2000年以来,SQL Server一直被视为首选的项目数据库平台。随着SQL Server 2005、2008、2008 R2、2012的发布,出现的问题也越来越多。最常遇到的问题之一是不同版本的SQL Server之间的数据库转换。

例如,数百名客户仍在使用SQL Server 2000。根据我的经验,相当多的客户仍然使用这个版本的SQL Server。从2006年开始,客户从项目开始就推荐SQL Server 2005,所以一直都是这个版本。2009年,建议新客户使用SQL Server 2008或SQL Server 2008 R2。从理解上来说,SQL Server 2008 R2相当于SQL Server 2010。此外,这些版本之间还有服务包,并且添加了几个版本的SQL Server。理论上建议客户升级到最新的服务包,也有客户因为稳定性原因拒绝升级。因此,有许多版本的SQL Server。作为开发人员,通常只安装最新的SQL Server,以防止在寻找客户问题时出现数据库版本不兼容,数据库无法恢复的错误。但是,最新的SQL Server 2012不再支持SQL Server 2000的备份文件,这不是一个好消息。

当有很多客户时,经常会遇到以下错误。例如,如果您想查找客户数据库的问题,通常会出现此问题。如果你不耐烦,就安装最新的SQL Server。如果你不想这样做,以下方法可能会对你有所帮助。

SQL Server导入/导出

SQL Server附带的导入和导出向导在大多数情况下都是有效的。我推荐的步骤是先为目标数据库创建一个脚本,让SQL Server只传输数据,而不是创建表和传输数据,这样可以减少一些奇怪的错误。

这个工具用的不多,有各种奇怪的问题,也没有积累多少经验。

SQL对象级恢复本机

RedGate公司的SQL Toolbet系列组件之一可以用SQL Server的备份文件中的数据生成SQL语句,并直接在目标数据库中执行。这种方法成功率很高。带有数据的简单SQL INSERT语句可以在任何版本的SQL Server中正确插入数据。

点击查看恢复脚本,查看其生成的SQL脚本,直接将备份数据文件转换成SQL语句,相当方便。

目前,支持SQL Server 2008 R2的备份集可以满足大多数客户的应用。

查询生成器

公司工具库中的一个工具,一般是客户维护人员用来快速导入导出数据的。

以Northwind数据库为例,可以立即生成该表的INSERT语句并保存到剪贴板。示例语句如下

插入到[员工]([员工编号],[姓氏],[名字],[头衔],[职位名称],[出生日期],[日期],[地址],[城市],[地区],[邮政编码],[国家],[家庭电话],[分机],[照片],[注释],[报告],[照片路径])值(9,N'Dodsworth,N'Anne,N '销售代表“不,女士。”,' 1966-1-27 0:0:0.0 ',' 1994-11-15 0:0:0.0 ',北'犬牙道七号,N'London ',N ' ',N'WG2 7LT ',N'UK ',N'(71) 555-4444 ',N'452 ',N'System.Byte[]',N'Anne拥有圣劳伦斯学院英语学士学位。她精通法语和德语,5,N ' http://accweb/emmpoyees/davolio。BMP ')插入到[EmployeeID]([EmployeeID],[姓氏],[名字],[头衔],[头衔of头衔],[生日],[HireDate],[地址],[城市],[地区],[邮政编码],[国家],[家庭电话],[分机],[照片],[备注],[报告],[照片路径])值(8,N '卡拉汉,' 1958-1-9 0:033600.0 ',' 1994-3-5 0:0:0.0 ',N ' 4726-11 ave . e ',N'Seattle ',N'WA ',N'98105 ',N'USA ',N'(206) 555-1189 ',N'2344 ',N'System.Byte[]',N'Laura获心理学学士学位她还完成了商务法语课程。她读和写法语,2,N ' http://accweb/em polies/davolio。' BMP ' '

这样,很方便的搬动数据库到另一个位置,简单灵活。对于图片数据,要单独处理。对于有种子字段的列,要在导入前,开启,语句如下所示

设置标识_插入dbo .ICMOVh关闭设置标识_插入dbo .开

对于主从表数据,先导入主表,再导入从表。删除主从表数据,则是先删从表,再删主表。

低纬边界层将军

作为对象关系映射(对象关系映射)的基本特征,跨数据库平台。你可以运用此特点,从一个数据库中读取,然后改变连接字符串,在另一个数据库中保存,完成数据库的转移工作。以销售单为例子,读取销售单的代码,看起来是这样的

公共销售订单实体获取销售订单(系统。字符串RefNo,IPrefetchPath2 prefetchPath,ExcludeIncludeFieldsList字段列表){ SalesOrderEntity _ sales order=新销售订单实体(RefNo);使用(数据访问适配器数据库适配器=GetCompany DataAccessAdapter()){ bool find=adapter .FetchEntity(_SalesOrder,prefetchPath,null,字段列表);if(!发现)扔新粉底。常见。记录未找到异常("无效销售订单");} return _ SalesOrder}

同时,保存销售单的代码,看起来是这样的

公共销售订单实体保存销售订单(销售订单实体销售订单,实体集合实体删除,字符串序列代码){使用(数据访问适配器数据库适配器=GetComPany DataAccessAdapter()){ 0尝试{适配器。开始事务(隔离级别ReadCommitted,' SaveSalesOrder ');适配器SaveEntity(SalesOrder,true,false);适配器commit();}捕获{适配器回滚();扔;} }退货销售订单;}

这些代码均是由代码生成器直接生成的。完成数据转移的对象关系映射(对象关系映射)代码,看起来是这样子的

字符串源='数据源=192 .168 .0 .96;初始目录=TS用户Id=sa密码=假日;';字符串目标='数据源=192 .168 .0 .200;初始目录=TS用户Id=sa密码=假日;';ClientProxyFactory .ConnectionString=sourceISalesOrderManager manager=ClientProxyFactory .CreateProxyInstanceISalesOrderManager();销售订单实体销售订单=经理GetSalesOrder(customerNo,null);ClientProxyFactory .ConnectionString=目标;经理。保存销售订单;

就这样几句代码,把销售单数据从192.168.0.96的机器搬动到192.168.0.200的机器上。

更进一步的,这几句代码可以写成一个泛型的方法,传入参数,即可达到批量搬动数据。

根据我的了解和探索,项目仍然使用主流的SQL Server 2005,配合SQL Server 2008的Express版本,2008 R2,这样可以读取高于SQL Server 2005的客户数据库,并与更新后的数据库兼容。以便在不同版本的SQL Server之间交换数据,供您参考。

更多资讯
游戏推荐
更多+