Jude” 2022-12-01 17:34 采纳率: 0%
浏览 28

SQL Server for Liunx跨库查询

Linux安装SQL Server 2017,需要跨库查询,语句如下:

SELECT
    *
FROM
    OPENDATASOURCE (
        'SQLOLEDB',
        'DRIVER={SQL Server};SERVER=*.*.*.*;UID=sa;PWD=***' ).Visitor.dbo.TABLE

报错:

[Err] 42000 - [SQL Server]Cannot create an instance of OLE DB provider "MSDASC" for linked server "(null)".

百度得知:

需要在Sql Server Configuration Manager中将SQL Server(MSSQLSERVER)和SQL Full-Filter Deamon Launcher(MSSQLSERVER)两个服务的登录身份改为LocalSystem

但SSCM仅可在WIN系统下使用,Linux系统如何修改上述SQL Server(MSSQLSERVER)和SQL Full-Filter Deamon Launcher(MSSQLSERVER)两个服务的登录身份,一直无解。

尝试使用SSCM关联SQL Server for Linux,无解;
尝试在Linux上使用mssql-conf,未发现有修改上述服务的参数,无解;

自己研究了几天一直没能找到方式解决。恳请指点。

  • 写回答

1条回答 默认 最新

  • bluetata 云计算领域优质创作者 2022-12-02 16:42
    关注

    跨库这种最好在SQL SERVER里面创建linkedserver,这样可以使用跨库查询语法,我以前是这么干的,这种方式不仅可以跨库,还可以跨不同的数据库比如link mysql或者oracle,

    如果你在linux sqlserver里面已经创建了 linked server,之后就可以执行跨库查询语句

    EXEC master.dbo.sp_addlinkedserver
         @server = N'serverB', -- destination server Name 
         @srvproduct = N'',
         @provider = N'SQLNCLI',
         @datasrc = N'xx.xx.xx.xx', -- IP address of the destination server 
         @catalog = N'master'; -- db Name 
    GO
    EXEC master.dbo.sp_addlinkedsrvlogin
         @rmtsrvname = N'serverB',-- destination server Name 
         @useself = N'False',
         @locallogin = NULL,
         @rmtuser = N'sa', -- remote login name 
         @rmtpassword = '#######'; -- remote login password 
    GO
    
    评论

报告相同问题?

问题事件

  • 修改了问题 12月1日
  • 修改了问题 12月1日
  • 修改了问题 12月1日
  • 创建了问题 12月1日

悬赏问题

  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?
  • ¥15 关于#vue.js#的问题:修改用户信息功能图片无法回显,数据库中只存了一张图片(相关搜索:字符串)
  • ¥15 texstudio的问题,
  • ¥15 spaceclaim模型变灰色
  • ¥15 求一份华为esight平台V300R009C00SPC200这个型号的api接口文档
  • ¥15 就很莫名其妙,本来正常的Excel,突然变成了这种一格一页
  • ¥15 字符串比较代码的漏洞
  • ¥15 欧拉系统opt目录空间使用100%
  • ¥15 ul做导航栏格式不对怎么改?