看到标题,估计有同行笑了,这年代还有用sql2000的?真的有,最近单位服务器数据迁移升级,将数据库迁移到新服务器后,发现数据全是2000的,无法直接导入到sql2012。

没办法,只能先将数据库文件先导到安装有sql2008的电脑上(2000无法直接升级到2012,需要通过2005或者2008中转下)。

但是面对上百个数据库直接晕倒,一个个附加,升级完后再一个个分离绝对不是个好活。

于是就有了下边的代码

/***** 
附加指定文件夹的数据库

然后执行分离(为了升级数据库,只是为了附加的话,无需再分离)

*******/

---需要开启xp_cmdshell 如已经开启 可以略过
/***** Step 1 开启 xp_cmdshell 
Use Master
GO
EXEC master.dbo.sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE
GO
EXEC master.dbo.sp_configure 'xp_cmdshell', 1
RECONFIGURE WITH OVERRIDE
GO
*******/

if object_id('tempdb..#files') is  null 
Begin      
       CREATE TABLE #files (name varchar(200) NULL, sql varchar(7000) NULL)
End

DELETE #files

declare @path varchar(500)
declare @sql varchar(8000)

set @path='D:\旧题库数据库\DBFile'    ---指定要处理的文件夹
set @sql='dir '+@path+' /b'
  
--获取文件名称,存放在#files
INSERT #files(name)
   exec master..xp_cmdshell @sql
--删除不要的文件名称
DELETE #files WHERE coalesce(name, '') NOT LIKE '%.mdf'

UPDATE #files set name=REPLACE(name,'.mdf','')
UPDATE #files
SET   sql  = 'sp_attach_db @dbname = '''+name+''''+
',@filename1 = '''+@path+'\'+name+'.mdf''' +
',@filename2 = '''+@path+'\'+name+'.ldf'''

select * from #files

--执行附加
 DECLARE cur CURSOR STATIC LOCAL FOR
   SELECT sql FROM #files

OPEN cur

WHILE 1 = 1
BEGIN
   FETCH cur INTO @sql
   IF @@fetch_status <> 0
      BREAK

exec(@sql)
END

DEALLOCATE cur

-----分离数据库
declare @name varchar(500)

DECLARE cur CURSOR STATIC LOCAL FOR
   SELECT name FROM #files

OPEN cur

WHILE 1 = 1
BEGIN
   FETCH cur INTO @name
   IF @@fetch_status <> 0
      BREAK

exec('sp_detach_db ' + @name)
END

DEALLOCATE cur

--DROP TABLE  #files

slq2000数据库升级到sql2012相关推荐

  1. 成为MySQL DBA 博客系列-数据库升级

    数据库供应商通常每个月都会发布一些有bug /安全性修补程序的补丁,我们为什么要关心?新的版本可能对关于安全漏洞和黑客入侵系统的修复,所以除非安全性不被关注,否则您可能希望在您的系统上安装最新的安全修 ...

  2. 18.移动架构数据库升级解决方案

    今天的数据库升级将通过这个脚本文件完成,我们假设目前版本迭代中,已经上线了V001 V002版本,近期将要上线V003.首先先理清三个版本的数据库情况,三个版本中都涉及一个个数据库文件(暂不考虑分库的 ...

  3. 关于开发人员数据库权限配置以及规范数据库升级流程

    在项目的新版本发布过程中,暴露出了一些数据库权限管理的问题和数据库升级流程规范的问题. 在这次发布完真实版后,居然发现有些脚本没有被执行,导致用户升级完就出现了些Bug,产生了很不好的影响. 为此项目 ...

  4. EBS 11i数据库升级(9i-10g)几点事项

    最近几日在评估和测试EBS的系统升级(11i升级到R12),虽然官方的升级文档里介绍的比较详细了,但是依旧会出现一些容易疏忽的问题,这里做一些记录.这里并不是单纯的数据库升级,需要考虑EBS的特殊应用 ...

  5. 探索Oracle之数据库升级八 12c Downgrade 11gR2

    探索Oracle之数据库升级八 12c Downgrade 11gR2 前言: 我们前面已经完毕了11gR2 upgrade to 12c 的升级,整个过程还是比較顺利的,尽管和曾经版本号升级有些不太 ...

  6. Android 数据库升级解决方案

    请考虑如下情况: 在数据库升级时,不同版本的数据库,他们定义的表结构完全可能是不一样的,比如V1.0的表A有10个column,而在V1.1的表A有12个colum,在升级时,表A增加了两列,此时我们 ...

  7. Oracle数据库升级与补丁

    以下是Maclean.Liu 编写或收集的数据库升级(Upgrade)与补丁(patch fix)方面的知识: 甲骨文发布2012 1月数据库安全补丁Critical Patch Update Jan ...

  8. 数据库升级后,准备使用原有数据文件启动数据库

    因听到以前同事说到11.2.1版本在进行子查询时,速度有时会莫名的慢下来.正好有时间,也是测试服务器, 那就把数据库升级到11.2.3吧.原计划是升级后可以直接使用数据库的相关文件就能启动数据库. 但 ...

  9. Android数据库升级实例

    第一部分 Andoird的SQLiteOpenHelper类中有一个onUpgrade方法.帮助文档中只是说当数据库升级时该方法被触发.经过实践,解决了我一连串的疑问: 1. 帮助文档里说的" ...

最新文章

  1. open***在Windows客户端权限那些事
  2. DELPHI 7 动态链接库DLL断点调试
  3. 全屏背景:15个jQuery插件实现全屏背景图像或媒体
  4. 【收藏】Spark之RDD的mapPartitions算子
  5. 3种纯CSS实现中间镂空的12色彩虹渐变圆环方法
  6. 使用vue制作富文本框
  7. 你的知识死角不能否定你的技术能力
  8. SUN:开源在Web2.0时代
  9. java oracle 触发器_Oracle 触发器
  10. 减少 JavaScript 代码量的原生技术
  11. 函数指针 和 函数指针数组 和 函数指针数组
  12. 豪典软件测试版,豪典线材优化软件(通用线材优化工具)V2019.1.0 最新版
  13. android vue 编辑器,vue vlog下载 vue vlog(视频制作软件) for Android v3.16.3 安卓版 下载-脚本之家...
  14. (二)NIST CSF-框架基础
  15. Arm 虚拟硬件与新解决方案或将颠覆物联网产品研发
  16. river歌曲表达的意思_Lost Rivers这首歌到底想表达什么?
  17. 四舍五入函数round_如何在R中使用round()将数字四舍五入
  18. angularjs 关于Module 'ngLocale' is not available! is misleading
  19. 【深度学习(李沐)】
  20. 如何优化路由器TP_Link AX1800 Wi-Fi6的稳定性 - “普联TL-XDR1860易展版“

热门文章

  1. Appointment over SMS on Windows Mobile
  2. Dapr + .NET Core实战(二) 服务调用
  3. [019] C#基础:理解装箱与拆箱
  4. Nginx实战部署常用功能演示(超详细版),绝对给力~~~
  5. C# WPF:把文件给我拖进来!!!
  6. 译 | Azure 应用服务中的程序崩溃监控
  7. [PBI催化剂]国际水准,中国首款重量级PowerBIDeskTop外部工具问世
  8. 如何评估一个人解决问题的能力
  9. HttpClientFactory日志不好用,自己扩展一个?
  10. ASP.NET Core快速入门(第6章:ASP.NET Core MVC)--学习笔记