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,未发现有修改上述服务的参数,无解;
自己研究了几天一直没能找到方式解决。恳请指点。
跨库这种最好在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