各位大虾,最近我在学习数据库,有几个关于数据库的问题想问问大家:
1、SQL2000或是SQL2005,如何生成附加数据库所需的文件,是不是附加数据库只需要.mdf文件就可以了?
2、附加数据库和还原数据库的区别在哪里,分别应用于那些场合,请举个例子,谢谢?
3、附加数据库是不是在SQL没有创建该数据库时候可以完整的恢复一个数据库,相当于包括创建数据库+创建数据库结构(比如创建表单等)+恢复数据几项功能,还有没有其它的东东?
4、还原数据库是不是只有在SQL上已经创建数据库并创建数据库结构(表单等已建好)的情况下才可以恢复一个数据库,它相当于只有恢复数据这一项功能,不知道我理解得对不对?分数不多了,呵呵,请各位多多指教,非常感谢!
1、SQL2000或是SQL2005,如何生成附加数据库所需的文件,是不是附加数据库只需要.mdf文件就可以了?
2、附加数据库和还原数据库的区别在哪里,分别应用于那些场合,请举个例子,谢谢?
3、附加数据库是不是在SQL没有创建该数据库时候可以完整的恢复一个数据库,相当于包括创建数据库+创建数据库结构(比如创建表单等)+恢复数据几项功能,还有没有其它的东东?
4、还原数据库是不是只有在SQL上已经创建数据库并创建数据库结构(表单等已建好)的情况下才可以恢复一个数据库,它相当于只有恢复数据这一项功能,不知道我理解得对不对?分数不多了,呵呵,请各位多多指教,非常感谢!
2.没啥区别吧,都是新产生一个库,也就是对原来库的备份。
3.附加和还原都可以在不创建一个新库的情况下进行附加或还原操作
4.同上。
2、没什么区别,都是还原数据库。前者日志文件重新生成,后者有以前的日志,可以根据时间点还原。
3、基本差不多吧。
4、不是,和附加数据库差不多吧。
如果数据库从北京那的数据库服务器上分离出来了,所有的当前运行数据文件存在USB中,拿到深圳这的数据库服务器上,然后使用sp_attach_db 系统存储过程可以把分离出来的数据库重新挂上去,重新工作;
还原数据库是原来已经在某个时间被份过的,现在要还原到那个时候的状态;
2、区别吗?附加和还原数据条件必须,你建立数据库的前提下,可通过附加和还原来新增一个数据库,只是两种增加数据库的途径。
3、还原和备份是相对应的。
2、附加数据库与还原数据库只是元数据文件类型不一样而已 .mdf .bak
3、4都可以在不创建一个新库的情况下进行操作
新建数据库A-->完全备份成a.bak-->修改数据库A,添加表及字段-->完全备份成b.bak。
新建数据库B—>还原备份a.bak-->再还原备份b.bak,分别查看数据库B和A不同。--use 数据库A(or B)
--go
--2005实现数据库表字段属性统计(2000里的系统表sysproperties描述表不存在,2005里用sys.extended_properties视图替代)
select
[表名]=c.Name,
[表说明]=isnull(f.[value],''),
[列名]=a.Name,
[列序号]=a.Column_id,
[标识]=case when is_identity=1 then '√' else '' end,
[主键]=case when exists(select 1 from sys.objects x join sys.indexes y on x.Type=N'PK' and x.Name=y.Name
join sysindexkeys z on z.ID=a.Object_id and z.indid=y.index_id and z.Colid=a.Column_id)
then '√' else '' end,
[类型]=b.Name,
[字节数]=case when a.[max_length]=-1 and b.Name!='xml' then 'max/2G'
when b.Name='xml' then '2^31-1字节/2G'
else rtrim(a.[max_length]) end,
[长度]=case when ColumnProperty(a.object_id,a.Name,'Precision')=-1 then '2^31-1'
else rtrim(ColumnProperty(a.object_id,a.Name,'Precision')) end,
[小数]=isnull(ColumnProperty(a.object_id,a.Name,'Scale'),0),
[是否为空]=case when a.is_nullable=1 then '√' else '' end,
[列说明]=isnull(e.[value],''),
[默认值]=isnull(d.text,'')
from
sys.columns a
left join
sys.types b on a.user_type_id=b.user_type_id
inner join
sys.objects c on a.object_id=c.object_id and c.Type='U'
left join
syscomments d on a.default_object_id=d.ID
left join
sys.extended_properties e on e.major_id=c.object_id and e.minor_id=a.Column_id and e.class=1
left join
sys.extended_properties f on f.major_id=c.object_id and f.minor_id=0 and f.class=1
order by 1