Mag*_*ier 3 index ssms sql-server-2008-r2
我想在我的索引中添加一些评论。所以我在索引创建脚本中添加了一些额外的信息,希望在我再次打开脚本时再次看到这个评论。但它不见了。
样本:
CREATE NONCLUSTERED INDEX test3
/*
Created on ...
Reason: ...
Improvement: 95 - 99,8% ...
*/
ON [dbo].[T]
(
/* equal */
[ID], [Nr], [D],
/* inequal */
[S], [OD])
INCLUDE
([A], [C] )
Run Code Online (Sandbox Code Playgroud)
SCRIPT => CREATE SCRIPT
在 SSMS 中选择后,所有评论都消失了。
有没有人知道让他们活着的解决方案?
没有办法在索引的定义中存储文本。
您可以使用扩展属性来存储描述性信息,但是当您“编写”对象脚本时它不会自动显示。
USE tempdb;
CREATE TABLE dbo.t1
(
ID INT NOT NULL
);
CREATE INDEX IX_t1
ON dbo.t1(ID);
/*
This will add a comment named "Comments" to the IX_t1 index
*/
EXEC sys.sp_addextendedproperty @name=N'Comments'
, @value=N'This is a test index to store comments'
, @level0type = N'SCHEMA'
, @level0name = N'dbo'
, @level1type = N'TABLE'
, @level1name = N't1'
, @level2type = N'INDEX'
, @level2name = N'IX_t1';
/*
This displays all comments associated with indices in the current database
*/
SELECT SchemaName = s.name
, ObjectName = o.name
, IndexName = i.name
, PropertyName = xp.name
, PropertyValue = xp.value
FROM sys.schemas s
INNER JOIN sys.objects o ON s.schema_id = o.schema_id
LEFT JOIN sys.indexes i ON o.object_id = i.object_id
CROSS APPLY sys.fn_listextendedproperty(NULL, N'SCHEMA', s.name, N'TABLE',
o.name, CASE WHEN i.name IS NULL THEN NULL ELSE N'INDEX' END, i.name) xp
ORDER BY s.name
, o.name
, xp.name;
Run Code Online (Sandbox Code Playgroud)
以上查询结果:
/*
This provides the ability to delete Extended Properties
*/
EXEC sys.sp_dropextendedproperty @name = N'Comments'
, @level0type = N'SCHEMA'
, @level0name = N'dbo'
, @level1type = N'TABLE'
, @level1name = N't1'
, @level2type = N'INDEX'
, @level2name = N'IX_t1';
/*
Clean up my test bed
*/
DROP TABLE dbo.t1;
Run Code Online (Sandbox Code Playgroud)
此问题的最佳实践解决方案是将对象定义存储在版本控制系统中。
归档时间: |
|
查看次数: |
197 次 |
最近记录: |