我可以使用光标进行数据库日志文件的终结。 [英] Can I Use Cursor For Database Logfile Trucation.

查看:62
本文介绍了我可以使用光标进行数据库日志文件的终结。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在一周内,我已经截断了我们的数据库日志文件总共70s是否我需要通过复制和粘贴日志文件名来执行man..so iam寻找不应该影响数据库的自动方法。如何使用游标请告诉我解决方案..



Once in a week i have truncate our database logfile total 70s are there i have to do manully by copy and pasting log file name to command..so iam looking for automatic method that should not effect database..how to use cursor for that..please tell me the solution..

EXEC sp_dbOption [FDC_Well], 'trunc. log on chkpt.', 'True'
USE [FDC_Well]
DBCC SHRINKFILE('upload_log','truncateonly') WITH NO_INFOMSGS
EXEC sp_dbOption [FDC_Well], 'trunc. log on chkpt.', 'False'







这是我执行truncate logfiles的命令..




This is my command am executing for truncate logfiles..

推荐答案

通过使用T-SQL,您可以生成备份命令,并且通过使用游标,您可以光标浏览所有数据库以逐个备份它们。这是一个非常简单的过程,您只需要一些命令即可完成此操作。



这是一个脚本,允许您备份SQL Server实例中的每个数据库。您需要将@path更改为相应的备份目录。

文件命名格式DBname_YYYYDDMM.BAK



DECLARE @name VARCHAR(50 ) - 数据库名称

DECLARE @path VARCHAR(256) - 备份文件的路径

DECLARE @fileName VARCHAR(256) - 备份文件名

DECLARE @fileDate VARCHAR(20) - 用于文件名





- 指定数据库备份目录

SET @path ='C:\ Backup \'





- 指定文件名格式

SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)





DECLARE db_cursor CURSOR FOR

SELECT name

FROM master.dbo.sysdatabases

WHERE name NOT IN('master','model','msdb',' tempdb') - 排除这些数据库





OPEN db_cursor

FETCH NEXT FROM db_cursor INTO @name





WHILE @@ FETCH_STATUS = 0

BEGIN

SET @fileName = @path + @name +'_'+ @ fileDate +'。BAK'

BACKUP DATABASE @name TO DISK = @fileName





FETCH NEXT FROM db_cursor INTO @ name

END





CLOSE db_cursor

DEALLOCATE db_cursor < br $>


文件命名格式DBname_YYYYDDMM_HHMMSS.BAK



如果你想在文件名中包含时间你可以在上面的脚本中替换这一行:

- 指定文件名格式

SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)
这行




- 指定文件名格式

SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE( ),112)+ REPLACE(CONVERT(VARCHAR(20),GETDATE(),108),':','')

注意



在这个脚本中,我们绕过了系统数据库,但是也很容易包括在内。您还可以将其更改为存储过程并传入数据库名称,如果保留为NULL,则会备份所有数据库。无论你选择使用它,这个脚本都为你提供了简单备份你所有数据库的起点。



另外,如果你想绕过你的一些用户数据库也可以包含在NOT IN部分。
With the use of T-SQL you can generate your backup commands and with the use of cursors you can cursor through all of your databases to back them up one by one. This is a very straight forward process and you only need a handful of commands to do this.

Here is the script that will allow you to backup each database within your instance of SQL Server. You will need to change the @path to the appropriate backup directory.
File Naming Format DBname_YYYYDDMM.BAK

DECLARE @name VARCHAR(50) -- database name
DECLARE @path VARCHAR(256) -- path for backup files
DECLARE @fileName VARCHAR(256) -- filename for backup
DECLARE @fileDate VARCHAR(20) -- used for file name


-- specify database backup directory
SET @path = 'C:\Backup\'


-- specify filename format
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)


DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb') -- exclude these databases


OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name


WHILE @@FETCH_STATUS = 0
BEGIN
SET @fileName = @path + @name + '_' + @fileDate + '.BAK'
BACKUP DATABASE @name TO DISK = @fileName


FETCH NEXT FROM db_cursor INTO @name
END


CLOSE db_cursor
DEALLOCATE db_cursor

File Naming Format DBname_YYYYDDMM_HHMMSS.BAK

If you want to also include the time in the filename you can replace this line in the above script:
-- specify filename format
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)

with this line:
-- specify filename format
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) + REPLACE(CONVERT(VARCHAR(20),GETDATE(),108),':','')
Notes

In this script we are bypassing the system databases, but these could easily be included as well. You could also change this into a stored procedure and pass in a database name or if left NULL it backups all databases. Any way you choose to use it, this script gives you the starting point to simply backup all of your databases.

Also, if you wanted to bypass some of your user databases you can include them in the NOT IN section as well.


这篇关于我可以使用光标进行数据库日志文件的终结。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆