sqlserver创建数据连接服务器到sqlite,执行查询报错
sqlite吧
全部回复
仅看楼主
level 1
1、SQL server版本:Microsoft SQL Server Developer (64-bit)2022
2、sqlite的数据库文件里创建一个视图bmd
3、-- 创建链接服务器
EXEC sp_addlinkedserver
@Server = N'SQLite_LinkedServer', -- 自定义链接服务器名称
@srvproduct = N'SQLite',
@provider = N'MSDASQL',
@datasrc = N'SQLite_ODBC'; -- 步骤2中创建的ODBC数据源名称
-- 配置链接服务器的登录映射
EXEC sp_addlinkedsrvlogin
@rmtsrvname = N'SQLite_LinkedServer',
@useself = N'False',
@locallogin = NULL,
@rmtuser = N'', -- SQLite无用户名则留空
@rmtpassword = N'123456'; -- SQLite有密码
4、测试链接:与连接服务器的测试连接成功
5、在SQLSERVER执行
SELECT * FROM OPENQUERY(SQLite_LinkedServer, 'SELECT * FROM bmd');
报错:链接服务器"SQLite_LinkedServer"的 OLE DB 访问接口 "MSDASQL" 返回了消息 "file is not a database (26)
请问哪位高手给指点下,非常感谢!
2026年01月19日 08点01分 1
level 1
补充下,ODBC配置如上。
2026年01月19日 08点01分 2
level 1
用SQLite Expert可以正常打开sqlite数据库文件和视图,*.db文件应该没有损坏。不知道是什么原因,请哪位老师给指导下。
2026年01月19日 08点01分 3
level 1
1、我重新SQLite Expert新建数据库aaa.db无密码,将原来有密码的数据库database.db 用SQLite Expert的Data Transfer Wizard 导出到数据库aaa.db,
2、将ODBC重新配置路径指向aaa.db,
3、然后删除原链接服务器,重建连接服务器。
-- 创建链接服务器
EXEC sp_addlinkedserver
@Server = N'SQLite_LinkedServer', -- 自定义链接服务器名称
@srvproduct = N'SQLite',
@provider = N'MSDASQL',
@datasrc = N'SQLite_ODBC'; -- 步骤2中创建的ODBC数据源名称
-- 配置链接服务器的登录映射
EXEC sp_addlinkedsrvlogin
@rmtsrvname = N'SQLite_LinkedServer',
@useself = N'False',
@locallogin = NULL,
@rmtuser = N'', -- SQLite无用户名则留空
@rmtpassword = N''; -- SQLite无密码
4、测试链接:与连接服务器的测试连接成功
5、在SQLSERVER执行
SELECT * FROM OPENQUERY(SQLite_LinkedServer, 'SELECT * FROM bmd');
可正常查询到数据。
请高手指点下是不是因为原数据库加密的原因,如何处理?
2026年01月20日 03点01分 4
1