insert into B.B_DataName..B_Table select * from openrowset('SQLOLEDB' ,'A';'用户名';'密码' ,A_DataName.dbo.A_Table) -------------------------------------------------------------------------- 我按您的写法写了一下select部分,可是总是提示我“SQL Server 不存在或拒绝访问。”怎么回事?
示例 下面的示例访问来自某个表的数据,该表在 SQL Server 的另一个实例中。SELECT * FROM OPENDATASOURCE( 'SQLOLEDB', 'Data Source=ServerName;User ID=MyUID;Password=MyPass' ).Northwind.dbo.Categories
insert B_DataName..B_Table select * from OPENDATASOURCE( 'SQLOLEDB', --这项固定 'Data Source=219.216.245.123; --这项用ip或服务器名服务器A User ID=develop; --用户名 Password=develop' ).A_DataName.dbo.A_Table这个语句需要在服务器B上运行,要在服务器A上运行换一下位置就行了
insert into B.B_DataName..B_Table select * from openrowset('SQLOLEDB' ,'A';'用户名';'密码' ,A_DataName.dbo.A_Table) ----------------------------------------------------------------------------------- 这种方法可以,但是反向时提示“SQL Server 不存在或拒绝访问。”反向时是通过我在企业管理器中注册的远程服务器,是不是两边的服务器配置上有区别。还有我自己机器SQL服务器的名字在企业管理器中叫(local)而在查询分析器中叫'work'我的机器名。两种名字都用过了还是提示“SQL Server 不存在或拒绝访问。” 远程的服务器SQL Server已经打了补丁,我这边的没打补丁跟着有关系吗?
insert B_DataName..B_Table select * from OPENDATASOURCE( 'SQLOLEDB', --这项固定 'Data Source=219.216.245.123; --这项用ip或服务器名服务器A User ID=develop; --用户名 Password=develop' ).A_DataName.dbo.A_Table这个语句需要在服务器B上运行,要在服务器A上运行换一下位置就行了------------------------------------------------------------------------------------ 这种方式还是不能实现。两边都不行。 SELECT * FROM OPENDATASOURCE( 'SQLOLEDB', 'Data Source=A;User ID=sa;Password=sa' ).A_DataName.dbo.A_Table 这样写应该没事吧,可是总是提示“SQL Server 不存在或拒绝访问。” 在另一边提示: "OLE DB 提供程序 'SQLOLEDB' 不包含表 '"B_DataName"."dbo"."B_Table"'。该表可能不存在,或当前用户没有使用该表的权限。"
select *
from openrowset('SQLOLEDB'
,'A';'用户名';'密码'
,A_DataName.dbo.A_Table)
--------------------------------------------------------------------------------
有几处不太明白,请详细说明。
'SQLOLEDB'在SQL数据库中不用变是吗?
'Data Source=YICOL'这里指的是什么值?
'.LH.dbo.a_Table'中的LH是什么?实例名吗?
select *
from openrowset('SQLOLEDB'
,'A';'用户名';'密码'
,A_DataName.dbo.A_Table)
--------------------------------------------------------------------------
我按您的写法写了一下select部分,可是总是提示我“SQL Server 不存在或拒绝访问。”怎么回事?
对SQL Server2000 来说不用改YICOL = SQL服务器A(服务器名称)LH = A_DataName(数据库名称)
下面的示例访问来自某个表的数据,该表在 SQL Server 的另一个实例中。SELECT *
FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=ServerName;User ID=MyUID;Password=MyPass'
).Northwind.dbo.Categories
B_DataName..B_Table
select *
from
OPENDATASOURCE(
'SQLOLEDB', --这项固定
'Data Source=219.216.245.123; --这项用ip或服务器名服务器A
User ID=develop; --用户名
Password=develop' ).A_DataName.dbo.A_Table这个语句需要在服务器B上运行,要在服务器A上运行换一下位置就行了
select *
from openrowset('SQLOLEDB'
,'A';'用户名';'密码'
,A_DataName.dbo.A_Table)
-----------------------------------------------------------------------------------
这种方法可以,但是反向时提示“SQL Server 不存在或拒绝访问。”反向时是通过我在企业管理器中注册的远程服务器,是不是两边的服务器配置上有区别。还有我自己机器SQL服务器的名字在企业管理器中叫(local)而在查询分析器中叫'work'我的机器名。两种名字都用过了还是提示“SQL Server 不存在或拒绝访问。”
远程的服务器SQL Server已经打了补丁,我这边的没打补丁跟着有关系吗?
B_DataName..B_Table
select *
from
OPENDATASOURCE(
'SQLOLEDB', --这项固定
'Data Source=219.216.245.123; --这项用ip或服务器名服务器A
User ID=develop; --用户名
Password=develop' ).A_DataName.dbo.A_Table这个语句需要在服务器B上运行,要在服务器A上运行换一下位置就行了------------------------------------------------------------------------------------
这种方式还是不能实现。两边都不行。
SELECT *
FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=A;User ID=sa;Password=sa'
).A_DataName.dbo.A_Table
这样写应该没事吧,可是总是提示“SQL Server 不存在或拒绝访问。”
在另一边提示:
"OLE DB 提供程序 'SQLOLEDB' 不包含表 '"B_DataName"."dbo"."B_Table"'。该表可能不存在,或当前用户没有使用该表的权限。"