关于 SQL Server ErrorLog 错误日志说明
前端之家收集整理的这篇文章主要介绍了
关于 SQL Server ErrorLog 错误日志说明,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
默认情况下,sql Server 保存 7 个 ErrorLog 文件,名为:
ErrorLog
ErrorLog.1
ErrorLog.2
ErrorLog.3
ErrorLog.4
ErrorLog.5
ErrorLog.6
在 APACS OS 版本 6.1 中,ErrorLog 文件保存在 c:\Program Files\Microsoft sql Server\MSsql$WINCC\LOG 文件夹中。在 APACS OS 版本 7.0 中,ErrorLog 文件保存在 c:\Program Files\Microsoft sql Server\MSsql.1\MSsql\LOG 文件夹中。ErrorLog 文件包含最新信息;ErrorLog.6 文件包含最老的信息。
每次重启动 sql Server 时,这些日志文件都如下循环:
删除 ErrorLog.6 文件中的所有数据,并创建一个新的 ErrorLog 文件。
上个 ErrorLog 文件中的所有数据被写入到 ErrorLog.1 文件中。
上个 ErrorLog.1 文件中的所有数据被写入到 ErrorLog.2 文件中。
上个 ErrorLog.2 文件中的所有数据被写入到 ErrorLog.3 文件中。
上个 ErrorLog.3 文件中的所有数据被写入到 ErrorLog.4 文件中。
上个 ErrorLog.4 文件中的所有数据被写入到 ErrorLog.5 文件中。
上个 ErrorLog.5 文件中的所有数据被写入到 ErrorLog.6 文件中。
如果其中一个 ErrorLog 文件已很大,则可通过运行 sp_cycle_errorlog 存储过程手动循环这些 ErrorLog 文件。注意事项:旧的 ErrorLog 文件中的数据将被覆盖!如果必须保存旧的 ErrorLog 文件中的数据,则可将这些旧的 ErrorLog 文件复制到某个外部存储介质中。
在 APACS OS 版本 6.1 中,可利用 sql Qry Analyzer Tool 从 sql Server Enterprise Manager 运行 sp_cycle_errorlog 存储过程。在 APACS OS 版本 7.0 中,可从 sql Server Management St io 运行 sp_cycle_errorlog 存储过程。 所以需要定期能切换写入error log . 一般可以使用DBCC errorlog命令来操作 。
Exec('DBCC ErrorLog')
或者可以通过以下命令,将sp 放在Job中定期执行。
<div class="codetitle"><a style="CURSOR: pointer" data="30593" class="copybut" id="copybut30593" onclick="doCopy('code30593')"> 代码如下:
<div class="codebody" id="code30593">
create procedure sp_cycle_errorlog --- 1997/06/24
as
if (not (is_srvrolemember('sysadmin') = 1)) -- Make sure that it is the SA executing this.
begin
raiserror(15247,-1,-1)
return(1)
end
dbcc errorlog
return (0)
GO
<div class="codetitle">
<a style="CURSOR: pointer" data="22307" class="copybut" id="copybut22307" onclick="doCopy('code22307')"> 代码如下:
<div class="codebody" id="code22307">
获取数据库中所有的表
SELECT SysObjects.name AS Tablename FROM sysobjects WHERE xtype = 'U' and sysstat<200
获取数据库中所有表的列名
SELECT SysColumns.name AS Columnsname,SysObjects.name AS Tablename FROM SysObjects,SysColumns WHERE Sysobjects.Xtype='u' AND Sysobjects.Id=Syscolumns.Id
获取sql所有
数据库名、所有表名、所有字段名、表字段长度
1.
获取MS
sql中的所有
数据库名:
SELECT name FROM MASter..SysDatabASes ORDER BY name
2.
获取MS
sql中的所有
用户表名:
SELECT name FROM DatabASename..SysObjects WHERE XType='U' ORDER BY name
XType='U':表示所有
用户表;
XType='S':表示所有系统表;
3.
获取指定表[tb_phone]的所有字段名:
SELECT name FROM SysColumns WHERE id=Object_Id('tb_phone')
4.
sql所有表的表名、所有字段名、表字段长度
SELECT table_name AS 数据表名,
column_name AS 字段名,
ISNULL(column_default,'') AS 默认值,
is_nullable AS 是否允许为NULL,
data_type AS 数据类型,
ISNULL(ISNULL(ISNULL(character_maximum_length,numeric_precision),datetime_precision),1) AS 类型长度
FROM information_schema.columns
WHERE NOT table_name IN('sysdiagrams','dtproperties')
5.
获取指定表[tb_phone]的表名,表字段名,字段类型和类型长度
SELECT SysObjects.name AS Tablename,
Syscolumns.name AS Columnsname,
Systypes.name AS DateType,
Syscolumns.length AS DateLength
FROM Sysproperties RIGHT OUTER JOIN
Sysobjects INNER JOIN
Syscolumns ON Sysobjects.id = Syscolumns.id INNER JOIN
Systypes ON Syscolumns.xtype = Systypes.xtype ON
Sysproperties.id = Syscolumns.id AND
Sysproperties.smallid = Syscolumns.colid
WHERE (Sysobjects.xtype = 'u' OR
Sysobjects.xtype = 'v') AND (Systypes.name <> 'Sysname') AND
(Sysobjects.name = 'tb_phone')
ORDER BY Columnsname