我在查询分析器里执行了下面的代码:
EXEC sp_addlinkedserver
@server = [172.16.80.13],
@srvproduct='',
@provider = 'SQLOLEDB.1', --'MSDASQL',
@datasrc =NULL,
@location=NULL,
@provstr ='DRIVER={SQL Server};SERVER=Serv;UID=sa;PWD='
GO
我是想用SQL语句直接对远程数据库表进行操作:
例如:
select * from [172.16.80.13].Serv.dbo.tablename
我执行之后老是提示我sa登录错误,我是以sa登录,密码为空的.
请高手指点.......
如果要在VB程序中实现应该怎么调用这个存储过程?
EXEC sp_addlinkedserver
@server = [172.16.80.13],
@srvproduct='',
@provider = 'SQLOLEDB.1', --'MSDASQL',
@datasrc =NULL,
@location=NULL,
@provstr ='DRIVER={SQL Server};SERVER=Serv;UID=sa;PWD='
GO
我是想用SQL语句直接对远程数据库表进行操作:
例如:
select * from [172.16.80.13].Serv.dbo.tablename
我执行之后老是提示我sa登录错误,我是以sa登录,密码为空的.
请高手指点.......
如果要在VB程序中实现应该怎么调用这个存储过程?
--如果经常访问或数据量大,建议用链接服务器--创建链接服务器
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
--exec sp_serveroption 'srv_lnk','rpc out','true' 这个允许调用链接服务器上的存储过程
go--查询示例
select * from srv_lnk.数据库名.dbo.表名--导入示例
select * into 表 from srv_lnk.数据库名.dbo.表名go
--以后不再使用时删除链接服务器
exec sp_dropserver 'srv_lnk','droplogins'--如果只是临时访问,可以直接用openrowset
--查询示例
select * from openrowset('SQLOLEDB'
,'sql服务器名';'用户名';'密码'
,数据库名.dbo.表名)--导入示例
select * into 表 from openrowset('SQLOLEDB'
,'sql服务器名';'用户名';'密码'
,数据库名.dbo.表名)
if exists(select 1 from master.dbo.sysservers where srvname = 'server1')
begin
exec sp_droplinkedsrvlogin 'server1','sa'
exec sp_dropserver 'server1'
end
EXEC sp_addlinkedserver 'server1','','MSDASQL',NULL,NULL,@connstrto21
goselect top 1 * from server1.database1.dbo.table1
--退出时释放你的连接
if exists(select 1 from master.dbo.sysservers where srvname = 'server1')
begin
exec sp_droplinkedsrvlogin 'server1','sa'
exec sp_dropserver 'server1'
end
go
关于
sp_addlinkedserver 请查看SQL的相关帮助
示例
A. 使用用于 SQL Server 的 Microsoft OLE DB 提供程序
使用用于 SQL Server 的 OLE DB 创建链接服务器
下面的示例创建一台名为 SEATTLESales 的链接服务器,该服务器使用用于 SQL Server 的 Microsoft OLE DB 提供程序。USE master
GO
EXEC sp_addlinkedserver
'SEATTLESales',
N'SQL Server'
GO在 SQL Server 的实例上创建链接服务器
此示例在 SQL Server 的实例上创建一台名为 S1_instance1 的链接服务器,该服务器使用 SQL Server 的 Microsoft OLE DB 提供程序。EXEC sp_addlinkedserver @server='S1_instance1', @srvproduct='',
@provider='SQLOLEDB', @datasrc='S1\instance1'B. 使用用于 Jet 的 Microsoft OLE DB 提供程序
此示例创建一台名为 SEATTLE Mktg 的链接服务器。说明 本示例假设已经安装 Microsoft Access 和示例 Northwind 数据库,且 Northwind 数据库驻留在 C:\Msoffice\Access\Samples。
USE master
GO
-- To use named parameters:
EXEC sp_addlinkedserver
@server = 'SEATTLE Mktg',
@provider = 'Microsoft.Jet.OLEDB.4.0',
@srvproduct = 'OLE DB Provider for Jet',
@datasrc = 'C:\MSOffice\Access\Samples\Northwind.mdb'
GO
-- OR to use no named parameters:
USE master
GO
EXEC sp_addlinkedserver
'SEATTLE Mktg',
'OLE DB Provider for Jet',
'Microsoft.Jet.OLEDB.4.0',
'C:\MSOffice\Access\Samples\Northwind.mdb'
GOC. 使用用于 Oracle 的 Microsoft OLE DB 提供程序
此示例创建一台名为 LONDON Mktg 的链接服务器,该服务器使用用于 Oracle 的 Microsoft OLE DB 提供程序,并且假设此 Oracle 数据库的 SQL*Net 别名为 MyServer。USE master
GO
-- To use named parameters:
EXEC sp_addlinkedserver
@server = 'LONDON Mktg',
@srvproduct = 'Oracle',
@provider = 'MSDAORA',
@datasrc = 'MyServer'
GO
-- OR to use no named parameters:
USE master
GO
EXEC sp_addlinkedserver
'LONDON Mktg',
'Oracle',
'MSDAORA',
'MyServer'
GOD. 将 data_source 参数与用于 ODBC 的 Microsoft OLE DB 提供程序一起使用
此示例创建一台名为 SEATTLE Payroll 的链接服务器,该服务器使用用于 ODBC 的 Microsoft OLE DB 提供程序和 data_source 参数。说明 在执行 sp_addlinkedserver 之前,必须在服务器上将指定的 ODBC 数据源名称定义为系统 DSN。
USE master
GO
-- To use named parameters:
EXEC sp_addlinkedserver
@server = 'SEATTLE Payroll',
@provider = 'MSDASQL',
@datasrc = 'LocalServer'
GO
-- OR to use no named parameters:
USE master
GO
EXEC sp_addlinkedserver
'SEATTLE Payroll',
'',
'MSDASQL',
'LocalServer'
GOE. 将 provider_string 参数与用于 ODBC 的 Microsoft OLE DB 提供程序一起使用
此示例创建一台名为 LONDON Payroll 的链接服务器,该服务器使用用于 ODBC 的 Microsoft OLE DB 提供程序和 provider_string 参数。说明 有关 ODBC 连接字符串的更多信息,请参见 SQLDriverConnect 和如何分配句柄并与 SQL Server (ODBC) 连接。
USE master
GO
-- To use named parameters:
EXEC sp_addlinkedserver
@server = 'LONDON Payroll',
@provider = 'MSDASQL',
@provstr = 'DRIVER={SQL Server};SERVER=MyServer;UID=sa;PWD=;'
GO
-- OR to use no named parameters:
USE master
GO
EXEC sp_addlinkedserver
'LONDON Payroll',
'',
'MSDASQL',
NULL,
NULL,
'DRIVER={SQL Server};SERVER=MyServer;UID=sa;PWD=;'
GOF. 在 Excel 电子表格上使用用于 Jet 的 Microsoft OLE DB 提供程序
若要创建使用用于 Jet 的 Microsoft OLE DB 提供程序以访问 Excel 电子表格的链接服务器定义,请首先在 Excel 中创建一个命名的范围以指定要在 Excel 工作表中选择的行和列。然后,可将此范围的名称引用为分布式查询中的表名称。EXEC sp_addlinkedserver 'ExcelSource',
'Jet 4.0',
'Microsoft.Jet.OLEDB.4.0',
'c:\MyData\DistExcl.xls',
NULL,
'Excel 5.0'
GO为了访问 Excel 电子表格中的数据,请将某个范围内的单元与某个名称相关联。通过将范围的名称用作表名称,可以访问指定的已命名范围。下列查询利用前面设置的链接服务器,可访问称为 SalesData 的命名范围。SELECT *
FROM EXCEL...SalesData
GOG. 使用用于检索服务的 Microsoft OLE DB 提供程序
此示例创建一台链接服务器,并且使用 OPENQUERY 从为检索服务启用的链接服务器和文件系统中检索信息。EXEC sp_addlinkedserver FileSystem,
'Index Server',
'MSIDXS',
'Web'
GO
USE pubs
GO
IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'yEmployees')
DROP TABLE yEmployees
GO
CREATE TABLE yEmployees
(
id int NOT NULL,
lname varchar(30) NOT NULL,
fname varchar(30) NOT NULL,
salary money,
hiredate datetime
)
GO
INSERT yEmployees VALUES
(
10,
'Fuller',
'Andrew',
$60000,
'9/12/98'
)
GO
IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_NAME = 'DistribFiles')
DROP VIEW DistribFiles
GO
CREATE VIEW DistribFiles
AS
SELECT *
FROM OPENQUERY(FileSystem,
'SELECT Directory,
FileName,
DocAuthor,
Size,
Create,
Write
FROM SCOPE('' "c:\My Documents" '')
WHERE CONTAINS(''Distributed'') > 0
AND FileName LIKE ''%.doc%'' ')
WHERE DATEPART(yy, Write) = 1998
GO
SELECT *
FROM DistribFiles
GO
SELECT Directory,
FileName,
DocAuthor,
hiredate
FROM DistribFiles D, yEmployees E
WHERE D.DocAuthor = E.FName + ' ' + E.LName
GOH. 使用用于 Jet 的 Microsoft OLE DB 提供程序访问文本文件
此示例创建一台直接访问文本文件的链接服务器,而没有将这些文件链接为 Access .mdb 文件中的表。提供程序是 Microsoft.Jet.OLEDB.4.0,提供程序字符串为"Text"。数据源是包含文本文件的目录的完整路径名。schema.ini 文件(描述文本文件的结构)必须与此文本文件存在于相同的目录中。有关创建 schema.ini 文件的更多信息,请参见 Jet 数据库引擎文档。--Create a linked server
EXEC sp_addlinkedserver txtsrv, 'Jet 4.0',
'Microsoft.Jet.OLEDB.4.0',
'c:\data\distqry',
NULL,
'Text'
GO--Set up login mappings
EXEC sp_addlinkedsrvlogin txtsrv, FALSE, Admin, NULL
GO--List the tables in the linked server
EXEC sp_tables_ex txtsrv
GO--Query one of the tables: file1#txt
--using a 4-part name
SELECT *
FROM txtsrv...[file1#txt]I. 使用用于 DB2 的 Microsoft OLE DB 提供程序
下面的示例创建一台名为 DB2 的链接服务器,该服务器使用用于 DB2 的 Microsoft OLE DB 提供程序。EXEC sp_addlinkedserver
@server='DB2',
@srvproduct='Microsoft OLE DB Provider for DB2',
@catalog='DB2',
@provider='DB2OLEDB',
@provstr='Initial Catalog=PUBS;Data Source=DB2;HostCCSID=1252;Network Address=XYZ;Network Port=50000;Package Collection=admin;Default Schema=admin;'