使用SQL Server 2012将多行插入临时表

Kyl*_*Mit 13 sql bulkinsert sql-server-2012

这里的 StackOverflow问题,这里这里都说同样的事情,但我不能让它在SSMS或SQLFiddle中运行

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

INSERT INTO #Names
  (Name1, Name2)
VALUES
  ('Matt', 'Matthew'),
  ('Matt', 'Marshal'),
  ('Matt', 'Mattison')
Run Code Online (Sandbox Code Playgroud)

当我执行这是SSMS时,插入失败,并在第一行后面显示以下消息 VALUES

消息102,级别15,状态1,行10
','附近的语法不正确.

这个Fiddle在没有#符号的情况下运行,并且当表名是时#Names,架构成功执行,但是当我尝试从表中选择*时,我收到以下消息

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

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


更新:显然在SSMS 2012上访问2005服务器....

SELECT @@VERSION --Returns: Microsoft SQL Server 2005
Run Code Online (Sandbox Code Playgroud)

Seb*_*ine 10

使用SQLFiddle时,请确保将分隔符设置为GO.架构构建脚本也在与运行脚本不同的连接中执行,因此在一个中创建的临时表在另一个中不可见.这个小提示表明您的代码在SQL 2012中有效且有效:

SQL小提琴

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
Run Code Online (Sandbox Code Playgroud)

结果:

| NAME1 |    NAME2 |
--------------------
|  Matt |  Matthew |
|  Matt |  Marshal |
|  Matt | Mattison |
Run Code Online (Sandbox Code Playgroud)

这里有一个SSMS 2012截图: 在此输入图像描述


mar*_*c_s 9

是的,SQL Server 2012支持多个插入 - 该功能是在SQL Server 2008中引入的.

这让我想知道你是否有Management Studio 2012,但你真的连接到SQL Server 2005实例......

什么版本的SQL服务器的引擎从你明白SELECT @@VERSION