是否可以使用表类型创建常规sql server表?

是否可以使用表类型创建常规sql server表?,sql,sql-server,sql-server-2008-r2,Sql,Sql Server,Sql Server 2008 R2,使用2008 R2,我创建了一个用户定义的表类型,如下所示 IF TYPE_ID('ttypRPStats') IS NOT NULL DROP TYPE dbo.ttypRPStats CREATE TYPE dbo.ttypRPStats AS TABLE ( RowNum INT NOT NULL IDENTITY (1,1) PRIMARY KEY CLUSTERED , RP_Name VAR

使用2008 R2,我创建了一个用户定义的表类型,如下所示

IF TYPE_ID('ttypRPStats') IS NOT NULL  
   DROP TYPE dbo.ttypRPStats  

CREATE TYPE dbo.ttypRPStats AS TABLE 
(
     RowNum                INT NOT NULL IDENTITY (1,1) PRIMARY KEY CLUSTERED 
   , RP_Name               VARCHAR(100) 
   , RPQualified_Name      VARCHAR(200) 
   , RP_Type               VARCHAR(100) 
   , RPCreatedDate         DATETIME      
   , RPLast_ModifiedDate   DATETIME     
   , RPActive              BIT NOT NULL DEFAULT 0 
)
GO
表变量的声明和使用工作正常:

DECLARE @RPStats dbo.ttypRPStats
INSERT INTO @RPStats 
(
    RP_Name            
  , RPQualified_Name   
  , RP_Type            
  , RPCreatedDate      
  , RPLast_ModifiedDate
  , RPActive            
)
VALUES
(
     'Name'         -- RP_Name            
   , 'Longer.Name'  -- RPQualified_Name   
   , 'TheirType'    -- RP_Type            
   , '2004/07/04'   -- RPCreatedDate      
   , '2013/05/01'   -- RPLast_ModifiedDate
   , 1              -- RPActive            
)
select * from @RPStats
但我希望能够使用表类型创建一个“真实”表。我已经阅读并重新阅读了CREATETABLE命令定义,但没有检测到这样做的方法;并且已经进行了大量的研究,但是还没有发现有效的语法。例如,以下构造不起作用:

CREATE TABLE RPStats AS ttypRPStats
CREATE TABLE RPStats (ttypRPStats)
是否有使用表类型创建表的有效语法

我知道我可以先将它全部发送到一个表变量,然后选择。。。进入“真正的”表格, 但这将是不可取的最后选择


感谢您的时间。

我不知道有什么方法可以直接执行此操作,但考虑到您的“最后手段”想法,您是否考虑过这样做:1)从类型创建表变量,2)尚未加载任何数据,3)从@TableVariable选择*到reatable,4)将数据加载到reatable?我没有尝试过,但怀疑即使是空表变量也会提供一个结果集结构,SELECT…INTO构造将使用该结构创建一个空表。如果数据只加载一次,这是否可以接受?如果是这样的话,我可以把它作为一个答案发布(当然,假设它有效;-)我测试过,它复制了身份,但没有默认或索引/PK。所以并不理想。我猜可以创建一个proc来读取类型的结构并从中创建一个表。我会看看我是否能拼凑一些东西。事实上,这是可能的,但并不简单,所以我需要一两天的时间,因为我现在没有时间完成它。如果您很快需要它,您可以运行SQL Profiler,然后在SSMS中,将表类型脚本化为CREATE,以查看它正在运行什么样的SQL,然后进行模拟。@srutzky——在处理任何数据之前,先创建不动产表的好主意。这让我得到了我想要的90%…谢谢你的帮助。也许我可以利用类型定义并使用dSQL创建表。我下一步就试试,没问题。是的,我已经开始编写动态SQL来获取基于类型定义的CREATE语句,但这是我说的有点棘手的部分,特别是如果您想要支持所有各种数据类型,包括用户定义的类型。然后就有了约束(Check/Unique/PK/Default),每个约束都有自己的定义;-)。如果我今天晚些时候有时间,我会努力完成它并把它作为答案发布。