我想将 SQLite 服务器与 SQL Server 2008 服务器“链接”。例如使用命令sp_addlinkedserver
。我该怎么做?
我搜索了很久,但还是没有找到解决这个问题的方法。我找到的最接近的尝试是:
http://www.sqlservercentral.com/Forums/Topic866972-149-1.aspx
--#################################################################################################
--Linked server Syntax for SQLite
--using OLE provider C:\Program Files\Cherry City Software\SQLiteProvider\SQLitePV.dll
--from http://cherrycitysoftware.com/ccs/Download/Download.aspx
--#################################################################################################
DECLARE @server sysname,
@srvproduct nvarchar(256),
@provider nvarchar(256),
@datasrc nvarchar(100),
@location nvarchar(100),
@provstr nvarchar(100),
@catalog sysname,
@sql varchar(1000)
--add an SQLite Database as a linked server
SET @server = N'mySQLite'
SET @srvproduct = N'SQLite Provider'
SET @provider = N'OleSQLite.SQLiteSource.1'
SET @datasrc = N'C:\Data\LowellSSC.db3'
set @provstr = ''
EXEC sp_addlinkedserver @server,@srvproduct,@provider,@datasrc,NULL,@provstr
exec sp_addlinkedsrvlogin @rmtsrvname='mySQLite',
@useself = N'false',
@locallogin = NULL,
@rmtuser = N'Admin',
@rmtpassword = NULL
--list all the tables and their names
EXEC sp_tables_ex 'mySQLite'
--above fails with this error:
--Msg 7302, Level 16, State 1, Procedure sp_tables_ex, Line 41
--Cannot create an instance of OLE DB provider "OleSQLite.SQLiteSource.1" for linked server "mySQLite".
GO
EXEC dbo.sp_DropServer 'mySQLite', 'DropLogins'
答案1
使用 ODBC 驱动程序可能会更好。Google 上有几个,其中一个是http://www.patthoyts.tk/sqlite3odbc.html。
理论上,如果您可以安装 ODBC 驱动程序,那么您就可以创建系统 DSN。如果您可以创建系统 DSN,那么您就可以将其添加为链接服务器。
当然,如果 OLEDB/ODBC 驱动程序是 32 位而 SQL Server 是 64 位,那么 OLEDB 和 ODBC 都容易失败;我不相信您可以在 64 位 SQL 中实例化 32 位 OLEDB/ODBC 驱动程序(我认为我们在 Excel 上也遇到过类似的问题)
高血压
J.
答案2
您的链接服务器提供商列表中是否有OleSQLite.SQLiteSource.1
?如果没有,您应该确保已在计算机上安装了这些驱动程序(并且至少重新启动 SQL Server 服务以确保它能够获取它们)。