2013-08-01 95 views
8

这些StackOverflow的问题hereherehere都说着同样的事情,但我不能让它在运行SSMS或SQLFiddle插入多行到临时表中的SQL Server 2012

CREATE TABLE #Names 
    ( 
    Name1 VARCHAR(100), 
    Name2 VARCHAR(100) 
) 

INSERT INTO #Names 
    (Name1, Name2) 
VALUES 
    ('Matt', 'Matthew'), 
    ('Matt', 'Marshal'), 
    ('Matt', 'Mattison') 

当我执行这是SSMS,插入失败,并在第一行下面的消息VALUES

后消息102,级别15,状态1,行10
附近有语法错误“”。

Fiddle运行没有#标志,并在表名是#Names,但我得到了下面的消息时,我尽量选择该模式成功执行*从表

无效对象名'#NAMES'.: SELECT * FROM #NAMES

SQL Server 2012是否支持多个插入?

UPDATE 对不起,你好。没有意识到SQL新手是SSMS 2012将限制为我的

SELECT @@VERSION 
--Returns: Microsoft SQL Server 2005 - 9.00.5057.00 (X64) 
--Mar 25 2011 13:33:31 
--Copyright (c) 1988-2005 Microsoft Corporation 
--Standard Edition (64-bit) on Windows NT 5.2 (Build 3790: Service Pack 2) 
+2

是的,SQL Server ** 2012 **支持多个插入 - 让我怀疑你是否有Mgmt Studio 2012,但你真的连接到** 2005 **实例 - 你从SELECT @ @ VERSION' ?? –

+0

就是这样。我已连接到SQL Server 2005 – KyleMit

回答

6

是,SQL服务器支持多种插件 - 该功能是在SQL Server 2008 介绍

这让我怀疑你是否有管理工作室2012年,但你真的连接到SQL Server 2005 例如 ...

什么SQL服务器引擎的版本你从SELECT @@VERSION得到??

6

是任何服务器在使用SQLFiddle,请确保分离器被设置为GO。此外,模式构建脚本在与运行脚本不同的连接中执行,因此在其中创建的临时表在另一个中不可见。这拨弄表明,你的代码是有效的,在SQL 2012工作:

SQL Fiddle

MS SQL Server 2012的架构设置

查询1

CREATE TABLE #Names 
    ( 
    Name1 VARCHAR(100), 
    Name2 VARCHAR(100) 
) 

INSERT INTO #Names 
    (Name1, Name2) 
VALUES 
    ('Matt', 'Matthew'), 
    ('Matt', 'Marshal'), 
    ('Matt', 'Mattison') 

SELECT * FROM #NAMES 

Results

| NAME1 | NAME2 | 
-------------------- 
| Matt | Matthew | 
| Matt | Marshal | 
| Matt | Mattison | 

这里一个SSMS 2012截图: enter image description here

+0

现在我想知道为什么它不适用于SSMS。我只是放在小提琴上,所以其他人可以更容易地复制这个问题。 – KyleMit

+0

查看我的更新。我能想到的唯一的事情就是你连接到了2005年的一个实例。 –