如何解决根用户拒绝通过 SQL Server LinkedServer 在 MySQL 中的特定列上插入
我正在尝试将来自 SQL Server 的记录插入到作为链接服务器连接的 MySQL 实例中。
这基本上是我在做什么:
INSERT INTO OPENQUERY(LINKED_SERVER,'SELECT
id,claimed
FROM MySQLTable;'
)
SELECT
Id,'0'--claimed
FROM
MSSQLTable
我收到此错误:
链接服务器“LINKED_SERVER”的 OLE DB 提供程序“MSDASQL”无法插入表“[MSDASQL]”,因为列“已声明”。用户无权写入该列。
链接服务器当前配置为使用 MySQL 数据库上的 root 用户,我已经使用 GRANT 检查了权限,它们看起来很好:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '******' WITH GRANT OPTION
'claimed' 列是定义为“enum('1','0')”的枚举列。我有一种感觉是枚举方面把事情搞砸了,但我不知道为什么。
我使用类似的过程在其他地方插入数据,所以我知道它原则上应该可以工作,但我就是不明白为什么这个列会如此痛苦!
解决方法
这似乎是旧版本 MySQL 链接服务器的一个已知问题,并且 OPENQUERY 不是该工作的正确工具。相反,我重写了查询以使用 EXEC (INSERT...) AT [LINKED_SERVER],它的作用就像一个魅力。
此语法从 SQL Server 2005 开始可用。
你知道的越多...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。