分离和附加数据库方法

合集下载

U8——数据库附件方法迁移用友U8 10.1

U8——数据库附件方法迁移用友U8 10.1

数据库附加方法迁移用友U8 10.12015年8月1日23:44:32一、环境二、分离/附加概述SQL Server提供了“分离/附加”数据库、“备份/还原”数据库、复制数据库等多种数据库的备份和恢复方法。

这里介绍一种学习中常用的“分离/附加”方法,类似于大家熟悉的“文件拷贝”方法,即把数据库文件(.M DF)和对应的日志文件(.LDF)拷贝到其它磁盘上作备份,然后把这两个文件再拷贝到任何需要这个数据库的系统之中。

比如,在实验教学过程中,同学们常常想把自己在学校实验室计算机中创建的数据库搬迁到自己的计算机中而不想重新创建该数据库,就可以使用这种简单的方法。

但由于数据库管理系统的特殊性,需要利用SQL Server提供的工具才能完成以上工作,而直接的文件拷贝是行不通的。

这个方法涉及到SQL Server分离数据库和附加数据库这两个互逆操作工具。

1、分离数据库就是将某个数据库(如student_Mis)从SQL Server数据库列表中删除,使其不再被S QL Server管理和使用,但该数据库的文件(.MDF)和对应的日志文件(.LDF)完好无损。

分离成功后,我们就可以把该数据库文件(.MDF)和对应的日志文件(.LDF)拷贝到其它磁盘中作为备份保存。

2、附加数据库就是将一个备份磁盘中的数据库文件(.MDF)和对应的日志文件(.LDF)拷贝到需要的计算机,并将其添加到某个SQL Server数据库服务器中,由该服务器来管理和使用这个数据库。

三、附加数据库时丢失日志文件的风险1. SQL Server数据库启动的过程数据库启动时,大致可以分为以下3个过程:(1)分析:读取日志文件,从而分析数据文件中的检查点是否是最后一个检查点,并且分析哪些事务未提交从而需要回滚。

(2)前滚(Redo):数据文件的检查点之后的所有事务都重做一次,直到最后一笔事务。

(3)回滚(Undo):撤销所有未提交的事务。

2. 附加数据库时丢失日志文件的潜在风险由于预写事务日志(WAL)是一种缓存机制,数据文件也采用了缓存机制(检查点),那么丢失了日志文件可能有以下风险:(1)如果数据库关闭时未执行检查点(例如,shutdown with nowait),那么这些数据将不会回写到数据文件,即丢失了部分数据。

处理数据库置疑的方法

处理数据库置疑的方法

处理数据库置疑的方法处理数据库置疑的方法先分离数据库企业管理器--右键置疑的数据库--所有任务--分离数据库然后备份你的置疑数据库的文件,再按下面的步骤处理:1.新建一个同名的数据库2.再停掉sql server3.用置疑数据库的文件覆盖掉这个新建的同名数据库,只覆盖mdf文件,日志文件不要覆盖4.再重启sql server5.此时打开企业管理器时新建的同名数据库会出现置疑,先不管,打开查询分析器执行下面的语句(注意修改其中的数据库名)重建日志文件,经过修复后数据就可以正常分离并附加了,语句中“C:\置疑的同名数据库名_Log.ldf”是重建日志日志文件存放路径,在重建日志后,最好将数据库分离并将重新创建的日志文件拷贝到数据库文件所在目录,再重新进行附加。

--重建日志文件,修复损坏的日志USE MASTERSP___RE 'ALLOW __',1 __GURE WITH __EGOUPDATE __BASES SET STATUS =__ WHERE NAME='置疑的同名数据库名'Godbcc rebuild_log('置疑的同名数据库名','C:\置疑的同名数据库名_Log.ldf')GOupdate sysdatabases set status =28 where name='置疑的同名数据库名'Gosp_configure 'allow updates', 0 reconfigure with overrideGo6、数据库修复后还需要进行数据库检测,看是否存在一些错误,数据库检测需要用DBCC __命令,如下:DBCC __('置疑的同名数据库名')如果检测到错误,需要进行修复,但修复数据库需要在单用户模式下,请使用以下语句,ALTER __E 置疑的同名数据库名SET SINGLE_USER WITH __K __TEDBCC __ ('置疑的同名数据库名',REPAIR___)GOALTER __E 置疑的同名数据库名SET MULTI_USER WITH __K __TEGO如果还有错误,执行下面的语句DBCC __ ('数据库名',REPAIR_ALLOW_DATA_LOSS )-------(执行一次如果还有错误,可以多执行几次)7、有时通过DBCC __能够修复数据库中的错误,但有时不能修复,可能需要对单个有问题的数据表进行修复,需要使用DBCC __BLE('有问题的数据表名',REPAIR___) 命令,详细请看联机帮助8、DBCC __命令介绍检查指定数据库中的所有对象的分配和结构完整性。

SQL数据库分离与附加

SQL数据库分离与附加

2012-3-27
龍光輝 Bright Long
返回主目录
6
分离数据库
五、2、在没有分离数据之前,复制MDF与LDF两个文件,在粘贴的时候出错,提示文件 在没有分离数据之前,复制MDF与LDF两个文件,在粘贴的时候出错, MDF 两个文件 已在另一个程序中打开,这也是SQL对于文件的保护措施, SQL对于文件的保护措施 已在另一个程序中打开,这也是SQL对于文件的保护措施,所以我们必须先分离数据库然 后再复制保存
龍光輝 Bright Long
返回主目录
5
分离数据库
五、1、在没有分离数据之前,复制MDF与LDF两个文件,在粘贴的时候会出错,提示程 在没有分离数据之前,复制MDF与LDF两个文件,在粘贴的时候会出错, MDF 两个文件 序已在另一个程序打开,这也是SQL对于文件的保护措施,下面就先复制一下 SQL对于文件的保护措施 复制一下, 序已在另一个程序打开,这也是SQL对于文件的保护措施,下面就先复制一下,在其它地 方粘贴看看
2012-3-27
龍光輝 Bright Long
返回主目录
12
附加数据库
二、分离了数据库之后,一定要把它附加回来才可以用,它的方法和新建一个附加数据库 分离了数据库之后,一定要把它附加回来才可以用, 的方法一样,下面就开始介绍: 的方法一样,下面就开始介绍: 选择要附加的数据库文件MDF,然后单击确定按钮继续, 数据库文件MDF 确定按钮继续 2、选择要附加的数据库文件MDF,然后单击确定按钮继续,
2012-3-27
龍光輝 Bright Long
返回主目录
4
ቤተ መጻሕፍቲ ባይዱ
分离数据库
四、在事务日志文件选项卡,可以看到Log文件存放的位置及分配的空间,Log文件空间一 在事务日志文件选项卡,可以看到Log文件存放的位置及分配的空间,Log文件空间一 看到Log文件存放的位置 ,Log 般比数据库文件要大

数据库应用基础第2章习题参考答案

数据库应用基础第2章习题参考答案

1.选择题(1)下列(C)不是sql 数据库文件的后缀。

A..mdf B..ldf C..tif D..ndf(2)SQL Server数据库对象中最基本的是(B)。

A.表和语句B.表和视图C.文件和文件组D.用户和视图(3)事务日志用于保存(C.)。

A. 程序运行过程B. 程序的执行结果C. 对数据的更新操作D. 数据操作(4)Master数据库是SQL Server系统最重要的数据库,如果该数据库被损坏,SQL Server将无法正常工作。

该数据库记录了SQL Server系统的所有(D)。

A. 系统设置信息B. 用户信息C. 对数据库操作的信息D. 系统信息(5)SQL Server中组成数据库的文件有(B)类型。

A. 2B. 3C. 4D. 5(6)分离数据库就是将数据库从(B)中删除,但是保持组成该数据的数据文件和事务日志文件中的数据完好无损。

A. WindowsB. SQL ServerC. U盘D. 企业管理器(7)数据库恢复的基础是利用转储的冗余数据。

这些转储的冗余数据包括(C )。

A. 数据字典、应用程序、审计档案、数据库后备副本B. 数据字典、应用程序、审计档案、日志文件C. 日志文件、数据库后备副本D. 数据字典、应用程序、数据库后备副本2.填空题(1)数据库逻辑结构中的文件主要存储(用户数据),而且存储所有与(用户数据)相关的信息。

(2)数据库物理结构主要应用于面向计算机的(数据)组织和管理。

(3)SQL Server的(逻辑组件)通常被称为数据库对象。

(4)一个数据库只能有一个(主数据)文件。

一个数据库可以有(零个)或多个(次数据)文件。

(5)事务日志文件是用来(对数据的)更新情况的文件,扩展名为LDF。

(6)SQL Server中(数据存储)的基本单位是页,一页的大小为8 千字节(KB )。

页是存储数据的(基本)单位。

(7)一个服务器在理论上可以管理(32,767 )个数据库。

SQL数据库日记文件满造成数据库不能保存数据的处理方法

SQL数据库日记文件满造成数据库不能保存数据的处理方法

SQL Server2000数据库收缩、分离与附加当日记文件储存满以后,会出现SQL数据库数据无法保存现象。

这就造成了我们在运行KJ2008软件的时候出现,数据库连接正常,但报表打印出现“SQL 2009-4-11数据无效”。

此时,首先应该对kj2006数据库进行手动收缩。

收缩不成功才考虑分离和附加。

一、收缩数据库1、点击“程序》Microsoft SQL Server》企业管理》”,打开企业管理器2、展开服务器组,然后展开服务器,选中要分离的数据库(kj2006)3、点击鼠标右键“所有任务》收缩数据库”,出现如下窗口4、点击“文件”,出现如下窗口选择:kj2006_log(日记文件),然后单独对日记文件进行收缩。

点:确定。

即完成对日记文件的收缩。

然后查看日记文件是否缩小。

SQL Server 2000允许分离数据库的数据和事务日志文件,然后将其重新附加到同一台或另一台服务器上。

分离数据库将从SQL Server 删除数据库,但是保证在组成该数据库的数据和事务日志文件中的数据库完好无损。

然后这些数据和事务日志文件可以用来将数据库附加到任何SQL Server 实例上,这使数据库的使用状态与它分离时的状态完全相同。

数据库分离和附加其实很简单,您即使是初次接触数据库,做起来也很容易。

一、分离数据库1、点击“程序》Microsoft SQL Server》企业管理》”,打开企业管理器2、展开服务器组,然后展开服务器,选中要分离的数据库3、点击鼠标右键“所有任务》分离数据库”,出现如下窗口4、点击确定,该选定的数据库就被分离(分离后的数据库和事务日志文件路径就是它们原先所在的路径)。

应注意,只有“使用本数据库的连接”数为0时,该数据库才能分离。

所以分离数据库时尽量断开所有对要分离数据库操作的连接,如果还有连接数据库的程序,会出现数据库的连接状态窗口,显示正在连接此数据库的机器以及名称,点击清除按钮将从服务器强制断开现有的连接。

C#简单构架之EF进行读写分离+多数据库(MysqlSqlService)

C#简单构架之EF进行读写分离+多数据库(MysqlSqlService)

C#简单构架之EF进⾏读写分离+多数据库(MysqlSqlService)最近因为项⽬需要,研究了下EF的读写分离,所以做了⼀个demo进⾏测试,下⾯是项⽬的结构表现层view主要提供Web、WebApi等表现层的解决⽅案公共层public主要提供项⽬公共类库,数据缓存基础⽅法等实体层model主要提供数据库映射模型,还有就是DDD领域操作模型数据层Db主要封装EF操作基础类数据服务层Service主要提供数据库操作服务、缓存操作服务数据接⼝服务层inface主要提供数据库操作服务接⼝、缓存操作服务接⼝1.⾸先是多数据库的⽀持,⽬前就⽀持mysql/sqlservice,如果需要添加更多的数据库⽀持,只需要再数据库操作类型上⾯添加即可///<summary>///数据库类型///</summary>public enum DbContextType : byte{SqlService = 1,MySql = 2}View Code分别对mysql/sqlservice的上下⽂操作进⾏封装///<summary>/// MySql操作类///</summary>[DbConfigurationType(typeof(MySqlEFConfiguration))]public class MySqlContext : DbContext{public DbSet<Test> TestEntities { get; set; }///<summary>///配置默认的字符串链接///</summary>public MySqlContext() : base("DefaultConnection") {}///<summary>///⾃定义数据库链接///</summary>///<param name="connenction"></param>public MySqlContext(string connenction) : base(connenction) { }///<summary>///实体对应规则的映射配置///</summary>///<param name="modelBuilder"></param>protected override void OnModelCreating(DbModelBuilder modelBuilder){}}View Code///<summary>/// Sql数据库操作类///</summary>public class SqlServiceContext : DbContext{///<summary>///配置默认的字符串链接///</summary>public SqlServiceContext() {}///<summary>///⾃定义数据库链接///</summary>///<param name="connenction"></param>public SqlServiceContext(string connenction) : base(connenction) {}///<summary>///实体对应规则的映射配置///</summary>///<param name="modelBuilder"></param>protected override void OnModelCreating(DbModelBuilder modelBuilder){}}View Code在view调⽤时候,进⾏ef上下⽂初始化只需要设置类型///<summary>///数据库策略初始化类///</summary>public static class DBInitializer{public static DbContextType DbContextType { get; set; }///<summary>///数据库初始化策略配置///</summary>`public static void Initialize(DbContextType ContextType){string IsUsedWR = System.Configuration.ConfigurationManager.AppSettings["IsUsedWR"];DbContextType = ContextType;///获得数据库最后⼀个版本// Database.SetInitializer<DBContextHelper>(new MigrateDatabaseToLatestVersion<DBContextHelper, DBConfiguration>());if (ContextType == DbContextType.SqlService){Database.SetInitializer(new MigrateDatabaseToLatestVersion<WriteSqlServiceContext, WriteSqlServiceDBConfiguration>());if (IsUsedWR == "1") {Database.SetInitializer(new MigrateDatabaseToLatestVersion<ReadSqlServiceContext, ReadSqlSqlServiceDBConfiguration>()); }else{Database.SetInitializer<ReadSqlServiceContext>(null);}}else{Database.SetInitializer(new MigrateDatabaseToLatestVersion<WriteMySqlContext, WriteMySqlDBConfiguration>());if (IsUsedWR == "1"){Database.SetInitializer(new MigrateDatabaseToLatestVersion<ReadMySqlContext, ReadMySqlDBConfiguration>());}else{Database.SetInitializer<ReadMySqlContext>(null);}//Database.SetInitializer<WriteMySqlContext>(null);// Database.SetInitializer<ReadMySqlContext>(null);}// Database.SetInitializer<DBContextHelper>(null);///删除原来数据库重新创建数据库//Database.SetInitializer(new DropCreateDatabaseIfModelChanges<ContextHelper>());// Database.SetInitializer<ContextHelper>(new DropCreateDatabaseIfModelChanges<ContextHelper>());}}View Codepublic class MvcApplication : System.Web.HttpApplication{protected void Application_Start(){AreaRegistration.RegisterAllAreas();FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);RouteConfig.RegisterRoutes(RouteTable.Routes);BundleConfig.RegisterBundles(BundleTable.Bundles);//Autofac//ContainerBuilder builder = new ContainerBuilder();//builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly());//IContainer container = builder.Build();//DependencyResolver.SetResolver(new AutofacDependencyResolver(container));//Autofac初始化过程ContainerBuilder builder = new ContainerBuilder();builder.RegisterControllers(System.Reflection.Assembly.GetExecutingAssembly());//注册mvc容器的实现var assemblys = BuildManager.GetReferencedAssemblies().Cast<Assembly>().ToList();builder.RegisterAssemblyTypes(assemblys.ToArray()).Where(t => .Contains("Service")).AsImplementedInterfaces();var container = builder.Build();DependencyResolver.SetResolver(new AutofacDependencyResolver(container));//初始化数据库DBInitializer.Initialize(DbContextType.MySql);}}View Code通过上⾯多数据库的⽀持已经完成,下⾯进⾏读写分离,分别进⾏继承上述上下⽂操作///<summary>///读///</summary>public class WriteSqlServiceContext : SqlServiceContext{public WriteSqlServiceContext() : base("") { }}///<summary>///写///</summary>public class ReadSqlServiceContext : SqlServiceContext{public ReadSqlServiceContext() : base("") { }}View Code通过⼯⼚类进⾏初始化///<summary>///上下⽂⼯⼚类///</summary>public static class Contextfactory{///<summary>///获取上下⽂///</summary>///<returns></returns>public static DbContext GetContext(DbOpertionType OpertionType){DbContextType ContextType = DBInitializer.DbContextType;if (ContextType == DbContextType.MySql){if (OpertionType == DbOpertionType.Read)return new ReadMySqlContext();elsereturn new WriteMySqlContext();}else{if (OpertionType == DbOpertionType.Read)return new ReadSqlServiceContext();elsereturn new WriteSqlServiceContext();}}///<summary>///获取上下⽂操作///</summary>///<typeparam name="TEntity"></typeparam>///<param name="OpertionType"></param>///<returns></returns>public static TEntity CallContext<TEntity>(DbOpertionType OpertionType) where TEntity: DbContext{var DbContext = GetContext(OpertionType);return (TEntity)DbContext;}}View Code最后配置webcofig即可<!--数据库配置(WriteMySqlConnection:读数据库,ReadMySqlConnection:写数据库如果⽆需要进⾏就配置IsUsedWR,2个链接都写写⼊库)--><connectionStrings><add name="WriteMySqlConnection" connectionString="data source=*; Initial Catalog=YK_Test_WriteDB ; uid=root; pwd=yk12345;Charset=utf8" providerName="MySql.Data.MySqlClient" /> <add name="ReadMySqlConnection" connectionString="data source=*; Initial Catalog=YK_Test_ReadDB ; uid=root; pwd=yk12345;Charset=utf8" providerName="MySql.Data.MySqlClient" /> </connectionStrings><!--数据库读取分离配置--><!--是否开启读写分离1:开启0:不开启--><add key="IsUsedWR" value="1"/>View Code最后进⾏测试public class TestController : Controller{private ITestService _TestServiceDb { get; set; }public TestController(ITestService TestServiceDb) {_TestServiceDb = TestServiceDb;}// GET: Testpublic ActionResult Index(){var result = _TestServiceDb.AddEntity(new Test() { ID=Guid.NewGuid(), Age=11, CreateTime=DateTime.Now, Name="Test" });var NewResult = _TestServiceDb.GetEntityByID(result.ID);return View();}}View Code搞定,可能在代码上有点累赘,但是总算是可⾏的。

SQL_Server2008数据库分离和附加

SQL_Server2008数据库分离和附加

7.2.8 SQL Server数据库的备份和恢复大到自然灾害,小到病毒感染、电源故障乃至操作员操作失误等,都会影响数据库系统的正常运行和数据库的破坏,甚至造成系统完全瘫痪。

数据库备份和恢复对于保证系统的可靠性具有重要的作用。

经常性的备份可以有效的防止数据丢失,能够把数据库从错误的状态恢复到正确的状态。

如果用户采取适当的备份策略,就能够以最短的时间使数据库恢复到数据损失量最少的状态。

SQL Server提供了“分离/附加”数据库、“备份/还原”数据库、复制数据库等多种数据库的备份和恢复方法。

这里介绍一种学习中常用的“分离/附加”方法,类似于大家熟悉的“文件拷贝”方法,即把数据库文件(.MDF)和对应的日志文件(.LDF)拷贝到其它磁盘上作备份,然后把这两个文件再拷贝到任何需要这个数据库的系统之中。

比如,在实验教学过程中,同学们常常想把自己在学校实验室计算机中创建的数据库搬迁到自己的计算机中而不想重新创建该数据库,就可以使用这种简单的方法。

但由于数据库管理系统的特殊性,需要利用SQL Server提供的工具才能完成以上工作,而简单的文件拷贝导致数据库根本无法正常使用。

这个方法涉及到SQL Server分离数据库和附加数据库这两个互逆操作工具。

1、分离数据库就是将某个数据库(如student_Mis)从SQL Server数据库列表中删除,使其不再被SQL Server管理和使用,但该数据库的文件(.MDF)和对应的日志文件(.LDF)完好无损。

分离成功后,我们就可以把该数据库文件(.MDF)和对应的日志文件(.LDF)拷贝到其它磁盘中作为备份保存。

2、附加数据库就是将一个备份磁盘中的数据库文件(.MDF)和对应的日志文件(.LDF)拷贝到需要的计算机,并将其添加到某个SQL Server数据库服务器中,由该服务器来管理和使用这个数据库。

下面分别介绍这两个步骤的操作细节。

1、分离数据库分离数据库的操作由以下6步构成。

实验三_分离与附加、还原与备份

实验三_分离与附加、还原与备份

实验三分离与附加、还原与备份一、目的与要求1.掌握SQL Server2005拷贝物理文件的方法;2.掌握SQL Server 2005附加数据库的方法;3.掌握SQL Server 2005备份和还原的方法;4.掌握SQL Server 2005定期自动备份的方法。

二、实验准备1.了解数据库分离和附加的意义;2.了解备份的类型、备份设备、恢复模式等概念;3.了解维护计划所需的服务。

三、实验容所有题目,请写出主要操作步骤和运行截图。

(一) 附加数据库将提供的pubs数据库物理文件pubs.mdf和pubs_log.ldf,放在E:\学号文件夹\下,然后附加到对象资源管理器的目录树中步骤:右击数据库—>附加—>添加—>选择E盘学号文件夹下的物理文件pubs.mdf和pubs_log.ldf—>单击确定。

运行过程及结果如下所示:(二) 复制数据库文件1. 停止服务器,复制数据库文件新建文件夹D:\MYDATA,停止SQL Server2005的数据库引擎服务,复制pubs 数据库的物理文件,粘贴到文件夹D:\MYDATA中。

2. 分离数据库,复制数据库文件在不停止服务的情况下,分离实验二中建立的studentdb数据库,将其物理文件拷贝到D:\MYDATA文件夹中。

步骤:右击数据库studentdb—>任务—>分离—>单击确定,结果如下:(三) 备份和还原1.简单恢复模式下,数据库完整备份和还原,备份目标为文件名方式。

(1)将pubs数据库设置成简单恢复模式;步骤:右击pubs数据库—>选择属性—>恢复模式选择简单,结果如下:(2)查看jobs表的第一条记录的max_lvl值为10,对此进行完整备份。

这里备份到文件E:\学号文件夹\pubsbk。

步骤:右击数据库pubs—>选择任务—>备份,结果如下:(3)将jobs表的第一条记录的max_lvl值改为100,使用上一步中备份的文件进行还原,查看是否恢复到原有数据。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

分离:
鼠标右键单击所要分离的数据库名,选择“任务”中的“分离”
弹出如下对话框,点“删除连接”,使之打钩,单击“确定”按钮,完成数据库分离。

复制数据库文件
按以下路径,打开文件夹(此为教师机中的路径,学生机可能也是这个路径)
C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data
可以看到两个数据库文件:liumei.mdf 和liumei.ldf
复制这两个文件到你的U盘中
附加:
打开SQL Server 2005,连接后,开始数据库附加工作。

单击数据库对象,选择“附加”,如图所示。

弹出对话框,单击“添加”,通过文件浏览方式,选择你U盘中的数据库文件(liumei.mdf)建议:先将U盘中文件拷贝到硬盘中,这样操作速度会快一些,只是记住上机结束时将数
据库重新分离,再将新的数据库文件拷贝到U盘即可
“确定”后,上次分离的数据库就附加到SQL Server 中了。

相关文档
最新文档