Zeal Blog - 泽欧里
  WWW Zeal Blog
梦想 就像鸡蛋
要么孵化 要么臭掉

SQL Server数据库复制

zeal 2008-02-28 17:13 于 开发/理论 , 1554 字 |  + 0 - 0   English
Made In Zeal 转载请保留原始链接:http://www.zeali.net/entry/557
标签 ( Tags ):  , 

很少摸 Windows 环境下的东西,最近被个 MS SQL Server 的数据库搞得头大。实在不像 MySQL 那样用起来轻车熟路, OrZ ...

本来以为企业管理器里面既然提供了 DTS 数据导入/导出 的功能,直接使用 DTS 指定源和目标库就可以完全复制数据库到远程服务器上了。结果发现除了表的基本结构和数据,字段约束、键值、默认值等都没过去。最终还是要靠直接磁盘拷贝数据文件了事。

如果数据库服务可以停下来的话,最快的方法是直接拷贝对应的 .mdf 和 .ldf 文件(在企业管理器选择数据库右键看属性的“数据文件”项确定文件名);然后执行T-SQL命令(比如新的目标数据库名为 test ):

-- 如果 test 数据库已经存在,需要先把其分离。
-- 如果已经有应用连接到该数据库的话,就需要使用企业管理器
-- "所有任务"中的"分离数据库"功能强制断开现有连接后再分离
EXEC sp_detach_db
      @dbname = 'test',
      @skipchecks = 'true'

-- 把拷贝出来的 .mdf 文件和 .ldf 文件作为 test 数据库的数据文件挂上去
EXEC sp_attach_db
      @dbname = 'test',
      @filename1 = 'e:\db\test.mdf',
      @filename2 = 'e:\db\test.ldf'

-- 如果不想使用原来的 .ldf 文件,也可以单独挂 .mdf 文件
EXEC sp_attach_single_file_db
      @dbname = 'test',
      @physname = 'e:\db\test.mdf'

如果当前数据库处于生产环境不允许关闭服务的话,可以使用 BACKUP / RESTORE 的方法来完成复制工作:

-- 把数据库名为realdb的数据库备份到指定的磁盘文件
BACKUP DATABASE realdb TO DISK = 'E:\db\BAK_FOR_realdb.bak'
-- 用 RESTORE FILELISTONLY 命令查看数据库备份文件里面的
-- 数据文件和日志文件的逻辑名称,用于下一步的命令
RESTORE FILELISTONLY FROM DISK = 'E:\db\BAK_FOR_realdb.bak'

-- 使用备份文件创建一个新的数据库, realdb_dat 和 realdb_log
-- 分别是上面使用 RESTORE FILELISTONLY 命令查出的数据文件逻辑
-- 名称
RESTORE DATABASE test
    FROM DISK = 'E:\db\BAK_FOR_realdb.bak'
    WITH MOVE 'realdb_dat' TO 'E:\db\test.mdf',
    MOVE 'realdb_log' TO 'E:\db\test.ldf'
GO

This Entry was Last Modified on 2008-02-28 17:17
引用本文(TrackBack): 此功能无限期关闭ing ... 如有引用请在文中标明出处并提供超链接  
没有评论.
对于这篇日志您有什么想法?我想听听您的高见。
如果您不是没有思想的机器Spammer,请告诉我 4 + 8 =
然后任选以下两种方式之一告诉我您的身份:
1. 使用您的 OpenID
2. 使用传统留言格式
(必填) 名字
如何称呼您?
(选填) URL
在此填写您的 Blog / Homepage 的地址,我将非常乐于访问
(选填) Email
Email地址将在经过防SPAM处理后显示在页面。如果您不希望公开自己的Email,请略过此栏
并写下您的见解:
(由于需要进行SPAM过滤,如果评论提交速度慢请耐心等待)
记住我?

  如何进行评论                   当有新回复时给我发送邮件通知
除了 <b> 和 <i> 之外,其他的HTML标签都将从您的评论中去除. URL 或 Email 地址会被自动加上链接.
当您点击发表或者预览之后,系统会自动保存您此次评论的内容,以便当网络原因发表失败时直接按Ctrl-V重新粘贴上次评论内容。
注意:快捷键及自动拷贝功能仅对IE浏览器有效。
 里,居也。——《说文》    里,邑也。——《尔雅》。李注:“居之邑也。”沪ICP备05024379号 Back To Home All Links Loading