在MS SQL Server Manager Studio for 2008 Express中,“包含的列”字段始终在数据库图表设计器的“索引/键”窗口中显示为灰色。
根据帮助,只要我没有创建聚簇索引,就应该可以使用它。
此外,如果我运行查询来创建索引(运行正常),则创建的查询不会列出添加的表。
我没有看到MS在Express版本中说这个功能不可用的地方。
有什么想法吗?
更多数据:
这是创建表格的脚本:
CREATE UNIQUE INDEX IX_SocialTypes_Cover ON ClientSocialTypes(ClientID, SocialTypeID, [Source]) INCLUDE (URLID)
这是表格脚本(索引缺失):
CREATE TABLE [dbo].[ClientSocialTypes](
[SocialTypeID] [int] IDENTITY(1,1) NOT NULL,
[ClientID] [int] NOT NULL,
[SocialTypeClassID] [tinyint] NOT NULL,
[Source] [nvarchar](50) NOT NULL,
[TagCount] [int] NOT NULL,
[URLID] [int] NULL,
CONSTRAINT [PK_ClientSources] PRIMARY KEY CLUSTERED
(
[SocialTypeID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[ClientSocialTypes] WITH CHECK ADD CONSTRAINT [FK_ClientSocialTypes_Clients] FOREIGN KEY([ClientID])
REFERENCES [dbo].[Clients] ([ClientID])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[ClientSocialTypes] CHECK CONSTRAINT [FK_ClientSocialTypes_Clients]
GO
ALTER TABLE [dbo].[ClientSocialTypes] WITH CHECK ADD CONSTRAINT [FK_ClientSocialTypes_SocialTypeClasses] FOREIGN KEY([SocialTypeClassID])
REFERENCES [dbo].[SocialTypeClasses] ([SocialTypeClassID])
GO
ALTER TABLE [dbo].[ClientSocialTypes] CHECK CONSTRAINT [FK_ClientSocialTypes_SocialTypeClasses]
GO
ALTER TABLE [dbo].[ClientSocialTypes] ADD CONSTRAINT [DF_ClientSocialTypes_SocialTypeClassID] DEFAULT ((1)) FOR [SocialTypeClassID]
GO
ALTER TABLE [dbo].[ClientSocialTypes] ADD CONSTRAINT [DF_ClientSocialTypes_TagCount] DEFAULT ((0)) FOR [TagCount]
GO
ALTER TABLE [dbo].[ClientSocialTypes] ADD CONSTRAINT [DF_ClientSocialTypes_HasTrackedURL] DEFAULT ((0)) FOR [URLID]
GO
答案 0 :(得分:9)
有两个不同的索引对话框。一个古老的可怕的可怕的,一个新的(只是刚发现它),实际上让你改变这些东西。
OLD HORRIBLE ONE
这不允许您更改包含的列。
NEW NICE ONE
Indexes
文件夹Indexes
New Index
文件夹
Properties
以编辑现有索引这个更新的对话框可以让你做更多的事情,我对微软保持原有状态以及我花了多长时间发现它感到很失望。
答案 1 :(得分:7)
事实证明,这在SQL Server的完整版本中也是灰色的。在SSMS中,使用对象资源管理器(而不是Designer)导航到{database_name}>表> {table_name}>用于管理包含。
的索引的索引答案 2 :(得分:1)
索引实际上可能是唯一约束(使用CREATE / ALTER TABLE),而不是使用CREATE INDEX创建的索引。唯一约束不允许INCLUDE。
这很令人困惑......为索引/键输入或表生成一个脚本,你就可以确认了。
编辑:
单独创建索引时,必须刷新对象资源管理器
您是否在不同的架构中有2个SocialType表? (例如dbo.SocialType
和[domain\myuser].SocialType
)。如果您未在DDL语句中指定架构,则会发生这种情况。