我尝试使用以下Sql查询将存储过程结果移动到表
中
SELECT *
INTO #tmpTable
FROM OPENQUERY(WIN2K8\SQL2K12, 'EXEC vcs_gauge @gauge_name=vs1_bag,@first_rec_time=2014-09-01 09:00:00,@last_rec_time=2014-09-01 10:00:00')

当我执行查询时,抛出以下错误。
' \'
附近的语法不正确
我不想添加链接服务器。如何解决此问题?
EDIT1
当我执行[win2k8 \ sql2k12]时,首先执行以下命令
EXEC sp_serveroption' YourServer','数据访问',TRUE
收到新消息
OLE DB提供程序" SQLNCLI11"对于链接服务器" WIN2K8 \ SQL2K12"返回消息"延期准备无法完成。"。 Msg 8180,Level 16,State 1,Line 1 声明无法准备。 Msg 102,Level 15,State 1,Line 1 ' - '附近的语法不正确。
答案 0 :(得分:0)
您需要将DATETIME值括在单引号中。由于你的查询本身就是一个字符串,所以这些单引号需要加倍/转义如下(你应该把第一个参数的值放在转义单引号中,因为它显然是一个字符串)
您还应该使用[DatabaseName].[SchemaName].
完全限定存储过程名称。
由于vcs_gauge
proc使用动态SQL,因此需要指定WITH RESULT SETS
子句。有关此子句的更多信息,请参阅EXECUTE的MSDN页面。
SELECT *
INTO #tmpTable
FROM OPENQUERY([WIN2K8\SQL2K12],
N'EXEC [DatabaseName].[SchemaName].vcs_gauge
@gauge_name = ''vs1_bag'',
@first_rec_time = ''2014-09-01 09:00:00'',
@last_rec_time = ''2014-09-01 10:00:00''
WITH RESULT SETS ( { column_specification} );
');