A. sql2005还原数据库提示不能从其他数据库选择备份集
首先、点击桌面的“sql
server
management
studio”打开,sql2005的管理器,点击“连接”登录:
一、新建数据库
1、新建数据库
右键点击“数据库”——“新建数据库”:
mssql2005备份还原图文教程
填写数据库名,如mydata,选择数据库保存路径,一般可以保持默认地址,点击“确定”。
2、新建用户
右键点击“安全性”——“登录名”——“新建登录名”:
mssql2005备份还原图文教程
填写登录名,如mydata。选择“sql
server身份验证”,输入密码。下方的“强制密码过期”不要选择,默认数据库选择您用户登陆对应的数据库,如mydata。如图:
点击“用户映射”,“映射到此登录名的用户”勾选对应的数据库,如mydata。数据库成员角色勾选“public”和“db_owner”,点“确定”。如图:
至此新建数据库就完成了。
二、还原数据库
首先将数据库备份bak文件上传到服务器,建议放到d:\mssql
目录
,如mydata.bak。右键点击要还原的数据库,选择“任务”——“还原”——“数据库”,如图:
注意,如果放在其他目录,务必保证该目录先加上mssqluser的完全控制权限,否则还原或备份会失败。保存备份的目录也必须有这个权限!!
若不是本服务器上早期的备份,请选择“源设备”,点右侧的“…”查找bak文件,完成后下方会显示出备份集,“还原”那勾选:
然后点击“选项”,勾选“覆盖现有数据库”,“将数据库文件还原为:”的文件路径指向现在的数据库文件,点击“确定”就开始还原了,备份太大的话,还原时间要稍微长点:
还原成功后,系统会提示:
还原成功后,请检查下表的架构是否是dbo:
若是数据库名或其他架构,如为mydata架构,需要在“安全性”——“架构”,新建一个所有者为dbo的mydata架构。
新建一个所有者为dbo的mydata架构:
三、附加数据库
首先将您的数据库mdf和ldf文件上传到服务器的某个目录(一般不要放在系统盘,以免系统损坏造成数据丢失),比如d:\mssql目录,并给该目录mssqluser的完全控制权限。
注意,如果放在其他目录,务必保证该目录先加上mssqluser的完全控制权限,否则还原或备份会失败。保存备份的目录也必须有这个权限!!
其次,右键点击您的数据库,选择附加:
点击添加,添加您的mdf文件:
点击确定就可以附加成功数据库了,在数据库中能看到新附加的数据库:
注意,如果放在其他目录,务必保证该目录先加上mssqluser的完全控制权限,否则还原或备份会失败。保存备份的目录也必须有这个权限!!
B. sql 语句问题
修改数据库的时候应该可以添加的是 附属主数据文件 ,文件的扩展名是 ndf 文件,下面谁 SQL SERVER2000的帮助文档
Transact-SQL 参考
ALTER DATABASE
在数据库中添加或删除文件和文件组。也可用于更改文件和文件组的属性,例如更改文件的名称和大小。ALTER DATABASE 提供了更改数据库名称、文件组名称以及数据文件和日志文件的逻辑名称的能力。
ALTER DATABASE 支持数据库选项的设置。在早期版本的 Microsoft® SQL Server™ 中,这些选项可以通过 sp_dboption 存储过程来设置。在此次发布的版本中,SQL Server 继续支持 sp_dboption存储过程,但在未来版本中可能不再支持。可使用 DATABASEPROPERTYEX 函数检索数据库选项的当前设置。
语法
ALTER DATABASE database
{ ADD FILE < filespec > [ ,...n ] [ TO FILEGROUP filegroup_name ]
| ADD LOG FILE < filespec > [ ,...n ]
| REMOVE FILE logical_file_name
| ADD FILEGROUP filegroup_name
| REMOVE FILEGROUP filegroup_name
| MODIFY FILE < filespec >
| MODIFY NAME = new_dbname
| MODIFY FILEGROUP filegroup_name {filegroup_property | NAME = new_filegroup_name }
| SET < optionspec > [ ,...n ] [ WITH < termination > ]
| COLLATE < collation_name >
}
< filespec > ::=
( NAME = logical_file_name
[ , NEWNAME = new_logical_name ]
[ , FILENAME = 'os_file_name' ]
[ , SIZE = size ]
[ , MAXSIZE = { max_size | UNLIMITED } ]
[ , FILEGROWTH = growth_increment ] )
< optionspec > ::=
<state_option>
| < cursor_option >
| < auto_option >
| < sql_option >
| < recovery_option >
< state_option > ::=
{ SINGLE_USER | RESTRICTED_USER | MULTI_USER }
| { OFFLINE | ONLINE }
| { READ_ONLY | READ_WRITE }
< termination > ::=
ROLLBACK AFTER integer [ SECONDS ]
| ROLLBACK IMMEDIATE
| NO_WAIT
< cursor_option > ::=
CURSOR_CLOSE_ON_COMMIT { ON | OFF }
| CURSOR_DEFAULT { LOCAL | GLOBAL }
< auto_option > ::=
AUTO_CLOSE { ON | OFF }
| AUTO_CREATE_STATISTICS { ON | OFF }
| AUTO_SHRINK { ON | OFF }
| AUTO_UPDATE_STATISTICS { ON | OFF }
< sql_option > ::=
ANSI_NULL_DEFAULT { ON | OFF }
| ANSI_NULLS { ON | OFF }
| ANSI_PADDING { ON | OFF }
| ANSI_WARNINGS { ON | OFF }
| ARITHABORT { ON | OFF }
| CONCAT_NULL_YIELDS_NULL { ON | OFF }
| NUMERIC_ROUNDABORT { ON | OFF }
| QUOTED_IDENTIFIER { ON | OFF }
| RECURSIVE_TRIGGERS { ON | OFF }
< recovery_option > ::=
RECOVERY { FULL | BULK_LOGGED | SIMPLE }
| TORN_PAGE_DETECTION { ON | OFF }
参数
database
是要更改的数据库的名称。
ADD FILE
指定要添加文件。
TO FILEGROUP
指定要将指定文件添加到的文件组。
filegroup_name
是要添加指定文件的文件组名称。
ADD LOG FILE
指定要将日志文件添加到指定的数据库。
REMOVE FILE
从数据库系统表中删除文件描述并删除物理文件。只有在文件为空时才能删除。
ADD FILEGROUP
指定要添加文件组。
filegroup_name
是要添加或除去的文件组名称。
REMOVE FILEGROUP
从数据库中删除文件组并删除该文件组中的所有文件。只有在文件组为空时才能删除。
MODIFY FILE
指定要更改给定的文件,更改选项包括 FILENAME、SIZE、FILEGROWTH 和 MAXSIZE。一次只能更改这些属性中的一种。必须在 <filespec> 中指定 NAME,以标识要更改的文件。如果指定了 SIZE,那么新大小必须比文件当前大小要大。只能为 tempdb 数据库中的文件指定 FILENAME,而且新名称只有在 Microsoft SQL Server 重新启动后才能生效。
若要更改数据文件或日志文件的逻辑名称,应在 NAME 选项中指定要改名的逻辑文件名称,并在 NEWNAME 选项中指定文件的新逻辑名称。
示例如下:
MODIFY FILE (NAME = logical_file_name, NEWNAME = new_logical_name...)。
可同时运行几个 ALTER DATABASE database MODIFY FILE 语句以实现多个修改文件操作时性能最优。
MODIFY NAME = new_dbname
重命名数据库。
MODIFY FILEGROUP filegroup_name { filegroup_property | NAME = new_filegroup_name }
指定要修改的文件组和所需的改动。
如果指定 filegroup_name 和 NAME = new_filegroup_name,则将此文件组的名称改为 new_filegroup_name。
如果指定 filegroup_name 和 filegroup_property,则表示给定文件组属性将应用于此文件组。filegroup_property 的值有:
READONLY
指定文件组为只读。不允许更新其中的对象。主文件组不能设置为只读。只有具有排它数据库访问权限的用户才能将文件组标记为只读。
READWRITE
逆转 READONLY 属性。允许更新文件组中的对象。只有具有排它数据库访问权限的用户才能将文件组标记为读/写。
DEFAULT
将文件组指定为默认数据库文件组。只能有一个数据库文件组是默认的。CREATE DATABASE 语句将主文件组设置为初始的默认文件组。如果在 CREATE TABLE、ALTER TABLE 或者 CREATE INDEX 语句中没有指定文件组,则新表及索引将在默认文件组—中创建。
WITH <termination>
指定当数据库从一种状态转换到另一种状态时,何时回滚未完成的事务。只能指定一条 termination 子句,而且该子句应跟在 SET 子句后面。
ROLLBACK AFTER integer [SECONDS] | ROLLBACK IMMEDIATE
设定是在指定秒数之后回滚还是立即回滚。如果省略了 termination 子句,那么将允许事务自主提交或回滚。
NO_WAIT
指定如果请求的数据库语句或选项更改只有等待事务自主提交或回滚才能立即完成,该请求将失败。
COLLATE < collation_name >
指定数据库的排序规则。排序规则名称既可以是 Windows 排序规则名称,也可以是 SQL 排序规则名称。如果没有指定排序规则,则将 SQL Server 实例的默认排序规则指派为数据库的排序规则。
有关 Windows 和 SQL 排序规则名称的更多信息,请参见 COLLATE。
<filespec>
控制文件属性。
NAME
指定文件的逻辑名称。
logical_file_name
是在 Microsoft SQL Server 中引用文件时所用的名称。该名称在数据库中必须唯一,并应遵循标识符规则。该名称可以是字符或 Unicode 常量、常规标识符或定界标识符。有关更多信息,请参见使用标识符。
FILENAME
指定操作系统中的文件名。当和 MODIFY FILE一起使用时,只能对 tempdb 数据库中的文件指定 FILENAME。新 tempdb 文件名只有在 SQL Server 停止并重新启动后才能生效。
'os_file_name'
由操作系统使用的文件的路径和文件名。该文件必须驻留在安装 SQL Server 的服务器上。数据文件和日志文件不应置于压缩的文件系统中。
如果文件位于原始分区上,那么 os_file_name 必须仅指定该原始分区的驱动器字母。每个原始分区上只能存放一个文件。原始分区上的文件不会自动增长;因此,os_file_name 指定原始分区时,不需要指定 MAXSIZE 和 FILEGROWTH 参数。
SIZE
指定文件大小。
size
是文件的大小。后缀 KB、MB、GB 和 TB 可用于指定千字节、兆字节、千兆字节或兆兆字节。默认值为 MB。指定一个整数,不要包含小数位。size 的最小值是 512 KB,如果 size 未指定,默认值是 1 MB。当随 ADD FILE 一起指定时,size 是文件的初始大小。当随 MODIFY FILE 一起指定时,size 是文件的新大小,而且必须大于文件的当前大小。
MAXSIZE
指定最大的文件大小。
max_size
是最大的文件大小。后缀 KB、MB、GB 和 TB 可用于指定千字节、兆字节、千兆字节或兆兆字节。默认值为 MB。指定一个整数,不要包含小数位。如果没有指定 max_size,那么文件大小将一直增长,直至磁盘填满为止。当磁盘即将填满时,Microsoft Windows NT® 应用程序日志将向管理员发出警告。
UNLIMITED
指定文件大小可一直增加直至磁盘已满。
FILEGROWTH
指定文件增长的增量。
growth_increment
每次需要新的空间时为文件添加的空间大小。值为 0 表示不增长。该值可按 MB、KB 或 % 的形式指定。指定一个整数,不要包含小数位。如果指定了 %,那么文件增量为文件发生增长时文件大小的指定百分比。如果未在数量后面指定 MB、KB 或 %,则默认值为 MB。如果 FILEGROWTH 未指定,默认值为 10%,且最小值为 64 KB。指定的大小舍入为最接近的 64 KB 的倍数。
<state_option>
控制用户对数据库的访问,数据库是否处于联机状态,以及是否允许写操作。
SINGLE_USER | RESTRICTED_USER | MULTI_USER
控制哪些用户可以访问数据库。如果指定为 SINGLE_USER,那么同一时间只能有一个用户访问数据库。如果指定为 RESTRICTED_USER,那么只有 db_owner、dbcreator 或 sysadmin 角色的成员可以使用数据库。MULTI_USER 使数据库返回到正常操作状态。
OFFLINE | ONLINE
控制数据库是联机还是脱机。
READ_ONLY | READ_WRITE
指定数据库是否处于只读模式。在只读模式下,用户可以从数据库中读取数据,但不能修改数据。当指定 READ_ONLY 时,数据库不能处于使用状态。master 数据库是一个例外,当该数据库设置为 READ_ONLY 时,只有系统管理员才能使用该数据库。READ_WRITE 使数据库返回到读写操作状态。
<cursor_option>
控制游标选项。
CURSOR_CLOSE_ON_COMMIT ON | OFF
如果指定为 ON,在事务提交或回滚时所有打开的游标都将关闭。如果指定为 OFF,那么在事务提交时打开的游标仍保持打开;而回滚事务时关闭所有除定义为 INSENSITIVE 或 STATIC 之外的游标。
CURSOR_DEFAULTLOCAL | GLOBAL
控制游标作用域默认为 LOCAL 还是 GLOBAL。
<auto_option>
控制自动选项。
AUTO_CLOSE ON | OFF
如果指定为 ON,那么最后一个用户退出后,数据库将干净地关闭,其占用的资源将释放。如果指定为 OFF,那么最后一个用户退出后数据库仍保持打开。
AUTO_CREATE_STATISTICS ON | OFF
如果指定为 ON,那么所有优化查询需要但缺少的统计信息都会在查询优化时自动生成。
AUTO_SHRINK ON | OFF
如果指定为 ON,数据库文件将定期自动收缩。
AUTO_UPDATE_STATISTICS ON | OFF
如果指定为 ON,所有查询优化所需的过时的统计信息在都将在优化时自动重建。如果指定为 OFF,统计信息必须手工更新。
<sql_option>
控制 ANSI 遵从性选项。
ANSI_NULL_DEFAULT ON | OFF
如果指定为 ON,CREATE TABLE 在确定列是否允许空值时遵从 SQL-92 规则。
ANSI_NULLS ON | OFF
如果指定为 ON,所有与空值的比较运算结果为 UNKNOWN。如果指定为 OFF,非 UNICODE 值与空值的比较运算在两者均为 NULL 时结果为 TRUE。
ANSI_PADDING ON | OFF
如果指定为 ON,在比较或插入前,字符串将填充为同一长度。如果指定为 OFF,字符串将不填充。
ANSI_WARNINGS ON | OFF
如果指定为 ON,当出现诸如被零除的情况时将产生错误或警告。
ARITHABORT ON | OFF
如果指定为 ON,在执行查询时如果发生溢出或被零除,该查询将终止。
CONCAT_NULL_YIELDS_NULL ON | OFF
如果指定为 ON,当串联操作的两个操作数中任意一个为 NULL 时,结果也为 NULL。如果指定为 OFF,空值将按空字符串对待。默认设置为 OFF。
QUOTED_IDENTIFIER ON | OFF
如果指定为 ON,双引号将可用于包含定界标识符。
NUMERIC_ROUNDABORT ON | OFF
如果指定为 ON,当表达式中出现精度损失时将产生错误。
RECURSIVE_TRIGGERS ON | OFF
如果指定为 ON,将允许递归激发触发器。RECURSIVE_TRIGGERS OFF(默认值)只禁止直接递归。若要也禁用间接递归,请使用 sp_configure 将 nested triggers 服务器选项设置为 0。
<recovery_options>
控制数据库恢复选项。
RECOVERY FULL | BULK_LOGGED | SIMPLE
如果指定为 FULL,系统将对介质错误提供完全保护。如果数据文件损坏,介质恢复可以还原所有已提交的事务。
如果指定为 BULK_LOGGED,将在介质错误保护程度与某些大规模或大容量操作的最优性能及日志存储空间最少占用量之间进行权衡。这些操作包括 SELECT INTO、大容量装载操作(bcp 和 BULK INSERT)、CREATE INDEX 以及文本和图象操作(WRITETEXT 和 UPDATETEXT)。
在大容量日志记录恢复模型下,对整个类只做最少的日志记录,并且无法逐个操作地控制日志记录行为。
如果指定为 SIMPLE,系统将提供占用日志空间最小的备份策略。服务器故障恢复不再需要的日志空间可被自动重用。
重要 简单恢复模型比其它两种模型更容易管理,但数据文件损坏时造成数据丢失的可能性更大。最近的数据库备份或差异数据库备份之后的更改都将丢失,必须手工重新输入。
默认恢复模型由 model 数据库的恢复模型确定。若要更改新数据库的默认值,请用 ALTER DATABASE 设置 model 数据库的恢复选项。
TORN_PAGE_DETECTION ON | OFF
如果指定为 ON,将可以检测到未完成的页。默认设置为 ON。
注释
若要删除数据库,请使用 DROP DATABASE 语句。若要更改数据库名称,请使用 sp_renamedb。有关减小数据库大小的更多信息,请参见 DBCC SHRINKDATABASE。
在对数据库应用不同的或新的排序规则时,应确保符合以下条件:
您是当前数据库的唯一用户。
没有依赖数据库排序规则的架构绑定对象。
如果数据库中存在以下依赖数据库排序规则的对象,则 ALTER DATABASE database COLLATE 语句将失败。SQL Server 将针对每一个阻塞 ALTER 操作的对象返回一个错误信息:
通过 SCHEMABINDING 创建的用户定义函数和视图。
计算列。
CHECK 约束。
表值函数返回包含字符列的表,这些列继承了默认的数据库排序规则。
改变数据库的排序规则不会在任何数据对象的系统名称中产生重复名称。
如果改变排序规则后出现重复的名称,则下列命名空间可能导致改变数据库排序规则的操作失败:
对象名(如过程、表、触发器或视图)。
架构名(如组、角色或用户)。
标量类型名(如系统和用户定义类型)。
全文目录名称。
对象内的列名或参数名。
表范围内的索引名。
由新的排序规则产生的重复名称将导致改变操作失败,SQL Server 将返回错误信息,指出重复名称所在的命名空间。
当 BACKUP 语句正在执行时,不能添加或删除文件。
若要在 size 参数中指定兆字节的分数,应通过乘以数字 1024 将该值转换为千字节。例如,应指定 1536 KB 而不是 1.5MB(1.5 x 1024 = 1536)。
权限
ALTER DATABASE 权限默认授予 sysadmin 和 dbcreator 固定服务器角色成员以及 db_owner 固定数据库角色成员。这些权限是不可传递的。
示例
A. 向数据库中添加文件
下例创建数据库,并更改该数据库以添加一个 5 MB 大小的新数据文件。
USE master
GO
CREATE DATABASE Test1 ON
(
NAME = Test1dat1,
FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\t1dat1.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
)
GO
ALTER DATABASE Test1
ADD FILE
(
NAME = Test1dat2,
FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\t1dat2.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
)
GO
B. 向数据库中添加由两个文件组成的文件组
下例在示例 A 中所创建的 Test1 数据库中创建一个文件组,并将两个 5 MB 的文件添加到该文件组。然后下例将 Test1FG1 设置为默认文件组。
USE master
GO
ALTER DATABASE Test1
ADD FILEGROUP Test1FG1
GO
ALTER DATABASE Test1
ADD FILE
( NAME = test1dat3,
FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\t1dat3.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB),
( NAME = test1dat4,
FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\t1dat4.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB)
TO FILEGROUP Test1FG1
ALTER DATABASE Test1
MODIFY FILEGROUP Test1FG1 DEFAULT
GO
C. 向数据库中添加两个日志文件
下例向数据库中添加两个 5 MB 大小的日志文件。
USE master
GO
ALTER DATABASE Test1
ADD LOG FILE
( NAME = test1log2,
FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\test2log.ldf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB),
( NAME = test1log3,
FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\test3log.ldf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB)
GO
D. 从数据库中删除文件
下例将示例 B 中添加到数据库 Test1 中的一个文件删除。
USE master
GO
ALTER DATABASE Test1
REMOVE FILE test1dat4
GO
E. 更改文件
下例将示例 B 中添加到数据库 Test1 中的一个文件增加大小。
USE master
GO
ALTER DATABASE Test1
MODIFY FILE
(NAME = test1dat3,
SIZE = 20MB)
GO
F. 将主文件组设置为默认文件组
假定原来另一个文件组设置为默认文件组,下例将主文件组设置为默认文件组。
USE master
GO
ALTER DATABASE MyDatabase
MODIFY FILEGROUP [PRIMARY] DEFAULT
GO
请参见
CREATE DATABASE
DROP DATABASE
sp_helpdb
sp_helpfile
sp_helpfilegroup
sp_renamedb
sp_spaceused
使用恢复模型
&;1988-2000 Microsoft Corporation。保留所有权利。
C. 数据库系统中的几种架构及处理方式
主从式结构
是指一个主机带多个终端的多用户结构。在这种结构中,数据库系统,包括:应用程序、DBMS、数据,都集中存放在主机上.所有处理任务都由主机来完成,各个用户通过主机的终端并发地存取数据库,共享数据资源.
主从式结构的优点是简单,数据易于管理与维护。缺点是当终端用户数目增加到一定程度后,主机的任务会过分繁重,形成瓶颈,从而使系统性能大幅度下降。另外当主机出现故障时,整个系统都不能使用,因此系统的可靠性不高。
集中式架构
是一种远程桌面控制技术,使用此技术,远程用户能够使用任何类型的终端系统,通过任何类型的网络连接,使用远程服务器上的应用程序。用户甚至能够使用同一个终端系统访问甚至远程多个不同平台、不同网络协议服务器上的多个应用,这些应用被集成在一个访问界面中,操作简便。
C/S架构
(Client/Server或客户/服务器模式):Client和Server常常分别处在相距很远的两台计算机上,Client程序的任务是将用户的要求提交给Server程序,再将Server程序返回的结果以特定的形式显示给用户;Server程序的任务是接收客户程序提出的服务请求,进行相应的处理,再将结果返回给客户程序。
C/S (Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。
传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件, 加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。而且代价高, 效率低。
C/S结构的优点
C/S结构的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。缺点主要有以下几个:
只适用于局域网。而随着互联网的飞速发展,移动办公和分布式办公越来越普及,这需要我们的系统具有扩展性。这种方式远程访问需要专门的技术,同时要对系统进行专门的设计来处理分布式的数据。
客户端需要安装专用的客户端软件。首先涉及到安装的工作量,其次任何一台电脑出问题,如病毒、硬件损坏,都需要进行安装或维护。特别是有很多分部或专卖店的情况,不是工作量的问题,而是路程的问题。还有,系统软件升级时,每一台客户机需要重新安装,其维护和升级成本非常高。
对客户端的操作系统一般也会有限制。可能适应于Win98, 但不能用于win2000或Windows XP。或者不适用于微软新的操作系统等等,更不用说Linux、Unix等。
D. 设备 'I:\数据备份\hiktb.bak' 上的媒体簇的结构不正确。SQL Server 无法处理此媒体簇。RESTORE HEADERONL
SQL 2008R2 SQL2008 这是有2个版本的 或者说标准版和企业版的区别具体的也不太清楚。我也遇到同样的问题 正在升级SQL2008版本中
或者你的备份数据损坏了,建议再次备份 在其他电脑上试下。
如果是使用restore 还原的话,会再现以下错误:
设备'XXX.bak' 上的媒体簇的结构不正确。SQLServer无法处理此媒体簇。
如果是使用附加功能的话,会再现以下错误:
执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)
------------------------------
数据库 'DATABase' 的版本为 706,无法打开。此服务器支持 655 版及更低版本。不支持降级路径。
无法打开新数据库 'DATABase'。CREATE DATABASE 中止。 (Microsoft SQL Server,错误: 948)
发生此情况有种可能是 把高版本的备份放到低版本的数据库上进行还原所致.目前还没有看到有相关直接还原的办法,都是使用数据导入\导出功能来做的.
E. 磁盘的文件系统结构已损坏且无法使用
是哪个磁盘?可以对出现这个提示的磁盘做个磁盘修复。
磁盘修复:打开计算机,在需要修复的U盘上单击右键,选择“属性”。在弹出的属性窗口中点击“工具”选项卡,然后在查错里面点击“开始检查”。在弹出的磁盘修复窗口勾选“自动修复文件系统错误”,然后点击“开始”。
如果磁盘修复后,磁盘里出现了FOUND.000文件夹,用CHK文件恢复专家扫描恢复一下就可以了,希望能帮到你。
可以快速准确地识别出CHK文件的原文件类型并进行恢复,如mp3、mp4、jpg、bmp、gif、png、avi、rm、mov、mpg、wma、wmv、doc、docx、xls、xlsx、ppt、pptx、zip、rar、exe、dll、sql、mdb、psd等200多种常见文件类型。
F. 如何复制mysql数据库到另一台电脑上
这种架构一般用在以下三类场景
1. 备份多台 Server 的数据到一台如果按照数据切分方向来讲,那就是垂直切分。比如图 2,业务 A、B、C、D 是之前拆分好的业务,现在需要把这些拆分好的业务汇总起来备份,那这种需求也很适用于多源复制架构。实现方法我大概描述下:业务 A、B、C、D 分别位于 4 台 Server,每台 Server 分别有一个数据库来隔离前端的业务数据,那这样,在从库就能把四台业务的数据全部汇总起来,而不需要做额外的操作。那没有多源复制之前,要实现这类需求,只能在汇总机器上搭建多个 MySQL 实例,那这样势必会涉及到跨库关联的问题,不但性能急剧下降,管理多个实例也没有单台来的容易。
G. 数据库还原问题,媒体簇的结构不正确。无法还原数据库
那个备份可能是压缩文件 将后缀名 改成 .rar 解压该文件。然后还原 应该就行了
H. 数据库主从不一致,怎么解
由于各种原因,mysql主从架构经常会出现数据不一致的情况出现,大致归结为如下几类
1:备库写数据
2:执行non-deterministic query
3:回滚掺杂事务表和非事务表的事务
4:binlog或者relay log数据损坏
数据不同步给应用带来的危害是致命的,当出现主从数据不一致的情况,常见的应对方法是先把从库下线,然后找个半夜三更的时间把应用停掉,重新执行同步,如果数据库的体积十分庞大,那工作量可想而知,会让人崩溃。本文介绍使用percona-toolkit工具对mysql主从数据库的同步状态进行检查和重新同步。
一:安装percona-toolkit
二:修改mysql 的binlog格式binlog_format参数为row格式
mysql binlog日志有三种格式,分别为Statement, Mixed,以及ROW!
1.Statement:
每一条会修改数据的sql都会记录在binlog中。
优点:不需要记录每一行的变化,减少了binlog日志量,节约了IO,提高性能。(相比row能节约多少性能与日志量,这个取决于应用的SQL情况,正常同一条记录修改或者插入row格式所产生的日志量还小于Statement产生的日志量,但是考虑到如果带条件的update操作,以及整表删除,alter表等操作,ROW格式会产生大量日志,因此在考虑是否使用ROW格式日志时应该跟据应用的实际情况,其所产生的日志量会增加多少,以及带来的IO性能问题。)
缺点:由于记录的只是执行语句,为了这些语句能在slave上正确运行,因此还必须记录每条语句在执行的时候的一些相关信息,以保证所有语句能在slave得到和在master端执行时候相同 的结果。另外mysql 的复制,像一些特定函数功能,slave可与master上要保持一致会有很多相关问题(如sleep()函数, last_insert_id(),以及user-defined functions(udf)会出现问题).
2.Row
不记录sql语句上下文相关信息,仅保存哪条记录被修改。
优点: binlog中可以不记录执行的sql语句的上下文相关的信息,仅需要记录那一条记录被修改成什么了。所以rowlevel的日志内容会非常清楚的记录下每一行数据修改的细节。而且不会出现某些特定情况下的存储过程,或function,以及trigger的调用和触发无法被正确复制的问题
缺点:所有的执行的语句当记录到日志中的时候,都将以每行记录的修改来记录,这样可能会产生大量的日志内容,比如一条update语句,修改多条记录,则binlog中每一条修改都会有记录,这样造成binlog日志量会很大,特别是当执行alter table之类的语句的时候,由于表结构修改,每条记录都发生改变,那么该表每一条记录都会记录到日志中。
3.Mixed
是以上两种level的混合使用,一般的语句修改使用statment格式保存binlog,如一些函数,statement无法完成主从复制的操作,则采用row格式保存binlog,MySQL会根据执行的每一条具体的sql语句来区分对待记录的日志形式,也就是在Statement和Row之间选择一种.新版本的MySQL中队row level模式也被做了优化,并不是所有的修改都会以row level来记录,像遇到表结构变更的时候就会以statement模式来记录。至于update或者delete等修改数据的语句,还是会记录所有行的变更。
I. 为什么postgrelsql的性能没有mysql好
一、 PostgreSQL 的稳定性极强, Innodb 等引擎在崩溃、断电之类的灾难场景下抗打击能力有了长足进步,然而很多 MySQL 用户都遇到过Server级的数据库丢失的场景——mysql系统库是MyISAM的,相比之下,PG数据库这方面要好一些。
二、任何系统都有它的性能极限,在高并发读写,负载逼近极限下,PG的性能指标仍可以维持双曲线甚至对数曲线,到顶峰之后不再下降,而 MySQL 明显出现一个波峰后下滑(5.5版本之后,在企业级版本中有个插件可以改善很多,不过需要付费)。
三、PG 多年来在 GIS 领域处于优势地位,因为它有丰富的几何类型,实际上不止几何类型,PG有大量字典、数组、bitmap 等数据类型,相比之下mysql就差很多,instagram就是因为PG的空间数据库扩展POSTGIS远远强于MYSQL的my spatial而采用PGSQL的。
四、PG 的“无锁定”特性非常突出,甚至包括 vacuum 这样的整理数据空间的操作,这个和PGSQL的MVCC实现有关系。
五、PG 的可以使用函数和条件索引,这使得PG数据库的调优非常灵活,mysql就没有这个功能,条件索引在web应用中很重要。
六、PG有极其强悍的 SQL 编程能力(9.x 图灵完备,支持递归!),有非常丰富的统计函数和统计语法支持,比如分析函数(ORACLE的叫法,PG里叫window函数),还可以用多种语言来写存储过程,对于R的支持也很好。这一点上MYSQL就差的很远,很多分析功能都不支持,腾讯内部数据存储主要是MYSQL,但是数据分析主要是HADOOP+PGSQL。
七、PG 的有多种集群架构可以选择,plproxy 可以支持语句级的镜像或分片,slony 可以进行字段级的同步设置,standby 可以构建WAL文件级或流式的读写分离集群,同步频率和集群策略调整方便,操作非常简单。
八、一般关系型数据库的字符串有限定长度8k左右,无限长 TEXT 类型的功能受限,只能作为外部大数据访问。而 PG 的 TEXT 类型可以直接访问,SQL语法内置正则表达式,可以索引,还可以全文检索,或使用xml xpath。用PG的话,文档数据库都可以省了。
九,对于WEB应用来说,复制的特性很重要,mysql到现在也是异步复制,pgsql可以做到同步,异步,半同步复制。还有mysql的同步是基于binlog复制,类似oracle golden gate,是基于stream的复制,做到同步很困难,这种方式更加适合异地复制,pgsql的复制基于wal,可以做到同步复制。同时,pgsql还提供stream复制。
十,pgsql对于numa架构的支持比mysql强一些,比MYSQL对于读的性能更好一些,pgsql提交可以完全异步,而mysql的内存表不够实用(因为表锁的原因)
最后说一下我感觉 PG 不如 MySQL 的地方。
第一,MySQL有一些实用的运维支持,如 slow-query.log ,这个pg肯定可以定制出来,但是如果可以配置使用就更好了。
第二是mysql的innodb引擎,可以充分优化利用系统所有内存,超大内存下PG对内存使用的不那么充分,
第三点,MySQL的复制可以用多级从库,但是在9.2之前,PGSQL不能用从库带从库。
第四点,从测试结果上看,mysql 5.5的性能提升很大,单机性能强于pgsql,5.6应该会强更多.
第五点,对于web应用来说,mysql 5.6 的内置MC API功能很好用,PGSQL差一些。
另外一些:
pgsql和mysql都是背后有商业公司,而且都不是一个公司。大部分开发者,都是拿工资的。
说mysql的执行速度比pgsql快很多是不对的,速度接近,而且很多时候取决于你的配置。
对于存储过程,函数,视图之类的功能,现在两个数据库都可以支持了。
另外多线程架构和多进程架构之间没有绝对的好坏,oracle在unix上是多进程架构,在windows上是多线程架构。
很多pg应用也是24/7的应用,比如skype. 最近几个版本VACUUM基本不影响PGSQL 运行,8.0之后的PGSQL不需要cygwin就可以在windows上运行。
至于说对于事务的支持,mysql和pgsql都没有问题。