原数据库是sql server 2005 企业版,
现在需要升级到sql server 2012 企业版,
SQL SERVER 都是正版的。sql2005的数据原先是sql2000升级过去。
数据是2004年开始到现在,9年的数据。现在用户反应系统速度越来越慢,
所有领导让升级到sql2012,然后对数据库进行优化。但是我对数据库这一块不是太了解。(没有专业的DBA)
请问一下,数据库升级需要注意哪些事项呢? 谢谢!

解决方案 »

  1.   

    现在用户反应系统速度越来越慢,
    所有领导让升级到sql2012,然后对数据库进行优化。
    --> 升级不一定能解决问题的.
      

  2.   

    sql2012 买都买了,不用岂不是浪费了
      

  3.   

    遇到性能问题,要分析系统瓶颈,
    一般都是可以通过修改SQL写法,索引之类解决的.
    实在不行再考虑升级硬件和软件..
      

  4.   

    升级是没有问题的,可以直接备份,然后再还原到sql2012上。一般升级后都要做索引重建和统计信息的手动更新。
    升级前需要收集一些信息,比如用户、链接服务器、job等等。
      

  5.   

    这个还真没办法,公司买的,和我没关系SQL写法,索引这点肯定要优化的,用sql2012的最主要的原因是 新的分页函数
      

  6.   

    在一个生产环境中,为了减少业务下线时间,通常会采用镜像再failover方式。
      

  7.   

    应用系统升级有时候会出问题,在升级前请确保对sql server 2005做好备份,防止升级失败能迁回2005,升级时用数据备份文件还原升级,这样可以查看到相关日志。我有sql server 2005升级到sql server 2012,升级后应用出现问题,将trace提交给微软也没解决问题。后面通过更改字段类型,重写函数与触发器自己解决了。
      

  8.   

    搜索升级白皮书。2000的不能直接到2012要通过中转。升级前先用升级向导看看有没有问题,然后解决这些问题。还要备份有ROLLBACK计划。升级完之后备份,更新统计信息,DBCC CHECKDB等。
      

  9.   

    是不是设置这些后,就会自动更新统计信息了?SET AUTO_CREATE_STATISTICS ON
    SET AUTO_UPDATE_STATISTICS ON
    SET AUTO_UPDATE_STATISTICS_ASYNC ON
      

  10.   

    前面应该加数据库名,alter database [数据库名] SET AUTO_CREATE_STATISTICS ON
    alter database [数据库名] SET AUTO_UPDATE_STATISTICS ON
    alter database [数据库名] SET AUTO_UPDATE_STATISTICS_ASYNC ON
      

  11.   

    得看实际情况,没法三两句说清楚。如果写规范,MS的文档有几十页,没人乐意去读
    要确保性能与安全,建议找较专业的DBA参予
    若有预算,欢迎联系ME
      

  12.   

    重建遇到一个奇怪的问题。BillDetail只有一个自增长的id做主键和索引
    DBCC showcontig('BillDetail')
    DBCC indexdefrag('MSDB','BillDetail','PK_BillDetail')
    DBCC DBREINDEX('BillDetail')最开始时,执行
    DBCC showcontig('BillDetail')SQL Server 分析和编译时间: 
       CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。
    DBCC SHOWCONTIG 正在扫描 'BillDetail' 表...
    表: 'BillDetail' (1988202133);索引 ID: 1,数据库 ID: 8
    已执行 TABLE 级别的扫描。
    - 扫描页数................................: 8
    - 扫描区数..............................: 4
    - 区切换次数..............................: 3
    - 每个区的平均页数........................: 2.0
    - 扫描密度 [最佳计数:实际计数].......: 25.00% [1:4]
    - 逻辑扫描碎片 ..................: 25.00%
    - 区扫描碎片 ..................: 50.00%
    - 每页的平均可用字节数.....................: 769.3
    - 平均页密度(满).....................: 90.50%
    DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。执行 DBCC DBREINDEX('BillDetail') 然后执行DBCC showcontig('BillDetail')
    和 执行 DBCC indexdefrag('MSDB','BillDetail','PK_BillDetail') 然后执行DBCC showcontig('BillDetail')
    得到的结果一样。SQL Server 分析和编译时间: 
       CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。
    DBCC SHOWCONTIG 正在扫描 'BillDetail' 表...
    表: 'BillDetail' (1988202133);索引 ID: 1,数据库 ID: 8
    已执行 TABLE 级别的扫描。
    - 扫描页数................................: 8
    - 扫描区数..............................: 6
    - 区切换次数..............................: 5
    - 每个区的平均页数........................: 1.3
    - 扫描密度 [最佳计数:实际计数].......: 16.67% [1:6]
    - 逻辑扫描碎片 ..................: 87.50%
    - 区扫描碎片 ..................: 50.00%
    - 每页的平均可用字节数.....................: 769.3
    - 平均页密度(满).....................: 90.50%
    DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。扫描密度反而更低了,这是什么情况?
      

  13.   

    BillDetail表是个小表吧? 对数据量很少的小表做索引重整意义不大,重点是大表.
      

  14.   

    不对呀,这个也是小表,两个表就差100行的数据
    重整索引之后
    扫描密度是100%SQL Server 分析和编译时间: 
       CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。
    DBCC SHOWCONTIG 正在扫描 'ExchangeSub' 表...
    表: 'ExchangeSub' (1358627883);索引 ID: 1,数据库 ID: 8
    已执行 TABLE 级别的扫描。
    - 扫描页数................................: 23
    - 扫描区数..............................: 3
    - 区切换次数..............................: 2
    - 每个区的平均页数........................: 7.7
    - 扫描密度 [最佳计数:实际计数].......: 100.00% [3:3]
    - 逻辑扫描碎片 ..................: 0.00%
    - 区扫描碎片 ..................: 0.00%
    - 每页的平均可用字节数.....................: 799.2
    - 平均页密度(满).....................: 90.13%
    DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。 SQL Server 执行时间:
       CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。