需求:与ERP系统进行数据库的对接
解决方案:跨域建立视图,能得到实时刷新的ERP数据
步骤:
可以通过一个视图使用 OPENDATASOURCE (SQL Server 2000 以上版本支持) 来完成。
Create VIEW [dbo].[vTableName]
AS
Select *
FROM OPENDATASOURCE(
'SQLOLEDB',
'PWD=loginPassword;UID=otherServerUserID;Initial Catalog=databaseName;SERVER=dataServer'
).databaseName.dbo.[tableName]
GO
通过UID、PWD的身份访问另一个数据库服务器。
其中:
‘SQLOLEDB’ 不变
PWD : 是指另一个数据库服务器的登录密码
UID : 是指另一个数据库服务器的登录ID(用户名)
Initial Catalog : 另一个服务器的数据库名
SERVER : 另一个服务器的机器名<通过在另一个服务器中select @@SERVERNAME
查询>
第一次执行上述语句时报错:
SQL Server 阻止了对组件“Ad Hoc Distributed Queries”的 STATEMENT“OpenRowset/OpenDatasource”的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用“Ad Hoc Distributed Queries”。有关启用“Ad Hoc Distributed Queries”
解决:
1.开启Ad Hoc Distributed Queries组件,在两个服务器的数据库上执行如下语句:
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
2.如果关闭Ad Hoc Distributed Queries组件,在两个服务器的数据库上执行如下语句:
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure