【数据库,SQL server】标签文章列表

SQL Server 2008中的格式化日期

  我们都知道不同的国家要求不同的日期格式。不同的应用程序要求不同的日期格式。SQL Server数据库管理员和开发人员将函数convert()和其它日期函数例如datepart()、datename()等等一起使用来操纵输出的格式。这篇文章介绍怎样创建一个普通函数来获得不同国家和应用程序所要求的大多数格式。

日期:2010年01月29日 | 分类:数据库

SQL Server中备份文件累积的问题

你创建的每一个备份都是一个备份设备,关于它的细节信息都存储在msdb..backupset表中。一个备份设备可以被存储在单一文件,或是多个文件中。同样,一个文件也可以存储多个备份设备。
所以,假如你每次备份都使用相同的文件名,文件就会一直增长。一个普遍的误解是:如果你每次使用相同的文件名,那旧的备份设备就会被覆盖。但事实却不是这样的。
那我们怎么分辨一个文件中是否包括多个备份设备呢?你可以使用RESTORE HEADONLY命令来实现。
如上图,文件中的所有备份设备都被列了出来。你怎么还原一个指定的备份设备呢?你可以使用FILE参数,如下:
RESTORE DATABASE AdventureWorks FROM DISK = ‘g:\backups\AdventureWorks_full.bak’ WITH FILE = 3
上面的命令是从文件中的第三个备份设备中还原AdventureWorks数据库。
如果你不使用FILE参数会如何呢?SQL Server会使用第一个备份设备来还原数据库。
注意:假如你的用户总是抱怨他们还原的数据库不是他们备份的那个,那就有可能是因为备份文件包含多个备份设备,他们把错的设备还原了。
能不能从一个文件中删除某个指定的备份设备呢?答案是NO。有没有可能总是相使用相同的文件来备份,但是每次都覆盖旧的备份设备,以便使文件总是只包括最新的备份设备呢?这当然可以,只要在备份时使用INIT选项,如下:
BACKUP DATABASE AdventureWorks TO DISK = ‘G:\backups\full\AdventureWorks.bak’ WITH INIT
假如备份设备在创建时使用了EXPIREDATE或是RETAINDAYS选项,那么INIT选项就会在覆盖旧版本的备份设备时发生错误。当备份设备在创建时使用了EXPIREDATE的话,那这个日期之前的备份设备就不能被覆盖。同样,当一个备份设备在创建时使用了RETAINDAYS选项,那就暗示在它创建指定的天数内,它不能被覆盖。假如强行要覆盖备份设备的话,类似的消息会显示如下:
Server: Msg 4030, Level 16, State 1, Line 1
The medium on device ‘e:\temp\testdb.bak’ expires on Jun 23 2008 11:28:50:000PM and cannot be overwritten.
Server: Msg 3013, Level 16, State 1, Line 1
BACKUP LOG is terminating abnormally.
如果你依旧想覆盖那些使用了EXPIREDATE或是RETAINDAYS备份设备的话,可以使用FORMAT选项,如下:
BACKUP [...]

日期:2010年01月28日 | 分类:数据库

赞助商链接

广而告之

友情链接

关于站点 - 联系我们 - 网站大事 - 友情链接 - 免责声明 - 意见反馈 - 网站投稿 - 站点地图
版权所有开心编程网禁止转载! Copyright © 2009-2010 All Rights Reserved. Email:hbhgfzk@126.com