none
为什么自己创建的数据库无法创建快照? RRS feed

  • 问题

  • OS:Win6 X64

    DB:Microsoft SQL Server Enterprise (64-bit)

    请教,为什么AdventureWorks2012等此类微软自己创建的数据库就可以快照,自己建的数据库就没法;快照先决条件中的 "数据库必须处于同步镜像状态" 如何修改?查了半天没找到解决方法。有劳各位了。  错误消息如下:

    /*错误信息*/

    消息 5127,级别 16,状态 1,第 1 行
    必须指定用于创建数据库快照的所有文件。缺少文件“MobileMarket”。

    create database MobileMarket_snapshot_20140627_1044
    on
    (
     name = MobileMarket_data,
     filename = 'D:\database\MobileMarket_snapshot_20140627_1044.mdf'
    )
    as snapshot of MobileMarket
    go


    • 已编辑 Ronins 2014年6月27日 6:49 添加脚本
    2014年6月27日 3:18

全部回复

  • You have to specify where to put snapshot files. Can you post statement you used?
    2014年6月27日 3:58
  • 已贴出使用脚本。
    2014年6月27日 6:50
  • How many data files in source db? What are logical name? Have to match them when create snapshot.
    2014年6月27日 13:40
  • 你语法错了

    CREATE DATABASE A_dbss1800 ON
    ( NAME = Ad_Data, FILENAME =
    'C:\Ad_data_1800.ss' ) AS SNAPSHOT OF Ads;
    GO

    错误一:快照文件是稀疏文件,所以物理文件的后缀是.ss,而不是mdf

    D:\database\MobileMarket_snapshot_20140627_1044.mdf

    错误二:快照数据库跟新建一个全新的数据库是差不多的,所以你要确保

    D:\database\这个路径是否存在

    错误三:你的数据库如果没有做镜像的话,是不需要理会这个先决条件的,如果你的数据库做了镜像的话

    并且你要在备库(即是我们说的镜像库,不是主库)上建立数据库快照,才要遵循

    http://msdn.microsoft.com/zh-cn/library/ms175158.aspx

    http://technet.microsoft.com/zh-CN/library/ms189852

    
    • 若要在镜像数据库中创建数据库快照,数据库必须处于 SYNCHRONIZED 镜像状态。

    2014年6月29日 12:58
  • 某人又在这里胡说八道了。知之为知之,不知为不知。

    扩展名想叫什么就叫什么,虽然建议快照文件扩展名用ss,但不是规定。

    建快照时,name=MobileMarket_data不是随便写的。必须指定和源数据库里面的数据文件相同的逻辑名称。你原来的MobileMarket数据库的主数据文件的逻辑名称应该是MobileMarket,而不是MobileMarket_data。

    你可以select name from MobileMarket.sys.database_files where type=0确认一下


    想不想时已是想,不如不想都不想。

    2014年7月3日 6:52
    版主
  • 不好意思,我错了,详细可以参考msdn

    创建数据库快照 (Transact-SQL)

    里面说得很详细,LZ可以看一下

    2014年7月3日 7:01