2014-10-27 55 views
1

我想创建一个表,在内存中,但它一直给我这样的错误:错误创建内存表

消息10794,级别16,状态85,第11行的索引选项“PAD_INDEX '是 不支持内存优化表上的索引。

和另一个关于主键集群说同一件事。

这两件事情上面(PAD_INDEX和PK集群)都需要,除非有另一种方式得到它的工作...

[DEMO-Training1] 
GO 

/****** Object: Table [dbo].[wtAssetChildren] ******/ 
SET ANSI_NULLS ON GO 

SET QUOTED_IDENTIFIER ON GO 

CREATE TABLE [dbo].[wtAssetChildren] ( 
    [wtAssetChildrenID] [int] IDENTITY(1,1) NOT NULL, 
    [wtGUID] [uniqueidentifier] NOT NULL, 
    [CallingAssetID] [int] NOT NULL, 
    [AssetID] [int] NOT NULL, 
    [Processed] [bit] NOT NULL, 
    CONSTRAINT [PK_wtAssetChildren] PRIMARY KEY CLUSTERED ([wtAssetChildrenID] 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].[wtAssetChildren] 
ADD CONSTRAINT [DF_wtAssetChildren_Processed] DEFAULT ((0)) FOR [Processed] GO 
+0

请张贴您的代码,或是它们的简化版本。 – 2014-10-27 01:18:03

回答

0

在内存OLTP表具有相对于一堆限制MS SQL通常附带的其余部分。查看http://msdn.microsoft.com/en-us/library/dn246937.aspx获取完整列表。例如,不支持集群PK。您必须改用非聚集主键索引。

+0

谢谢你,但我将如何去改变这一点?我只是一个初学SQL Server的人......你能举个例子吗? – Tyler 2014-10-27 01:46:44

+0

坦率地说,如果您是SQL Server的新手,那么我不建议尝试在SQL Server中实现任何类型的内存表。只需使用传统表格(在这种情况下,您将不会受到使用内存表格的限制)。您可以在不使用内存表的情况下使用SQL 2014。 – 2014-10-28 15:24:48

0

下面是如何在内存优化的SQL Server 2014中创建此表的示例。请注意,仅仅因为您可以,并不意味着您应该。你提到你是初学者,而优化内存的表更多是高级选项。

CREATE DATABASE MemoryOptimizedTest; 
GO 

ALTER DATABASE MemoryOptimizedTest 
    ADD FILEGROUP MemoryOptimizedTest_MemoryOptimized 
    CONTAINS MEMORY_OPTIMIZED_DATA; 
GO 

ALTER DATABASE MemoryOptimizedTest 
    ADD FILE (
      NAME = 'MemoryOptimizedTest__MemoryOptimized1' 
     , FILENAME = 'D:\SqlDataFiles\MemoryOptimizedTest__MemoryOptimized1') 
    TO FILEGROUP MemoryOptimizedTest_MemoryOptimized; 
GO 

ALTER DATABASE MemoryOptimizedTest 
    SET MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT=ON; 
GO 

USE MemoryOptimizedTest; 
GO 

CREATE TABLE [dbo].[wtAssetChildren](
     [wtAssetChildrenID] [int] IDENTITY(1,1) NOT NULL 
    , [wtGUID] [uniqueidentifier] NOT NULL 
    , [CallingAssetID] [int] NOT NULL 
    , [AssetID] [int] NOT NULL 
    , [Processed] [bit] NOT NULL 
     CONSTRAINT [DF_wtAssetChildren_Processed] DEFAULT ((0)) 
    , CONSTRAINT [PK_wtAssetChildren] PRIMARY KEY NONCLUSTERED([wtAssetChildrenID] ASC) 
    ) 
WITH (MEMORY_OPTIMIZED=ON, DURABILITY=SCHEMA_AND_DATA); 
+0

谢谢你这么多,幸运的是我和更多有经验的SQL书呆子一起工作,他们正在帮我处理我不知道的小事情。然而,我正在为他们测试SQL 2014的内存,所以他们不太了解这个主题...再次感谢您的帮助:非常感谢 – Tyler 2014-10-27 04:21:57

+0

@Tyler,我添加了所需的'CREATE DATABASE'和'ALTER DATABASE'陈述我的答案,以帮助您开始。 – 2014-10-27 11:02:53

+0

Thankyou的帮助:D ...我已经设置了这个,并得到了其他人之一来测试我们的软件,他得到以下错误;内存优化表不支持分布式查询和多个活动结果集(MARS)。 – Tyler 2014-10-27 23:26:03