【问题标题】:How to Drop Table [LINKED_SERVER_POSTGRESQL].[DATABASE_NAME].[PUBLIC].[TABLE_NAME]?如何删除表 [LINKED_SERVER_POSTGRESQL].[DATABASE_NAME].[PUBLIC].[TABLE_NAME]?
【发布时间】:2020-05-20 02:38:12
【问题描述】:

我在 SQL Server 上做了一个链接的 PostgreSQL 服务器,然后我想通过我在 SQL Server 上创建的存储过程删除 PostgreSQL 上的现有表。

当我执行以下 SQL 时:

SELECT *
FROM OPENQUERY (LinkedSrvrName, ' DROP TABLE Database. MyTab SELECT NULL ') 

出现类似此 OLE DB 提供程序的错误

链接服务器“POSTGRE_2_14”的“MSDASQL”返回消息“错误:在“SELECT”或附近出现语法错误;没有使用该句柄执行查询。MSG 7350,级别 16,状态 2,第 1 行来自链接服务器“POSTGRE_2_14”的 OLE DB 提供程序“MSDASQL”的列信息

谁能帮忙?

【问题讨论】:

  • 错误是什么?
  • @DaleK 我尝试在网上搜索,但我总是只得到这个 SELECT * FROM OPENQUERY (LinkedSrvrName, ' DROP TABLE Database. MyTab SELECT NULL ') 但在 SQL Server 上运行后,错误显示如下 链接服务器“POSTGRE_2_14”的 OLE DB 提供程序“MSDASQL”返回消息“错误:在“SELECT”处或附近出现语法错误;没有使用该句柄执行查询“.MSG 7350,级别 16,状态2、第1行无法从OLE DB提供程序“MSDASQL”获取链接服务器“POSTGRE_2_14”的列信息
  • 请检查我对您的问题所做的修改并确保它们是准确的。

标签: sql-server postgresql stored-procedures linked-server


【解决方案1】:

要在链接服务器上运行任意命令,请像这样为链接服务器启用 RPC OUT

EXEC master.dbo.sp_serveroption @server=N'LinkedSrvrName', @optname=N'rpc out', @optvalue=N'true'

然后运行

exec ('drop table whatever') at LinkedSrvrName

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2012-11-27
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    • 2019-08-31
    相关资源
    最近更新 更多