一、 在项目中可能会遇到在一个项目中会出现多个数据库的操作。
二、 也可能会多个系统多个数据库之间进行交互操作显示。
三、 经常需要两个数据库关联查询或需要翻译显示内容时会很麻烦。
四、 今天就有个简单而实用的方法。一起来看看吧。
1.基本语法:
select 字段名 from OPENDATASOURCE ('SQLOLEDB', 'Data Source=[IP地址];USER ID = [用户名] ;Password=[数据库密码]' ).[数据库名].dbo.[表名] AS Rowset_1
2.如果有需要跟其它表进行关联查询的话,可以创建视图映射到本地数据库中如下:
create view V_SNF_CurrentStock as select cInvCode,iQuantity,cWhCode from OPENDATASOURCE ('SQLOLEDB', 'Data Source=192.168.1.8; USER ID = sa ;Password=123' ).SNFDB.dbo.CurrentStock AS Rowset_1
五、如果以上SQL语句执行不成功的话,报以下错误:
错误信息:SQL Server数据库远程操作中,在使用openrowset/opendatasource前首先要启用Ad Hoc Distributed Queries服务,因为这个服务不安全所以SqlServer默认是关闭的。
处理方法如下:
第一种:启用Ad Hoc Distributed Queries的方法 SQL Server 阻止了对组件'Ad Hoc Distributed Queries' 的STATEMENT'OpenRowset/OpenDatasource'的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用。
sp_configure 启用 'Ad Hoc Distributed Queries'。 启用Ad Hoc Distributed Queries的方法,执行下面的查询语句就可以了: exec sp_configure 'show advanced options',1 reconfigure exec sp_configure 'Ad Hoc Distributed Queries',1 reconfigure 使用完毕后,记得一定要关闭它,因为这是一个安全隐患,切记执行下面的SQL语句: exec sp_configure 'Ad Hoc Distributed Queries',0 reconfigure exec sp_configure 'show advanced options',0 reconfigure
如果都是内部管理类系统的话,可以打开后不进行关闭,这样用起来会更方便一些。
第二种:sql server 2008 64位连接sql 2000服务器的时候出现以下提示:
链接服务器"seeker2k4"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "Unspecified error"。 Msg 7311, Level 16, State 2, Line 1 无法获取链接服务器 "seeker2k4" 的 OLE DB 访问接口 "SQLNCLI10" 的架构行集 "DBSCHEMA_TABLES_INFO"。该访问接口支持该接口,但使用该接口时返回了失败代码。
此前SP4的补丁已安装。
方法:
在sql2000 中打开查询分析器:
执行SP4补丁包中SQL2KSP4installinstcat.sql
即可。
----------------------------------
二、.以上可以查询,但在PB中却不能执行,还需要执行如下命令
ALTER DATABASE sms --DataBase数据库名称
SET ANSI_NULL_DEFAULT ON,
ANSI_NULLS ON,
ANSI_PADDING ON,
ANSI_WARNINGS ON