【问题标题】:SQL Server error while trying to insert data to database on a linked server尝试将数据插入链接服务器上的数据库时出现 SQL Server 错误
【发布时间】:2012-02-23 14:10:21
【问题描述】:

我正在尝试将一些数据插入链接服务器上的数据库,但出现 #215 错误。

SQL:

INSERT INTO DBF...mone0012
   ('CODE', 'TIMES', 'BANK', 'INTCODE', 'AGENCY', 'DATE', 'DUE', 'VALUE', 
    'DISCOUNT', 'PAY', 'PDATE', 'OVER', 'ODATE', 'DOC', 'TYPE', 'EMITT', 'SIT', 
    'BUS', 'CLIENT', 'DEALER', 'LAST', 'DEVBACK', 'DESCONTADO', 'VENDOR', 'FRETE',
    'DATEB', 'TIPOC', 'OLDCLI', 'DESPESA', 'DESPDATE', 'DUPALOC', 'SACADO', 
    'CODSACADO', 'BXREAL', 'BXCONT', 'BXTERC', 'BXARBIT', 'DATAPAG', 'BANKANT', 
    'PROTESTO', 'ENDOSSO', 'SITENDOSSO', 'REEMBOLSO', 'CREDITO', 'ACERTO', 'DESPBANC', 
    'DESPCART', 'JUROS', 'DESPBANCP', 'DESPCARTP', 'JUROSP', 'LIQCNAB', 'NCOMIS', 
    'SEQRELATO', 'DEBINCOB', 'TXGER', 'TXVENDOR', 'COMPGER', 'COMPDEALER',  
    'COMPVENDOR', 'COMGER', 'COMDEALER', 'COMVENDOR', 'CODSEQ', 'COMPDEALE2', 
    'EMITCUSTOD', 'CONTRATO', 'SEND', 'BUSCDEB', 'SENDDATE', 'SENDTYPE', 'QUITEMIT', 
    'CONTRLOC', 'TXDEALER') 
VALUES 
   ('09431500A', 1, NULL, NULL, NULL, '2012-02-23 10:55:00.000', 
    '2012-02-23 10:55:00.000', 2500.50, 0, 2500.50, '2012-02-23 10:55:00.000', 0, 
    NULL, 'd', 0, NULL, 'D', '06', '6666', '666', NULL, 0, NULL, NULL, 0, NULL, NULL, 
    NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, 
    NULL, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL)

错误:

消息 215,第 16 级,状态 1,第 1 行
为不是函数的对象“DBF...mone0012”提供的参数。如果参数旨在作为表提示,则需要 WITH 关键字。

我该如何解决这个问题?

谢谢。

【问题讨论】:

  • 这里的“DBF”是什么? DBase 文件? Foxpro?
  • 我们不知道。按照this link第三次回复的步骤,我们发现文件是3 Foxbase/Foxpro/dBaseIII/IV/V no memo。但究竟是什么我们不知道......

标签: sql-server linked-server dbf


【解决方案1】:

也许这三个点是问题所在。我总是使用:

insert into [LINKED_SERVER].DB.SCHEMA.TABLE
select * from TABLE 

尝试更新您的信息

另外,我认为插入后的列名不需要单引号

【讨论】:

  • 我尝试在不指定列名的情况下插入并且工作正常。问题是列数很大,我只想插入一些值...
  • 我认为列数无关紧要。我认为是引号。你能测试一下吗?很高兴知道
  • 是的。有用。现在我有另一个问题。我有以 MS SQL 函数命名的列。如何解决这个问题?
  • 使用 [NAME](同样,不带引号)
  • 谢谢。现在才意识到。 MS SQL 用 [] 转义表和列,对吗?
【解决方案2】:

尝试将 [] 放在您的表名周围。我猜 '...' 可能会混淆它。

INSERT INTO [DBF...mone0012]
('CODE',        'TIMES',    'BANK', 'INTCODE',  'AGENCY',   'DATE',                     'DUE',                      'VALUE',    'DISCOUNT', 'PAY',      'PDATE',                    'OVER', 'ODATE',    'DOC',  'TYPE', 'EMITT',    'SIT',  'BUS',  'CLIENT',   'DEALER',   'LAST', 'DEVBACK',  'DESCONTADO',   'VENDOR',   'FRETE',    'DATEB',    'TIPOC',    'OLDCLI',   'DESPESA',  'DESPDATE', 'DUPALOC',  'SACADO',   'CODSACADO',    'BXREAL',   'BXCONT',   'BXTERC',   'BXARBIT',  'DATAPAG',  'BANKANT',  'PROTESTO', 'ENDOSSO',  'SITENDOSSO',   'REEMBOLSO',    'CREDITO',  'ACERTO',   'DESPBANC', 'DESPCART', 'JUROS',    'DESPBANCP',    'DESPCARTP',    'JUROSP',   'LIQCNAB',  'NCOMIS',   'SEQRELATO',    'DEBINCOB', 'TXGER',    'TXVENDOR', 'COMPGER',  'COMPDEALER',   'COMPVENDOR',   'COMGER',   'COMDEALER',    'COMVENDOR',    'CODSEQ',   'COMPDEALE2',   'EMITCUSTOD',   'CONTRATO', 'SEND', 'BUSCDEB',  'SENDDATE', 'SENDTYPE', 'QUITEMIT', 'CONTRLOC', 'TXDEALER') VALUES
('09431500A',   1,          NULL,   NULL,       NULL,       '2012-02-23 10:55:00.000',  '2012-02-23 10:55:00.000',  2500.50,    0,          2500.50,    '2012-02-23 10:55:00.000',  0,      NULL,       'd',    0,      NULL,       'D',    '06',   '6666',     '666',      NULL,   0,          NULL,           NULL,       0,          NULL,       NULL,       NULL,       0,          NULL,       NULL,       NULL,       NULL,           NULL,       NULL,       NULL,       NULL,       NULL,       NULL,       0,          NULL,       NULL,           0,              0,          0,          NULL,       NULL,       NULL,       NULL,           NULL,           NULL,       0,          0,          NULL,           0,          0,          0,          0,          0,              0,              0,          0,              0,              NULL,       NULL,           0,              NULL,       NULL,   NULL,       NULL,       NULL,       0,          NULL,       NULL)

【讨论】:

  • 没用。使用 [DBF...mone0012] 时返回以下错误:Msg 208, Level 16, State 1, Line 1 Invalid object name 'DBF...mone0012'. 而使用 [DBF]...[mone0012] 时返回之前相同的错误。
  • 好吧,不得不问,DBF...mone0012是表的实际名称吗?
  • DBF是链接服务器,mone0012是表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-21
相关资源
最近更新 更多