SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。
有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。
1)启用外部数据访问
sp_configure 'show advanced options',1
reconfigure
sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
2)读取外部数据:
select * from OpenDataSource('SqlNCli',
'server=169.254.0.1;uid=sa;pwd=******'
).Rimifon.dbo.T_City
使用链接服务器的方法:
sp_addLinkedServer '169.254.0.1'
go
sp_addLinkedsrvLogin '169.254.0.1', false, null, 'sa', '******'
go
select * from OpenQuery([169.254.0.1],
'select * from Rimifon.dbo.T_Prov')
go
sp_DropServer [169.254.0.1],DropLogins
go
或者:
sp_addLinkedServer 'MyServer', '', 'SqlNCli', '', '',
'Server=169.254.0.1;Database=Rimifon'
go
sp_addLinkedsrvLogin 'MyServer', false, null, 'sa', '******'
go
select * from OpenQuery(MyServer, 'select * from T_Prov')
go
sp_DropServer MyServer,DropLogins
go
使用OpenRowSet的方式:
select * from openrowset('SqlNCli',
'Server=169.254.0.1;Database=Rimifon;UID=sa;PWD=******',
'select * from T_Prov')
从外部数据库复制表结构和数据过来:
select * into Test.dbo.T_Prov from OpenDataSource('SqlNCli',
'Server=169.254.0.1;UID=sa;PWD=******'
).Rimifon.dbo.T_Prov