【问题标题】:DBLink from SQL Server to postgresql: get sequence nextval从 SQL Server 到 postgresql 的 DBLink:获取序列 nextval
【发布时间】:2012-01-25 17:47:25
【问题描述】:

我有一个需要连接到 POSTGRESQL 9.0 服务器的 SQL Server 2008。

我需要的任务之一是通过 POSTGRESQL 获取序列的下一个值

示例 1:

execute ('select nextval( ''cadastro.pessoa_seq'' )' ) at POSTGRESQL ;

错误:

消息 7215,级别 17,状态 1,第 1 行无法执行语句 远程服务器“POSTGRESQL”。*

示例 2:

select * from openquery( POSTGRESQL ,'select nextval( ''cadastro.pessoa_seq'' )')

错误:

消息 7399,级别 16,状态 1,第 1 行 OLE DB 提供程序“MSDASQL”用于 链接服务器“POSTGRESQL”报告错误。提供者报告了一个 意外的灾难性故障。消息 7350,第 16 层,状态 2,第 1 行 无法从 OLE DB 提供程序“MSDASQL”获取列信息 链接服务器“POSTGRESQL”。*

这些选项都不起作用!

有什么好的选择吗?

提前谢谢你

【问题讨论】:

  • “无效”到底是什么意思?你有错误吗?如果是,来自哪个 DBMS?
  • 我对帖子进行了更新。我在 SQLSERVER 中得到错误。 TIA
  • 您能否将该连接用于其他查询?只是您遇到问题的序列吗?
  • 是的,我可以执行“Select * From [...]”!我在执行远程功能、序列时遇到问题...!

标签: sql-server postgresql rpc dblink


【解决方案1】:

处理 ODBC 源和 postgres 我必须这样做:

nextval(''cadastro.pessoa_seq''::regclass) for it to work 

【讨论】:

    【解决方案2】:

    也许您的 Postgresql 连接是只读的,您是否尝试过执行更新/插入请求?

    nextval 更新序列,试试:

    currval(''cadastro.pessoa_seq''::regclass)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-22
      • 2011-01-12
      • 2019-07-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多