【发布时间】:2011-07-01 21:44:34
【问题描述】:
我正在尝试在 MS SQL Server 2005 中创建一个链接服务器,通过 ODBC 指向一个系统间缓存数据库。
以下是创建链接服务器的查询:
/****** Object: LinkedServer [CC7] Script Date: 02/22/2011 09:06:39 ******/
EXEC master.dbo.sp_addlinkedserver @server = N'CC7', @srvproduct=N'MSDASQL', @provider=N'MSDASQL', @datasrc=N'CC7', @provstr=N'DRIVER={Intersystems ODBC};Server=CCMSSRVR;Port=1972;Database=CCMS_STAT', @catalog=N'CCMS_STAT'
/* For security reasons the linked server remote logins password is changed with ######## */
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'CC7',@useself=N'False',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL
GO
EXEC master.dbo.sp_serveroption @server=N'CC7', @optname=N'collation compatible', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'CC7', @optname=N'data access', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'CC7', @optname=N'dist', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'CC7', @optname=N'pub', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'CC7', @optname=N'rpc', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'CC7', @optname=N'rpc out', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'CC7', @optname=N'sub', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'CC7', @optname=N'connect timeout', @optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'CC7', @optname=N'collation name', @optvalue=null
GO
EXEC master.dbo.sp_serveroption @server=N'CC7', @optname=N'lazy schema validation', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'CC7', @optname=N'query timeout', @optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'CC7', @optname=N'use remote collation', @optvalue=N'true'
我可以查询数据库,例如:
SELECT * FROM CC7..dbo.iAgentByApplicationStat
这很好用。
我遇到的问题是当我尝试通过 Microsoft SQL Server Management Studio 浏览目录时。每当我在链接服务器下展开“目录”时,都会出现以下错误:
TITLE: Microsoft SQL Server Management Studio
------------------------------
Failed to retrieve data for this request. (Microsoft.SqlServer.SmoEnum)
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&LinkId=20476
------------------------------
ADDITIONAL INFORMATION:
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)
------------------------------
The OLE DB provider "SQL Server" for linked server "(null)" reported an error. One or more arguments were reported invalid by the provider.
Cannot obtain the schema rowset "DBSCHEMA_CATALOGS" for OLE DB provider "SQL Server" for linked server "(null)". The provider supports the interface, but returns a failure code when it is used. (Microsoft SQL Server, Error: 7399)
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.3042&EvtSrc=MSSQLServer&EvtID=7399&LinkId=20476
------------------------------
BUTTONS:
OK
------------------------------
我已经在谷歌上搜索了好几天,但无济于事,因此非常感谢任何帮助,无论多么小。
【问题讨论】:
-
此问题适用于将初始缓存链接发布到 sql server 问题的人。你能解释一下你在 sql server 中是如何以及在哪里做这个链接的吗?我正在尝试做类似的事情,以便从 sql server 连接到缓存数据库,但我不知道我在 sql server 中的哪个位置执行此操作。有关如何完成此操作的任何细节都会有很大帮助。谢谢
-
我使用 SQL Server Management Studio。我知道有两种方法可以创建链接服务器。一种是使用查询(例如在我原来的问题中),另一种是使用用户界面。无论哪种情况,要使其正常工作,您必须首先安装 ODBC 驱动程序 (Intersystems ODBC)。要使用用户界面创建链接服务器连接到它,然后展开“服务器对象”,然后右键单击“链接服务器”,然后选择“新建链接服务器”。
-
我遇到了同样的问题,我无法浏览目录。虽然我无法让目录在屏幕上填充。通过执行以下操作,我无需登录到缓存并查看类定义即可获取列定义:SELECT * INTO tempdb.dbo.iAgentByApplicationStat FROM CC7..dbo.iAgentByApplicationStat where 1=0;然后我可以在 tempdb 中展开 iAgentByApplicationStat 以查看架构定义。
标签: sql linked-server intersystems-cache intersystems