Dav*_*ave 5 sql-server installation
我有兴趣确定我所有 70 多台服务器的年龄。我想创建一个增长图,显示服务器和数据库何时/每月或每年添加到环境中。我使用 SSMS 多查询功能执行了以下查询,但仅部分成功。
SELECT [name], create_date FROM sys.databases
Run Code Online (Sandbox Code Playgroud)
这是部分成功,因为当我知道我在过去几年中创建了其中一些服务器时,主数据库和模型数据库返回的日期为“2003 年 4 月 8 日”。
我每周多次将数据库从一台服务器刷新到另一台服务器,这似乎会导致数据库创建日期出现问题。
是否有一种简单的方法可以确定服务器和数据库的实际创建日期?
确定 SQL Server 的实际创建日期
这可以找到使用
SELECT createdate as SQL_SERVER_INSTALLATION_DATE
FROM sys.syslogins
where sid = 0x010100000000000512000000
Run Code Online (Sandbox Code Playgroud)
注意:sys.syslogins已弃用,因此使用sys.server_principals将为您提供相同的结果。
所以你可以使用:
--Using sys.server_principals
SELECT SERVERPROPERTY ('MachineName') AS PhysicalMachineName,
SERVERPROPERTY ('ServerName') AS SQLServerName,
SERVERPROPERTY ('Edition') AS ServerEdition,
CAST(SUBSTRING(@@Version,charindex('SQL',@@version, 1),15) AS VARCHAR(255)) + ' + '
+ CAST (SERVERPROPERTY ('productlevel')AS VARCHAR (50)) + ' + (Build'
+ CAST (SERVERPROPERTY ('ProductVersion') AS VARCHAR (50)) +')' AS ProductVersion,
RIGHT(@@version, (Len(@@Version)-charindex('Windows',@@version, 1))+1) AS [O.S.],
SERVERPROPERTY ('Collation') AS Collation
,create_date as 'SQL Server Installation Date'
FROM sys.server_principals
WHERE name='NT AUTHORITY\SYSTEM'
--Using sys.server_principals
SELECT create_date as 'SQL Server Installation Date'
FROM sys.server_principals
WHERE name='NT AUTHORITY\SYSTEM'
Run Code Online (Sandbox Code Playgroud)
实际创建数据库
这可以通过读取数据库的引导页找到。
注意:DBCC PAGE 未记录。我没有看到使用它的任何副作用,但由于它没有记录,请谨慎使用。
DBCC TRACEON(3604)
GO
-- Actual creation time of database is stored in the boot page of the database
-- This is even retained after restore or detach/attach of the database.
--- Look for dbi_crdate.
DBCC PAGE('database_name_Goes_here', 1, 9, 3)
GO
DBCC TRACEOFF(3604)
GO
Run Code Online (Sandbox Code Playgroud)
更好地使用 DBCC PAGE WITH TABLERESULTS
CREATE TABLE PageData
(
ParentObject VARCHAR(1000)NULL,
Object VARCHAR(4000)NULL,
Field VARCHAR(1000)NULL,
ObjectValue VARCHAR(MAX)NULL,
)
GO
INSERT INTO PageData (ParentObject, Object, Field, ObjectValue)
EXEC ('DBCC PAGE (''AdventureWorks2008R2_copy_August_2014'',1, 9, 3) WITH TABLERESULTS')
GO
select DatabaseName = (select ObjectValue from PageData where field ='dbi_dbname')
, DatabaseCreateDate = ( select ObjectValue from PageData where field = 'dbi_crdate')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
611 次 |
| 最近记录: |