主要基于这篇文章,文档中还缺少很多其他内容(自 2005 年以来可能已经引入了更多内容,自从我尝试探索以来已经有一段时间了):
--DROP TABLE dbo.DateTimeStyles;
CREATE TABLE dbo.DateTimeStyles
(
styleID TINYINT PRIMARY KEY,
outputLength TINYINT,
outputSyntax AS (CONVERT(VARCHAR(255), 'CONVERT(CHAR('
+ RTRIM(outputLength) + '), CURRENT_TIMESTAMP, '
+ RTRIM(styleID) + ')')),
outputSample VARCHAR(255)
);
INSERT dbo.DateTimeStyles(styleID, outputLength)
VALUES (0, 19 ), (1, 8 ), (2, 8 ), (3, 8 ),
(4, 8 ), (5, 8 ), (6, 9 ), (7, 10 ),
(8, 8 ), (9, 26 ), (10, 8 ), (11, 8 ),
(12, 6 ), (13, 24 ), (14, 12 ), (20, 19 ),
(21, 23 ), (22, 20 ), (23, 10 ), (24, 8 ),
(25, 23 ), (100, 19 ), (101, 10 ), (102, 10 ),
(103, 10 ), (104, 10 ), (105, 10 ), (106, 11 ),
(107, 12 ), (108, 8 ), (109, 26 ), (110, 10 ),
(111, 10 ), (112, 8 ), (113, 24 ), (114, 12 ),
(120, 19 ), (121, 23 ), (126, 23 ), (127, 23 ),
(130, 32 ), (131, 25 );
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql += N'UPDATE dbo.DateTimeStyles
SET outputSample = ' + outputSyntax + '
WHERE styleID = ' + RTRIM(StyleID) + ';'
FROM dbo.DateTimeStyles;
EXEC sp_executesql @sql;
SELECT styleID, outputSyntax, outputSample
FROM dbo.DateTimeStyles
ORDER BY styleID;
当然,与许多未记录的东西一样,使用“秘密”的东西需要您自担风险。您应该标记您使用它们的模块,以便您可以在升级之前对其进行测试 - 它们不会是升级顾问、最佳实践分析器、弃用跟踪事件、扩展事件等将接收并告诉您的事情,因为微软可以自行决定删除任何未记录的功能/语法(尽管我发现他们极不可能删除任何这些,即使他们对记录它们不感兴趣)。如果您有一个部署服务包/升级的测试服务器,在任何此类升级后运行此代码将告诉您此处使用的任何样式是否已被删除。因此,您可能希望将此代码保存在某处,并且只包含您积极使用的未记录样式编号。